西門子s7-200系列plc有通信方式有三種:一種是點對點(ppi)方式,用于與該公司plc編程器或其它人機接口產品的通信,其通信協(xié)議是不公開的。另一種為dp方式,這種方式使得plc可以通過profibus-dp通信接口接入profibus現場總線網絡,從而擴大plc的使用范圍。最后一種方式是自由口通信(freeport)方式,由用戶定義通信協(xié)議,實現plc與外設的通信。以下采用自由口通信方式,實現pc與s7-200系列plc通信。
1. pc與西門子s7-200系列plc通信連接
pc為rs232c接口,s7-200系列自由口為rs485。因此pc的rs232接口必須先通過rs232/rs485轉換器,再與plc通信端口相連接,連接媒質可以是雙絞線或電纜線。西門子公司提供的pc/ppi電纜帶有rs232/rs485轉換器,可直接采用pc/ppi電纜,因此在不增加任何硬件的情況下,可以很方便地將plc和pc的連接,如圖1所示。也可實現多點連接。
圖1 pc與s7-200系列plc的連接
2. 西門子s7-200系列plc自由通信口初始化及通信指令
在該通信方式下,通信端口完全由用戶程序所控制,通信協(xié)議也由用戶設定。pc機與plc之間是主從關系,pc機始終處于主導地位。plc的通信編程首先是對串口初始化,對s7-200plc的初始化是通過對特殊標志位smb30(端口0)、smb130(端口1)寫入通信控制字,設置通信的波特率,奇偶校驗位、停止位和字符長度。顯然,這些設定必須與pc的設定相一致。smb30和smb130的各位及含義如下:
其中,校驗方式:00和11均為無校驗、01為偶校驗、10為奇校驗;字符長度:0為傳送字符有效數據是8位、1為有效數據是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為保留,缺省設置為ppi協(xié)議從站模式。
xmt及rcv命令分別用于plc向外界發(fā)送與接收數據。當plc處于run狀態(tài)下時,通信命令有效,當plc處于stop狀態(tài)時通信命令無效。
xmt命令將指定存儲區(qū)內的數據通過指定端口傳送出去,當存儲區(qū)內最后一個字節(jié)傳送完畢,plc將產生一個中斷,命令格式為 xmt table,port,其中port指定plc用于發(fā)送的通信端口,table為是數據存儲區(qū)地址,其第一個字節(jié)存放要傳送的字節(jié)數,即數據長度,最大為255。
rcv命令從指定的端口讀入數據存放在指定的數據存儲區(qū)內,當最后一個字節(jié)接收完畢,plc也將產生一個中斷,命令格式為rcv table,po rt,plc通過port端口接收數據,并將數據存放在tbl數據存儲區(qū)內,table的第一個字節(jié)為接收的字節(jié)數。
在自由口通信方式下,還可以通過字符中斷控制來接收數據,即plc每接收一個字節(jié)的數據都將產生一個中斷。因而,plc每接收一個字節(jié)的數據都可以在相應的中斷程序中對接收的數據進行處理。
3.通信程序流程圖及工作過程
在上述通信方式下,由于只用兩根線進行數據傳送,所以不能夠利用硬件握手信號作為檢測手段。因而在pc機與plc通信中發(fā)生誤碼時,將不能通過硬件判斷是否發(fā)生誤碼,或者當 pc與 plc工作速率不一樣時,就會發(fā)生沖突。這些通信錯誤將導致plc控制程序不能正常工作,所以必須使用軟件進行握手,以保證通信的可靠性。
由于通信是在pc機以及plc之間協(xié)調進行的,所以pc機以及plc中的通信程序也必須相互協(xié)調,即當一方發(fā)送數據時另一方必須處于接收數據的狀態(tài)。如圖2、圖3所示分別是pc、plc的通信程序流程。
圖2 pc機通信程序流程圖
圖3 s7-plc通信程序流程圖
通信程序的工作過程:pc每發(fā)送一個字節(jié)前首先發(fā)送握手信號,plc收到握手信號后將其傳送回pc,pc只有收到plc傳送回來的握手信號后才開始發(fā)送一個字節(jié)數據。plc收到這個字節(jié)數據以后也將其回傳給pc,pc將原數據與plc傳送回來的數據進行比較,若兩者不同,則說明通信中發(fā)生了誤碼,pc機重新發(fā)送該字節(jié)數據;若兩者相同,則說明plc收到的數據是正確的,pc機發(fā)送下一個握手信號,plc收到這個握手信號后將前一次收到的數據存入指定的存儲區(qū)。這個工作過程重復一直持續(xù)到所有的數據傳送完成。
采用軟件握手以后,不管pc與plc的速度相差多遠,發(fā)送方永遠也不會超前于接收方。軟件握手的缺點是大大降低了通信速度,因為傳送每一個字節(jié),在傳送線上都要來回傳送兩次,并且還要傳送握手信號。但是考慮到控制的可靠性以及控制的時間要求,犧牲一點速度是值得的,也是可行的。
plc方的通信程序只是plc整個控制程序中的一小部分,可將通信程序編制成plc的中斷程序,當plc接收到pc發(fā)送的數據以后,在中斷程序中對接收的數據進行處理。pc方的通信程序可以采用vb、vc等語言,也可直接采用西門子專用組態(tài)軟件,如step7、wincc。