| |
---|---|
(点击题目可以在互联网中搜索该题目的相关内容) 日期:2006-10-8 22:26:24 来源:PLC之家 作者: 点击: | |
编写PC的通信程序可采用汇编语言编写,或采用各种高级语言编写,或采用工控组态软件,或直接采用PLC厂家的通信软件(如三菱的MELSE MEDOC等) 下面利用VB6.0以一个简单的例子来说明编写通信程序的要点。假设PC要求从PLC中读入从D123开始的4个字节的数据(D123、D124),其传输应答过程及报文如图7-16所示。
图7-16 传输应答过程及命令报文 命令报文中10F6H为D123的地址,04H表示要读入4个字节的数据。校验和SUM=30H+31H+30H+46H+36H+30H+34H+03 H=174H,溢出部分不计,故SUMH=7,SUAIL=4,相应的ASCⅡ码为“37H”,“34H”。应答报文中4个字节的十六进制数,其相应的ASCⅡ码为8个字节,故应答报文长度为12个字节。 根据PC与FX系列PLC的传输应答过程,利用VB的MSComm控件可以编写如下通信程序实现PC与FX系列PLC之间的串行通信,以完成数据的读取。MSComm控件可以采用轮询或事件驱动的方法从端口获取数据。在这个例子中使用了轮询方法。 1)通信口初始化 Private Sub Initialize() MSComm1.CommPort =1 MSComm1.Settings = “9600,E,7,1” MSComm1.InBufferSize = 1024 MSComml.OutBuffersize = 1024 MSComm1.InputLen = 0 MSComml.InputMode = comInputText MSComm1.Handshaking = comNone MSComm1.PortOpen = True End Sub 2)请求通信与确认 Private Function MakeHandshaking()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.Input 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 4)读取应答报文 Private Sub ReceiveFrame() Dim Instring As String Do DoEvents Loop Until MSComml.InBufferCount = 12 InString = MSComml.Inpult End Sub |
|
上一篇: FX系列PLC通信协议 下一篇: PC与S7-200系列PLC通信的连接 |