您现在的位置是:首页 > PLC技术 > PLC技术
PLC与上位机通信中的上位机通信程序的编写
来源:艾特贸易2017-06-04
简介上位机通信程序可采用汇编语言编写,还可采用各种高级语言编写,也可以采用工控组态软件,或直接采用 PLC 厂家的通信软件(如三菱的 MELSE MEDOC 等)。下面利用 VB 6.0 以一个简单的
上位机通信程序可采用汇编语言编写,还可采用各种高级语言编写,也可以采用工控组态软件,或直接采用PLC厂家的通信软件(如三菱的MELSE MEDOC等)。下面利用VB 6.0以一个简单的例子来说明编写通信程序的要点。假设PC要求从PLC中读入从D123开始的4个字节的数据(D123、D124),其传输应答过程及报文如图7-24所示。
图7-24 传输应答过程及命令报文
命令报文中10F6H为D123的地址,04H表示要读入4个字节的数据。校验和SUM=30H+31H+30H+46H+36H+30H+34H+03H=174H,溢出部分不计,故SUMH=7,SUAIL=4,相应的ASCII码为“37H”,“34H”。应答报文中4个字节的十六进制数,其相应的ASCII码为8个字节,故应答报文长度为12个字节。
根据PC与FX系列PLC的传输应答过程,利用VB的MSComm控件可以编写如下通信程序实现PC与FX系列PLC之间的串行通信,以完成数据的读取。
在本例子中,设置MSComn的相关属性值如下。
(1) ComnPort:设置或传回通信连接端口代号。
(2) Sertings:设置初始化参数。以字符串的形式设置或传回连接速度、奇偶校验、数据位、停止位等4个参数。
(3) PonOpen:设置或传回通信连接端口的状态。
(4) Input:从接收缓冲区返回和删除字符。
(5)Ouqxn:将一个字符串写入输出寄存器。
(6) InputLen:指定由串行端口读入的字符串长度。
(7) InBufferCount:传回在接收寄存器中的字符数。
MSComm控件可以采用轮询或事件驱动的方法从端口获取数据。在这个例子中使用了轮询方法:
(1)通信口初始化
Private Sub Initialize0
MSComm1.CommPort=l
MSComm1.Settings=”9600,E,7,1”
MSComm1. InBufferSize= 1024
MSComm1. OutBuffersize= 1024
MSComm1.InputLen—O
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强大的图形显示和浮点运算的特点,最大限度地利用资源。
点击排行
