工控网首页
>

应用设计

>

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

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

2015/1/15 16:35:40

       

    编写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

投诉建议

提交

查看更多评论
其他资讯

查看更多

超越传统直觉,MATLAB/Simulink助力重型机械的智能化转型

新大陆自动识别精彩亮相2024华南国际工业博览会

派拓网络被Forrester评为XDR领域领导者

智能工控,存储强基 | 海康威视带来精彩主题演讲

展会|Lubeworks路博流体供料系统精彩亮相AMTS展会