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

PLC与上位机通信中的上位机通信程序的编写

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

简介上位机通信程序可采用汇编语言编写,还可采用各种高级语言编写,也可以采用工控组态软件,或直接采用 PLC 厂家的通信软件(如三菱的 MELSE MEDOC 等)。下面利用 VB 6.0 以一个简单的

    上位机通信程序可采用汇编语言编写,还可采用各种高级语言编写,也可以采用工控组态软件,或直接采用PLC厂家的通信软件(如三菱的MELSE MEDOC等)。下面利用VB 6.0以一个简单的例子来说明编写通信程序的要点。假设PC要求从PLC中读入从D123开始的4个字节的数据(D123D124),其传输应答过程及报文如图7-24所示。

 传输应答过程及命令报文

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

    命令报文中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之间的串行通信,以完成数据的读取。

    在本例子中,设置MSComn的相关属性值如下。

    (1) ComnPort:设置或传回通信连接端口代号。

    (2) Sertings:设置初始化参数。以字符串的形式设置或传回连接速度、奇偶校验、数据位、停止位等4个参数。

    (3) PonOpen:设置或传回通信连接端口的状态。

    (4) Input:从接收缓冲区返回和删除字符。

    (5)Ouqxn:将一个字符串写入输出寄存器。

    (6) InputLen:指定由串行端口读入的字符串长度。

    (7) InBufferCount:传回在接收寄存器中的字符数。

    MSComm控件可以采用轮询或事件驱动的方法从端口获取数据。在这个例子中使用了轮询方法:

    (1)通信口初始化

    Private Sub Initialize0

    MSComm1CommPort=l

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

    MSComm1. InBufferSize= 1024

    MSComm1. OutBuffersize= 1024

    MSComm1InputLenO

    MSComm1. InputMode= comInputText

    MSComm1. Handshaking= comNone

    MSComm1. PortOpen= True

    End Sub

    (2)请求通信与确认

    Private Function MakeHandshakingOAs Boolean

    Dim InPackage As String

    MSComml.  OutBufferCount=O

    MSComml.  InBufferCount=0

    MSComml.  OutPut= Chr(&H5)

    Do

    DoEvents

    Loop Until MSComml.  InBufferCount=l

    InPackage= MSComml.  Input

    IfInPackage= Chr(&H6)Then

    MakeHandShaking= True

    Else

    MakeHandshaking= False

    End If

    End Function

    (3)发送命令报文

    Private Sub SendFrame()

    Dim Outstring As String

    MSComml.  OutBufferCount=O

    MSComml.  InBufferCount=O

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

    MSComml.  Output= Outstrinu

    End Sub

    (4)读取应答报文

    Private Sub ReceiveFrame0

    Dim Instring As String

    Do

    DoEvents

    Loop Until MSComml.  InBufferCount= 12

    InString= MSComml.  Inpult

    End Sub

    PLC与上位机的结合,并通过VB6.0传送数据所构成的计算机监控系统,对于近距离传输数据的现场控制来说是一种性价比很高的解决方案。这充分利用了PLC的抗干扰性能和PC强大的图形显示和浮点运算的特点,最大限度地利用资源。