【基于HostLink协议实现欧姆龙PLC-CJ1G与计算机的串口通信】 欧姆龙PLC协议
时间:2020-03-07 08:47:04 来源:雅意学习网 本文已影响 人
摘要:本文以欧姆龙公司的CJ1G中型PLC为例,介绍了欧姆龙HostLink即上位链接协议,详细的讨论了基于HostLink即上位链接协议的PLC与计算机通信的原理、上位链接命令和用VB如何实现PLC与计算机的通信。
关键词:PLC 串口通讯 FCS 上位链接
中图分类号:TP273 文献标识码:A 文章编号:1007-9416(2011)12-0001-03
PLC是新一代工业控制装置,由于可靠性高、适应性好、抗干扰能力优、接口功能强、编程简单、直观以及模块化结构、使用方便等优点,在工业控制领域中,作为一种稳定可靠的控制器得到广泛的应用。但它也有自身的一些缺点,即数据的计算处理和管理能力较弱,不能给用户提供良好的界面等。而计算机恰好能弥补PLC的不足,它不但有很强的数据处理和管理能力,而且能给用户提供非常美观而又易于操作的界面。将PLC与计算机结合,可使系统达到既能及时地采集、存储数据,又可处理和使用好数据,两者结合的关键是PLC与计算机之间的通信。本文以欧姆龙公司的CJ1G中型PLC为例,详细的讨论了基于HostLink协议的PLC与计算机通信的原理和用VB如何实现PLC与计算机的通信。
1、欧姆龙HostLink简介
欧姆龙公司的CP、CQM、C200、CJ、CS1等PLC的串行通讯都是采用HostLink协议进行通讯的,HostLink协议是欧姆龙的专有协议,通过HostLink协议使用计算机的串行口可与OMRON的PLC设备通讯。上位机链接系统即Hostlink系统是对于弱电系统集成一种即优化又经济的通信方式,它适合一台上位机与一台或多台PLC进行链接。上位机可对PLC传送程序,并监控PLC的数据区,以及控制PLC的工作情况。Hostlink系统允许一台上位机通过上位机链接命令向Hostlink系统的PLC发送命令,PLC处理来自上位机的每条指令,并把结果传回上位机。HostLink协议系统可使上位机对PLC的程序进行传送或读取,并可对PLC数据区进行读写操作。所有通信都将作奇偶检验和帧检验的双重检查系统,从而能估计出通信中的错误。可以使用PLC自带的RS-232C口与上位机进行连接,也可使用欧姆龙专用的通信板进行连接。通讯参数设置应与设备的通讯参数相同,默认为:9600,7,2,E(偶校验)。PLC与计算机之间的连接线是OMRON提供的专用电缆CJ1W-CN118来实现的,也可自制通讯电缆来实现,其连接图如图1所示。
2、上位机与PLC间通信的基本原理
要实现上位机与PLC间的通信,欧姆龙CJ系列PLC与上位机通讯可以采用上位链串行通信模式。进行上位链接通信时,上位机与PLC间使用命令和响应进行发送接收。而命令与响应都是以“帧”为单位进行的。首先,上位机向PLC发送命令,同时把发送权移交给PLC,PLC接收到上位机的命令后,进行FCS校验,FCS校验就是把从一帧的开始到FCS前面的数据进行逻辑异或得到的8位数据变换成2个字符的ASCII码,对接收信息的各帧计算FCS,并同时附加在帧后的FCS进行对照校合,就能检查数据错误。数据正确后再由PLC向上位机发送响应,这样就完成了一次通讯。
3、上位机与PLC间通信命令与响应的格式
(1)命令格式,如图2所示。
@:表示以@开始,而且必需以以@开始。设备号:是上位机用来识别所连接PLC的唯一号码。识别码:就是命令码,设定为两个字符的长度。正文:设定命令参数。FCS:设定为两个字符的检验码,如果通信出错通过计算FCS校验码,就可以及时发现。终端:命令结束,用两个字符设定即“*”和CR回车符来表示。
(2)响应格式,如图3所示。
@:表示以@开始,而且必需以以@开始。设备号:是上位机用来识别所连接PLC的唯一号码。异常码:返回命令的执行状态(有无错误)。正文:在有读出数据时返回。FCS:设定为两个字符的检验码。终端:命令结束,用两个字符设定即“*”和CR回车符来表示。
(3)欧姆龙上位链接命令介绍。
欧姆龙公司提供的上位链接命令,用于对欧姆龙PLC 进行相应的读写操作,常用上位链接命令如表1:
4、基于VB的通信程序设计
为了充分利用计算机数据处理的强大功能,我们可以采用计算机有优先权的方式,在计算机上编写程序来实现计算机与PLC的通信,计算机向PLC发出命令发起通信,PLC自动返回响应。本文中采用了VB来编写计算机与PLC间的通讯程序。
(1)计算FCS校验的VB自定义函数如下:
Function fcs(ByVal inputstr As String) As String
Dim slen, i, xorresult As Integer
Dim tempfcs As String
slen=Len(inputstr) (求输入字符串长度)
xorresult=0
For i=1 To slen
xorresult=xorresult Xor Asc(Mid$(inputstr,i,1)) (按位异或)
Next i
tempfcs=Hex$(xorresult) (转化为16进制)
If Len(tempfcs)=1 Then tempfcs="0"+tempfcs
fcs=tempfcs
End Function
(2)计算机与PLC通信程序。
读PLC的 VB自定义函数如下:
Public Function MyRead(OrigWord As String, NumRead As String)
Dim ReadCom As String
Dim i2 As Integer
Dim ReadWord As String
Static Tim1 As Integer
Static TIM2 As Integer
On Error GoTo ErrDeal
If MAINMENU.MS1.PortOpen=False Then MAINMENU.MS1.PortOpen=True
ReadCom="@00RD"+OrigWord+NumRead (读DM区,前四个表示起始字,后四位表示字数)
ReadCom=ReadCom+fcs(ReadCom)+"*"+Chr(13)
i2=0
MAINMENU.MS1.InBufferCount=0
MAINMENU.MS1.Output=ReadCom
Do
DoEvents
i2=i2+1
Loop Until MAINMENU.MS1.InBufferCount>= CInt(NumRead)*4+11 Or i2>10000
If i2 Else
GoTo ErrDeal
End If
Exit Function
ErrDeal:
Tim1=Tim1+1
If Tim1>5 Then
Tim1=0
If WarnDis1=True Then Exit Function "GoTo mss2
MsgBox"上下位机通信错误,请检查!", vbCritical,"警告"
WarnDis1=True
End If
End Function
写PLC的 VB自定义函数如下:
Public Sub MyWrite(OrgiWord As String,WrStr As String)
Dim WritCom As String
Dim i2 As Integer
Dim ResStr As String
Dim TIM As Integer
WritCom="@00WD"+OrgiWord+WrStr(写DM区,前四个表示起始字,后四位表示写入值)
WritCom=WritCom+fcs(WritCom)+"*"+Chr(13)
i2=0
MAINMENU.MS1.InBufferCount=0
MAINMENU.MS1.Output=WritCom
Do
DoEvents
i2=i2+1
Loop Until MAINMENU.MS1.InBufferCount>=11 Or i2>10000
If i210 Then
MsgBox"上下位机通信错误,请检查!",vbCritical,"警告"
End If
End Sub
从上面程序可以看到,计算机对PLC返回的响应帧要进行FCS校验,并利用异常码排除返回的错误数据,这样不但可以提高计算机获取信息的正确性,而且也提高了计算机监控的实时性。
上位链接协议通信方法在我台自动化控制系统中得到了运用,以工控机作为上位机,以PLC为下位机,形成一个优势互补的自动控制系统,实现了“集中管理,分散控制”。经过几年运行,运行可靠、稳定、抗干扰能力强。
参考文献
[1]欧姆龙公司《欧姆龙C系列可编程序控制器操作手册》.
推荐访问:串口 欧姆龙 协议 基于HostLink协议实现欧姆龙PLC-CJ1G与计算机的串口通信