你现在位置:首页>技术论文>数据通讯>正文
利用VB的MSComm控件编程实现PC与三菱PLC FX系列通信
日期:2006-10-8 22:26:24 来源:PLC之家  
点击: 作者:未知
点击【】放大字体.

    编写PC的通信程序可采用汇编语言编写,或采用各种高级语言编写,或采用工控组态软件,或直接采用PLC厂家的通信软件(如三菱的MELSE MEDOC等)

WWW_PLCJS@_COM%-PLC-技.术_网

   下面利用VB6.0以一个简单的例子来说明编写通信程序的要点。假设PC要求从PLC中读入从D123开始的4个字节的数据(D123、D124),其传输应答过程及报文如图7-16所示。

WWcW_PLCJS_COM-PLC-技.术_网

 

WW.W_PLCJS_COM-PLC-技.术_网

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

图7-16  传输应答过程及命令报文

WWcW_PLCJS_COM-PLC-技.术_网

命令报文中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个字节。

WW.W_PLC※JS_C,OM-PL,C-技.术_网

    根据PC与FX系列PLC的传输应答过程,利用VB的MSComm控件可以编写如下通信程序实现PC与FX系列PLC之间的串行通信,以完成数据的读取。MSComm控件可以采用轮询或事件驱动的方法从端口获取数据。在这个例子中使用了轮询方法。

WWW_PLCJS@_COM%-PLC-技.术_网

   1)通信口初始化

WWW_PLCJS_COM-PLC-技.术_网

    Private Sub Initialize()

WWW_PL※CJS_COM-PLC-技.术_网

    MSComm1.CommPort =1

WWW_PL※CJS_COM-PLC-技.术_网

    MSComm1.Settings = “9600,E,7,1”

——可——编——程——控-制-器-技——术——门——户

    MSComm1.InBufferSize = 1024

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

    MSComml.OutBuffersize = 1024

WWW_PL※CJS_COM-PLC-技.术_网

    MSComm1.InputLen = 0

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

    MSComml.InputMode = comInputText

plcjs.技.术_网

    MSComm1.Handshaking = comNone

WWW_PLC※JS_COM-PmLC-技.术_网

    MSComm1.PortOpen = True

P.L.C.技.术.网——可编程控制器技术门户

    End Sub

WWW_PLC※JS_COM-PmLC-技.术_网

    2)请求通信与确认

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

    Private Function MakeHandshaking()As Boolean

——可——编——程——控-制-器-技——术——门——户

    Dim InPackage As String

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

    MSComml.OutBufferCount = 0

WWW_PL※CJS_COM-PLC-技.术_网

MSComml.InBufferCount = 0

WWW_PLC※JS_COM-PmLC-技.术_网

MSComml.OutPut = Chr(&H5)

WW.W_PLCJS_COM-PLC-技.术_网

Do

WWW_P※LCJS_COM-PLC-)技.术_网

DoEvents

WWW_PLCJS@_COM%-PLC-技.术_网

Loop Until MSComml.InBufferCount = 1

P.L.C.技.术.网——可编程控制器技术门户

InPackage = MSComml.Input

WWW_PL※CJS_COM-PLC-技.术_网

If InPackage = Chr(&H6) Then

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

MakeHandShaking = True

P.L.C.技.术.网——可编程控制器技术门户

Else

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

MakeHandshaking = False

——可——编——程——控-制-器-技——术——门——户

End If

WWW.PLCJS.COM——可编程控制器技术门户

End Function

W1WW_P4LCJS_COM-PLC-技.术_网

3)发送命令报文

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

Private Sub SendFrame ()

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

Dim Outstring As String

plcjs.技.术_网

MSComml.OutBufferCount = 0

WW.W_PLC※JS_C,OM-PL,C-技.术_网

MSComml.InBufferCount = 0

WWW.PLCJS.COM——可编程控制器技术门户

Outstrin = Chr(&H2)+″on″+″10F604″+Chr(&H3)+″74″

WWW_PLCJS_COM-PLC-技.术_网

MSComml.Output = Outstring

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

End Sub

WWcW_PLCJS_COM-PLC-技.术_网

4)读取应答报文

WWW_P※LCJS_CO※M-PLC-技-.术_网

Private Sub ReceiveFrame()

WWW.PLCJS.COM——可编程控制器技术门户

Dim Instring As String

plcjs.技.术_网

Do

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

DoEvents

W1WW_P4LCJS_COM-PLC-技.术_网

Loop Until MSComml.InBufferCount = 12

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

InString = MSComml.Inpult

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

End Sub

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行