您现在的位置是:首页 > PLC技术 > PLC技术

PC与FX系列PLC通信中PC通信程序的编写

来源:艾特贸易2017-06-04

简介编写 PC 的通信程序可采用汇编语言编写,或采用各种高级语言编写,或采用工控组态软件,或直接采用 PLC 厂家的通信软件(如三菱的 MELSE MEDOC 等)。 下面利用 VB6.0 以一个简单的例子

    编写PC的通信程序可采用汇编语言编写,或采用各种高级语言编写,或采用工控组态软件,或直接采用PLC厂家的通信软件(如三菱的MELSE MEDOC等)。    下面利用VB6.0以一个简单的例子来说明编写通信程序的要点。假设PC要求从PLC中读入从D123开始的4个字节的数据(D123D124),其传输应答过程及报文如图7 15所示。
传输应答过程及命令报文
    7-15    传输应答过程及命令报文    命令报文中10F6HD123的地址,04H表示要读入4个字节的数据。校验和SUM=30H+31H+30H+46H+36H+30H+34H+03H=174H,溢出部分不计,故SUMH=7SUAIL=4,相应的ASCII码为“37H”,“34H”。应答报文中4个字节的十六进制数,其相应的ASCII码为8个字节,故应答报文长度为12个字节。    根据PCFX系列PLC的传输应答过程,利用VBMSComm控件可以编写如下通信程序实现PCFX系列PLC之间的串行通信,以完成数据的读取。MSComm控件可以采用轮询或事件驱动的方法从端口获取数据。在这个例子中使用了轮询方法。    (1)通信口初始化    Private Sub Initialize()    MSComml. CommPort =1    MSComml.Settings="9600,E,7,1"    MSComml. InBufferSize= 1024    MSComml. OutBuffersize = 1024    MSComml.InputLen = 0    MSComml.InputMode = comInputText    MSComml. Handshaking= comNone    MSComml.PortOpen = True    End Sub    (2)请求通信与确认    Private Function MakeHandsaking()As Boolean    Dim InPackage As String    MSComml. OutBufferCount = 0    MSComml. InBufferCount = 0    MSComml, OutPut= Chr(&H5)    Do    DoEvents    Loop Until MSComml.InBufferCount = 1    InPackage  = MSComml.lnput    If InPackage=Chr(&H6) Then    MakeHandShaking = True    Else    MakeHandshaking=False    End If    End Function    (3)发送命令报文    Private Sub Sendframe()    Dim Outstring As String    MSComml. OutBufferCount = 0    MSComml. InBufferCount= 0    Outstrin=Chr( &H2)+"on"+"10F604"+ Chr( &H3)+"74"    MSComml. Output = Outstring    End Sub    Private Sub Receiveframe()    Dim Instring As String    Do    DoEvents    Loop Until MSComml.InBufferCount = 12    InString = MSComml.lnpult    End Sub