PLC以卓越的可靠性和方便的可編程性廣泛應用于工業控制領域。實現PC機與PLC通信的目的是為了向用戶提供諸如工藝流程圖顯示、動態數據畫面顯示、報表顯示、窗口技術等多種功能,為PLC提供良好的人機界面。本文詳細介紹了FX系列PLC的通信協議,并在Windows環境下,使用VB6.0開發通信程序,實現了PC機與FX系列PLC之間的串行通信。
2 PC機與PLC實現通信的條件
帶異步通信適配器的PC機與PLC只有滿足如下條件,才能互聯通信:
(1)帶有異步通信接口的PLC才能與帶異步通信適配器的PC機互聯。還要求雙方采用的總線標準一致,否則要通過“總線標準變換單元”變換之后才能互聯。
(2)雙方的初始化,使波特率、數據位數、停止位數、奇偶校驗都相同。
(3)要對PLC的通信協議分析清楚,嚴格地按照協議的規定及幀格式編寫PC機的通信程序。PLC中配有通信機制,一般不需用戶編程。
3 PC機及與FX系列PLC的串行通訊
3.1 硬件連接
PC機與FX系列PLC不能直接連接,要經過FX-232AW單元進行RS232C/RS-422的變換,下圖表示了它們之間的連接關系:
3.2 FX系列PLC的通信協議
在PC機中必須依據互聯的PLC的通信協議來編寫通信程序,因此先介紹FX系列PLC的通信協議。
(1)數據格式
FX系列PLC采用異步格式,由1位起始位、7位數據位、1位偶校驗位及1位停止位組成,波特率為9600bps,字符為ASCII碼。格式如下:
(2)通信命令
FX系列PLC有4個通信命令,它們是讀命令、寫命令、強制通命令、強制斷命令,如下表所示。表中X—輸入繼電器;Y—輸出繼電器;M—輔助繼電器;S—狀態元件;T—定時器;C—計數器;D—數據寄存器。
(3)通信控制字符
FX系列PLC采用面向字符的傳輸規程,用到5個通信控制字符,如下表所示。
*當PLC對PC機發來的ENQ不理解時,用NAK回答。
(4)報文格式
PC機向PLC發送的報文格式如下:
其中STX為開始標志:02H;ETX為結束標志:03H;CMD為命令的ASCII碼;SUMH,SUML為從CMD到ETX按字節求累加和,溢出不計。由于每字節十六進制數變為兩字節ASCII代碼,故校驗和為SUMH與SUML。
數據段格式與含義如下:
*寫命令的數據段有數據,讀命令的數據段則無數據。
讀/寫字節數為01H~40H(1~64)個。
PLC向PC機發送的應答報文格式如下:
*對讀命令的應答報文數據段為要讀取的數據,一個數據占兩個字節,分上位下位:
對寫命令的應答報文無數據段,而用ACK及NAK作為應答內容。
(5)傳輸過程
PC機與FX系列PLC之間采用應答方式通信,傳輸出錯則組織重發。其傳輸過程如下:
PLC根據PC機的命令,在每個循環掃描結束處的END語句后組織自動應答,無需用戶在PLC一方編寫程序。