PC機與PLC串行通信的實現
2019-06-11  來源:網絡或本站原創

Serial Communication between Personal Computer and PLC

(北京航空航天大學    宗光華

Li,Geng  Zhong,Guanghua

摘要:本文對FX系列PLC的通信協議進行了詳細的介紹,并以VB為開發工具實現了PC機與FX系列PLC的串行通信。

關鍵詞: PLC ;串行通信;VB6.0

 

Abstract;This paper introduces the communication protocol of FX series PLC and achieves serial communication between PC and FX serial PLC.

KeywordsPLC; Serial Communication ;VB6.0

 

前言

PLC以卓越的可靠性和方便的可編程性廣泛應用于工業控制領域。實現PC機與PLC通信的目的是為了向用戶提供諸如工藝流程圖顯示、動態數據畫面顯示、報表顯示、窗口技術等多種功能,為PLC提供良好的人機界面。本文詳細介紹了FX系列PLC的通信協議,并在Windows環境下,使用VB6.0開發通信程序,實現了PC機與FX系列PLC之間的串行通信。

PC機與PLC實現通信的條件

帶異步通信適配器的PC機與PLC只有滿足如下條件,才能互聯通信:

(1)帶有異步通信接口的PLC才能與帶異步通信適配器的PC機互聯。還要求雙方采用的總線標準一致,否則要通過“總線標準變換單元”變換之后才能互聯。

(2)雙方的初始化,使波特率、數據位數、停止位數、奇偶校驗都相同。

(3)要對PLC的通信協議分析清楚,嚴格地按照協議的規定及幀格式編寫PC機的通信程序。PLC中配有通信機制,一般不需用戶編程。

  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一方編寫程序。

利用VB6.0編寫通信程序

下面以一個簡單的例子來說明編寫通信程序的要點。假設PC機要求從PLC中讀入從D123開始的4個字節的數據(D123,D124),其傳輸應答過程及報文如下(圖略可向作者索取):

命令報文中10F6H為D123的地址,04H表示要讀入4個字節的數據。校驗和SUM=30H+31H+30H+46H+36H+30H+34H+

03H=174H,溢出部分不計,故SUMH為'7',SUML為‘4’,相應的ASCII碼為“37H”,“34H”。應答報文中4個字節的十六進制數,其相應的ASCII碼為8個字節,故應答報文長度為12個字節。

根據PC機與FX系列PLC的傳輸應答過程編制出如下所示的通信程序流程圖略。

利用VB的MSComm控件,按照流程圖可以編寫如下通信程序實現PC機與FX系列PLC之間的串行通信以完成數據的讀取。MSComm控件可以采用輪詢或事件驅動的方法從端口獲取數據。在這個例子中使用了輪詢方法。

(1)通信口初始化

Private Sub Initialize()

MSComm1.CommPort

MSComm1.Settings ″9600,,,1″

MSComm1.InBufferSize 1024

MSComm1.OutBufferSize 1024

MSComm1.InputLen

MSComm1.InputMode comInputModeText

MSComm1.Handshaking comNone

MSComm1.PortOpen True

End Sub

(2)請求通信與確認

Private Function MakeHandShaking() As Boolean

Dim InPackage As String

MSComm1.OutBufferCount

MSComm1.InBufferCount

MSComm1.Output Chr(&H5)

Do

DoEvents

Loop Until MSComm1.InBufferCount

InPackage MSComm1.Input

If InPackage Chr(&H6) Then

MakeHandShaking True

Else

MakeHandShaking FalseEnd If

End Function

(3)發送命令報文

Private Sub SendFrame()

Dim OutString As String

MSComm1.OutBufferCount

MSComm1.InBufferCount

OutStrin Chr(&H2)+″0″+″10F604″+Chr(&H3)+″74″

MSComm1.Output OutString

End Sub

(4)讀取應答報文

Private Sub ReceiveFrame()

Dim InString As String

Do

DoEvents

Loop Until MSComm1.InBufferCount 12

InString MSComm1.Input

End Sub

結束語

以本文所述機制編寫的通信程序已成功用于以FX2N型PLC作為主控制器的高層建筑玻璃幕墻清洗機器人系統中,通過該通信程序,實現了PC機對PLC的監視和控制。同時,本程序對PC機與其它型號PLC之間的通信也有一定的借鑒意義。

參考文獻

[]FX2N可編程控制器編程手冊

[]FX-232AW RS422 TO RS232C INTERFACE UNIT

[]Visual Basic 6從入門到精通,電子工業出版社

[]可編程控制器網絡通信及應用,清華大學出版社

作者簡介:李耿,男,1975年出生,現為北京航空航天大學機械工程學院碩士研究生,主要進行高層建筑玻璃幕墻清洗機器人系統的研究與開發。電話:010-82314554,E-mail:bjlg@sina.com

(100083   北京航空航天大學機器人研究所)李    宗光華

  

最新22选5开奖结果