利用VB的MSComm控件编程实现PC与三菱PLC FX系列通信-PLC技术网(www.plcjs.com)-可编程控制器技术门户


利用VB的MSComm控件编程实现PC与三菱PLC FX系列通信

 (点击题目可以在互联网中搜索该题目的相关内容)
日期: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通信的连接