
西門子S7-200系列PLC有通信方式有三種:一種是點對點(PPI)方式,用于與該公司PLC編程器或其它人機接口產(chǎn)品的通信,其通信協(xié)議是不公開的。另一種為DP方式,這種方式使得PLC可以通過Profibus-DP通信接口接入Profibus現(xiàn)場總線網(wǎng)絡(luò),從而擴大PLC的使用范圍。最后一種方式是自由口通信(Freeport)方式,由用戶定義通信協(xié)議,實現(xiàn)PLC與外設(shè)的通信。以下采用自由口通信方式,實現(xiàn)PC與S7-200系列PLC通信。
1. PC與西門子S7-200系列PLC通信連接
PC為RS232C接口,S7-200系列自由口為RS485。因此PC的RS232接口必須先通過RS232/RS485轉(zhuǎn)換器,再與PLC通信端口相連接,連接媒質(zhì)可以是雙絞線或電纜線。西門子公司提供的PC/PPI電纜帶有RS232/RS485轉(zhuǎn)換器,可直接采用PC/PPI電纜,因此在不增加任何硬件的情況下,可以很方便地將PLC和PC的連接,如圖1所示。也可實現(xiàn)多點連接。
2. 西門子S7-200系列PLC自由通信口初始化及通信指令
在該通信方式下,通信端口完全由用戶程序所控制,通信協(xié)議也由用戶設(shè)定。PC機與PLC之間是主從關(guān)系,PC機始終處于主導(dǎo)地位。PLC的通信編程首先是對串口初始化,對S7-200PLC的初始化是通過對特殊標志位SMB30(端口0)、SMB130(端口1)寫入通信控制字,設(shè)置通信的波特率,奇偶校驗位、停止位和字符長度。顯然,這些設(shè)定必須與PC的設(shè)定相一致。SMB30和SMB130的各位及含義如下:
其中,校驗方式:00和11均為無校驗、01為偶校驗、10為奇校驗;字符長度:0為傳送字符有效數(shù)據(jù)是8位、1為有效數(shù)據(jù)是7位;波特率:000為38400baud、001為19200baud、010為9600baud、011為4800baud、100為2400baud、101為1200baud、110為600baud、111為300baud;通信協(xié)議:00為PPI協(xié)議從站模式、01為自由口協(xié)議、10為PPI協(xié)議主站模式、11為保留,缺省設(shè)置為PPI協(xié)議從站模式。
XMT及RCV命令分別用于PLC向外界發(fā)送與接收數(shù)據(jù)。當(dāng)PLC處于RUN狀態(tài)下時,通信命令有效,當(dāng)PLC處于STOP狀態(tài)時通信命令無效。
XMT命令將指定存儲區(qū)內(nèi)的數(shù)據(jù)通過指定端口傳送出去,當(dāng)存儲區(qū)內(nèi)最后一個字節(jié)傳送完畢,PLC將產(chǎn)生一個中斷,命令格式為 XMT TABLE,PORT,其中PORT指定PLC用于發(fā)送的通信端口,TABLE為是數(shù)據(jù)存儲區(qū)地址,其第一個字節(jié)存放要傳送的字節(jié)數(shù),即數(shù)據(jù)長度,最大為255。
RCV命令從指定的端口讀入數(shù)據(jù)存放在指定的數(shù)據(jù)存儲區(qū)內(nèi),當(dāng)最后一個字節(jié)接收完畢,PLC也將產(chǎn)生一個中斷,命令格式為RCV TABLE,PO RT,PLC通過PORT端口接收數(shù)據(jù),并將數(shù)據(jù)存放在TBL數(shù)據(jù)存儲區(qū)內(nèi),TABLE的第一個字節(jié)為接收的字節(jié)數(shù)。
在自由口通信方式下,還可以通過字符中斷控制來接收數(shù)據(jù),即PLC每接收一個字節(jié)的數(shù)據(jù)都將產(chǎn)生一個中斷。因而,PLC每接收一個字節(jié)的數(shù)據(jù)都可以在相應(yīng)的中斷程序中對接收的數(shù)據(jù)進行處理。
3.通信程序流程圖及工作過程
在上述通信方式下,由于只用兩根線進行數(shù)據(jù)傳送,所以不能夠利用硬件握手信號作為檢測手段。因而在PC機與PLC通信中發(fā)生誤碼時,將不能通過硬件判斷是否發(fā)生誤碼,或者當(dāng) PC與 PLC工作速率不一樣時,就會發(fā)生沖突。這些通信錯誤將導(dǎo)致PLC控制程序不能正常工作,所以必須使用軟件進行握手,以保證通信的可靠性。
由于通信是在PC機以及PLC之間協(xié)調(diào)進行的,所以PC機以及PLC中的通信程序也必須相互協(xié)調(diào),即當(dāng)一方發(fā)送數(shù)據(jù)時另一方必須處于接收數(shù)據(jù)的狀態(tài)。如圖2、圖3所示分別是PC、PLC的通信程序流程。
通信程序的工作過程:
PC每發(fā)送一個字節(jié)前首先發(fā)送握手信號,PLC收到握手信號后將其傳送回PC,PC只有收到PLC傳送回來的握手信號后才開始發(fā)送一個字節(jié)數(shù)據(jù)。PLC收到這個字節(jié)數(shù)據(jù)以后也將其回傳給PC,PC將原數(shù)據(jù)與PLC傳送回來的數(shù)據(jù)進行比較,若兩者不同,則說明通信中發(fā)生了誤碼,PC機重新發(fā)送該字節(jié)數(shù)據(jù);若兩者相同,則說明PLC收到的數(shù)據(jù)是正確的,PC機發(fā)送下一個握手信號,PLC收到這個握手信號后將前一次收到的數(shù)據(jù)存入指定的存儲區(qū)。這個工作過程重復(fù)一直持續(xù)到所有的數(shù)據(jù)傳送完成。
采用軟件握手以后,不管PC與PLC的速度相差多遠,發(fā)送方永遠也不會超前于接收方。軟件握手的缺點是大大降低了通信速度,因為傳送每一個字節(jié),在傳送線上都要來回傳送兩次,并且還要傳送握手信號。但是考慮到控制的可靠性以及控制的時間要求,犧牲一點速度是值得的,也是可行的。
PLC方的通信程序只是PLC整個控制程序中的一小部分,可將通信程序編制成PLC的中斷程序,當(dāng)PLC接收到PC發(fā)送的數(shù)據(jù)以后,在中斷程序中對接收的數(shù)據(jù)進行處理。PC方的通信程序可以采用VB、VC等語言,也可直接采用西門子專用組態(tài)軟件,如STEP7、WinCC。
上一篇 :PLC與HMI通訊不上的原因分析
下一篇 :plc的通訊方式詳解