《用VB实现PLC与计算机间的串行通讯.docx》由会员分享,可在线阅读,更多相关《用VB实现PLC与计算机间的串行通讯.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、用VB实现PLC与计算机间的串行通讯 zhangting 导语:在工业控制领域中,plc作为一种稳定可靠的控制器得到广泛的应用。但它也有自身的一些缺点,即数据的计算处理和治理才能较弱,不能给用户提供良好的界面等。 1 引言 在工业控制领域中,plc作为一种稳定可靠的控制器得到广泛的应用。但它也有自身的一些缺点,即数据的计算处理和治理才能较弱,不能给用户提供良好的界面等。而计算机恰好能弥补plc的缺乏,它不但有很强的数据处理和治理才能,而且能给用户提供非常美观而又易于操纵的界面。将plc与计算机结合,可使系统到达既能及时地收集、存储数据,又可处理和使用好数据,两者结合的关键是plc与计算机之间的
2、通讯。本文以omron公司的cpmia小型plc为例,具体的讨论了plc与计算机通讯的原理和用vb怎样实现plc与计算机的通讯。 2 通行原理与方法 上位机要可以通过plc监控下层设备的状态,就要实现上位机与plc间的通讯,一般工业控制中都是采用rs232c实现。上位机首先向plc发送查询数据的指令实际上是查询plc中端子的状态和dm区的值等,plc接收了上位的指令后,进展校验fcs校验码,看其是否正确,假如正确,那么向上位机传送数据包含首尾校验字节。否那么,plc回绝向上位机传送数据。上位接收到plc传送的数据,也要判定正确与否,假如正确,那么接收,否那么,回绝接收。 由于cpm1a没有提供
3、串行通讯口,我们利用其提供的外设端口实现通讯。plc与计算机之间的连接是通过omron提供的专用电缆cqm1-cif01来实现的,其硬件连接图如图1所示。 3 plc与计算机间的通讯规约 计算机与plc间的通讯是以“帧为单位进展的,并且在通讯的经过中,计算机具有更高的优先级。首先,计算机向plc发出命令帧,然后,plc作出响应,向计算机发送回响应帧。其中命令帧和响应帧的格式如下: 1 命令帧格式。为了方便计算机和plc的通讯,cpm1a对在计算机连接通讯中交换的命令和响应规定了相应的格式。当计算机发送一个命令时,命令数据主预备格式如图2所示。其中放在首位,表示以开场,设备号为上位机识别所连接的
4、plc的设备号。识别码为命令代码,用来设置用户希望上位机完成的操纵,fcs为帧检验代码,一旦通讯出错,通过计算fcs可以及时发现。完毕符为“和cr回车符,表示命令完毕。 2 响应帧格式。由plc发出的对应于命令格式的响应帧格式如图3所示。其中,异常码可以确定计算机发送的命令是否正确执行。其它的与正文中的含义一样。正文仅在有读出数据时有返回。 4 通讯程序的设计 为了充分利用计算机数据处理的强大功能,我们可以采用计算机有优先权的方式,在计算机上编写程序来实现计算机与plc的通讯, 计算机向plc发出命令提议通讯,plc自动返回响应。本文中采用vb来编写计算机与plc间的通讯程序。在vb中提供了通
5、讯控件应用通讯控件mscomm,实现通过串行端口传送和承受的功能。 下面介绍mscomm控件的属性: commport:设定通讯连接端口代号,程序必须指定所要使用的串行端口号,windows系统使用所设定的端口与外界通讯。 portopen:设定通讯口状态,假设为真,通讯端口翻开,否那么关闭。 settings:设定通讯口参数,其格式是bbbb,p ,d,s,其中bbbb为通讯速率波特率,p为通讯检查方式奇偶校验, d 为数据位数,s为停顿位数,其设定应与plc的设定一致。 input:将对方传送至输入缓冲区的字符读入到程序。 output:将字符写入输出缓冲区。 inbuffercount:
6、传回接收缓冲区中的字符数。 outbuffercount:传回输出缓冲区中的字符数。 inputlen:设定串行端口读入字符串的长度。 inputmode:设定接收数据的方式。 rthreshold:设定引发接收事件的字符数。 commevent:传回oncomm事件发生时的数值码 oncomm事件:无论是错误或者事件发生,都会触发此事件。 1 控件参数的初始化。 初始化程序如下: mscomm port=2 使用串口com2mscomm.settings=9600, e, 7, 2 波特率9600,偶校验,7位数据位,2位停顿位mscomm.portopen=true 翻开通讯端口,预备通讯
7、2 计算校验码fcs,计算fcs的vb自定义函数如下: function fcsbyval inputstr as string as string dim slen, i, xorresult as integerdim tempfes as stringslen=leninputstr 求输入字符串长度xorresult = 0for i = 1 to slenxorresult = xorresult xor ascmid$inputstr, i, 1 按位异或者next itempfes=hex$xorresult 转化为16进制if lentempfes=1then tempfes
8、=“0+tempfesfcs = tempfesend function3 计算机与plc通讯程序。 主要是一个自定义函数。 function readdatabyval inputstr as string, byval num as integer as stringdim outputstr as stringdim instring as stringdim returnstr as stringdim endstring as stringdim fcsstring as stringdim returnfcsstring as stringmscomm.inbuffercount=
9、0outputstr=inputstr+fcsinputstr+“ 给出命令帧mscomm.output=outputstr+chr$13 向plc传送命令帧doeventsloop while mscomm.inbuffercount returnfcsstring then readdata = error exit function end ifreturnstr = mid$instring, leninstring - num - 3, num readdata = returnstrend function 从上面程序可以看到,计算机对plc返回的响应帧要进展fcs校验,并利用异常码排除返回的异常数据,这样不但可以进步计算机获取信息的正确性,而且进步了计算机监控的实时性。 5 完毕语 本文介绍的通讯方法在我校cims研究中心自行研制的一套机电一体化设备中得到施行运用,经试验运行,证实这种通讯方法稳定、可靠,确实是一种非常有效的方法。将plc与计算机通讯网络连接起来,plc作为下位机,计算机作为上位机,形成一个上风互补的自动控制系统,实现了“集中治理,分散控制。其中各个plc子系统或者远程工作站在消费现场对各个被控对象进展控制,利用网络连接构成一个plc综合控制,知足了当代自动化系统向信息化、网络化、智能化的过渡。 0