发布日期:2022-04-26 点击率:54 品牌:欧姆龙_Omron
1 导言
在工业操控范畴中,plc作为一种安稳牢靠的操控器得到广泛的运用。但它也有本身的一些缺陷,即数据的核算处理和处理才调较弱,不能给用户供应超卓的界面等。而核算机刚好能抵偿plc的短少,它不光有很强的数据处理和处理才调,并且能给用户供应十分美丽而又易于操作的界面。将plc与核算机联络,可使系统抵达既能及时地搜集、存储数据,又可处理和运用好数据,两者联络的要害是plc与核算机之间的通讯。这篇文章以omron公司的cpmia小型plc为例,详细的谈论了plc与核算机通讯的原理和用vb怎样完毕plc与核算机的通讯。
2 通行原理与办法
上位机要可以经过plc监控底层设备的状况,就要完毕上位机与plc间的通讯,通常工业操控中都是选用rs232c完毕。上位机首要向plc发送查询数据的指令(实习上是查询plc中端子的状况和dm区的值等),plc接纳了上位的指令后,进行校验(fcs校验码),看其是不是精确,假定精确,则向上位机传送数据(包含首尾校验字节)。不然,plc回绝向上位机传送数据。上位接纳到plc传送的数据,也要区别精确与否,假定精确,则接纳,不然,回绝接纳。
因为cpm1a没有供应串行通讯口,咱们运用其供应的外设端口完毕通讯。plc与核算机之间的联接是经过omron供应的专用电缆cqm1-cif01来完毕的,其硬件联接图如图1所示。
3 plc与核算机间的通讯规约
核算机与plc间的通讯是以“帧”为单位进行的,并且在通讯的进程中,核算机具有更高的优先级。首要,核算机向plc宣告指令帧,然后,plc作出照料,向核算机发送回照料帧。其间指令帧和照料帧的格局如下:
(1) 指令帧格局。为了便当核算机和plc的通讯,cpm1a对在核算机联接通讯中沟通的指令和照料规矩了相应的格局。当核算机发送一个指令时,指令数据主预备格局如图2所示。
其间@放在首位,标明以@开端,设备号为上位机辨认所联接的plc的设备号。辨认码为指令代码,用来设置用户期望上位机完毕的操作,fcs为帧查验代码,一旦通讯犯错,经过核算fcs可以及时发现。完毕符为“*”和cr回车符,标明指令完毕。
(2) 照料帧格局。由plc宣告的对应于指令格局的照料帧格局如图3所示。
其间,失常码可以断定核算机发送的指令是不是精确施行。其它的与正文中的含义一样。正文仅在有读出数据时有回来。
4 通讯程序的方案
为了充沛运用核算机数据处理的健旺功用,咱们可以选用核算机有优先权的办法,在核算机上编写程序来完毕核算机与plc的通讯, 核算机向plc宣告指令主张通讯,plc自动回来照料。这篇文章中选用vb来编写核算机与plc间的通讯程序。在vb中供应了通讯控件—运用通讯控件(mscomm),完毕经过串行端口传送和承受的功用。
下面介绍mscomm控件的特征:
*commport:设定通讯联接端口代号,程序有必要指定所要运用的串行端标语,WINOOWs系统运用所设定的端口与外界通讯。
*portopen:设定通讯口状况,若为真,通讯端口翻开,不然封闭。
*settings:设定通讯口参数,其格局是"bbbb,p
,d,s",其间bbbb为通讯速率(波特率),p为通讯查看办法(奇偶校验), d 为数据位数,s为接连位数,其设定应与plc的设定一同。
*input:将对方传送至输入缓冲区的字符读入到程序。
*output:将字符写入输出缓冲区。
*inbuffercount:传回接纳缓冲区中的字符数。
*outbuffercount:传回输出缓冲区中的字符数。
*inputlen:设定串行端口读入字符串的长度。
*inputmode:设定接纳数据的办法。
*rthreshold:设定致使接纳作业的字符数。
*commevent:传回oncomm作业发作时的数值码
*oncomm作业:不论是过错或作业发作,都会触发此作业。
(1) 控件参数的初始化。
初始化程序如下:
mscomm.comport=2 `运用串口com2
mscomm.settings="9600, e, 7, 2" `波特率9600,偶校验,7位数据位,2位接连位
mscomm.portopen=true `翻注册讯端口,预备通讯
(2) 核算校验码fcs,核算fcs的vb自界说函数如下:
function fcs(byval inputstr as string) as string
dim slen, i, xorresult as integer
dim tempfes as string
slen=len(inputstr) `求输入字符串长度
xorresult = 0
for i = 1 to slen
xorresult = xorresult xor asc(mid$(inputstr, i, 1)) `按位异或
next i
tempfes=hex$(xorresult) `转化为16进制
if len(tempfes)=1then tempfes =“0”+tempfes
fcs = tempfes
end function
(3) 核算机与plc通讯程序。
首要是一个自界说函数。
function readdata(byval inputstr as string, byval num as integer) as string
dim outputstr as string
dim instring as string
dim returnstr as string
dim endstring as string
dim fcsstring as string
dim returnfcsstring as string)
mscomm.inbuffercount=0
outputstr=inputstr+fcs(inputstr)+“*” `给出指令帧
mscomm.output=outputstr+chr$(13) `向plc传送指令帧
do
doevents
loop while mscomm.inbuffercount < 15
instring=mscomm.input `获取plc的照料帧
`完毕码区别
endstring = mid$(instring, len(instring) -
num- 5, 2)
if endstring = "13" then
readdata = "error"
exit function
elseif endstring = "14" then
readdata = "error"
exit function
elseif endstring = "15" then
readdata = "error"
exit function
elseif endstring = "18" then
readdata = "error"
exit function
elseif endstring = "a3" then
readdata = "error"
exit function
elseif endstring = "a8" then
readdata = "error"
exit function
end if
`照料帧校验
endstring = mid$(instring, 1, len(instring) - 4)
returnfcsstring = mid$(instring,len(instring) - 3, 2)
fcsstring = fcs(endstring)
if fcsstring <> returnfcsstring then
readdata = "error"
exit function
end if
returnstr = mid$(instring,
len(instring) - num - 3, num)
readdata = returnstr
end function
从上面程序可以看到,核算机对plc回来的照料帧要进行fcs校验,并运用失常码打扫回来的失常数据,这么不光可早年进核算机获取信息的精确性,并且跋涉了核算机监控的实时性。
5 完毕语
这篇文章介绍的通讯办法在我校cims研讨基地自行研发的一套机电一体化设备中得到施行运用,经实验作业,证实这种通讯办法安稳、牢靠,的确是一种十分有用的办法。将plc与核算机通讯网络联接起来,plc作为下位机,核算机作为上位机,构成一个优势互补的自动操控系统,完毕了“会集处理,松懈操控”。其间各个plc子系统或长途作业站在出产现场对各个被控政策进行操控,运用网络联接构成一个plc归纳操控,满意了现代自动化系统向信息化、网络化、智能化的过渡。
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航