基于HostLink协议的PLC与上位机串口通信的实现.pdf
- 文档编号:14652932
- 上传时间:2023-06-25
- 格式:PDF
- 页数:4
- 大小:342.67KB
基于HostLink协议的PLC与上位机串口通信的实现.pdf
《基于HostLink协议的PLC与上位机串口通信的实现.pdf》由会员分享,可在线阅读,更多相关《基于HostLink协议的PLC与上位机串口通信的实现.pdf(4页珍藏版)》请在冰点文库上搜索。
第31卷第12期2008年12月合肥工业大学学报(自然科学版)JOURNALOFHEFEIUNIVERSITYOFTECHNOLOGYVol.31No.12Dec.2008收稿日期:
2008-04-03作者简介:
刘正琼(1973-),女,安徽合肥人,合肥工业大学讲师.基于HostLink协议的PLC与上位机串口通信的实现刘正琼,徐海卫,潘媛,丁强(合肥工业大学计算机与信息学院,安徽合肥230009)摘要:
文章对欧姆龙CJ系列PLC的HostLink通信协议进行了详细的介绍,提出了利用VB的ActiveX控件MSComm实现PLC与上位机通信的方法,给出了PLC与PC串口通信的软件设计流程。
通过上位机对PLC的读/写,实现了对现场数据的自动采集,可以有效地对工业现场设备进行监控和管理。
编写的串口通信软件在制造执行系统(MES)中得到了成功应用,验证了它的可靠性和稳定性。
关键词:
数据采集;PLC;HostLink协议;串口通信中图分类号:
TN919.3文献标识码:
A文章编号:
1003-5060(2008)12-1940-04RealizationofserialportcommunicationbetweenthePLCandthehost-computerbasedonHostLinkprotocolLIUZheng-qiong,XUHai-wei,PANYuan,DINGQiang(SchoolofComputerandInformation,HefeiUniversityofTechnology,Hefei230009,China)Abstract:
TheHostLinkcommunicationprotocolofthePLCofOMRONCJseriesisintroducedinthispaper.ThemethodforrealizingthecommunicationbetweenthePLCandthehost-computerispresen-tedbymeansofakindofActiveXcontrolnamedMSComm.Thesoftwaredesignflowofserialcom-municationbetweenthePLCandthePCisalsodescribed.Throughreadingandwritingofthehost-computerfromortothePLC,automaticcollectionoffielddataisrealized,andthedevicecanbemoni-toredandcontrolledeffectively.Theserialcommunicationsoftwareisprovedtobereliableandstablethroughthesuccessfulapplicationinthemanufactureexecutionsystem(MES).Keywords:
datacollection;PLC;HostLinkprotocol;serialportcommunication可编程控制器PLC在数据采集和监控系统中得到了广泛地应用1。
但PLC的人机交互性能较差,远不如工业控制计算机,如果把二者结合起来,由PLC下位机完成数据的采集任务,由PC上位机完成数据的实时显示和控制处理功能,则可大大提高系统的性能。
如何实现PLC和PC之间的通信,目前,采用的方式主要有3种:
通过使用PLC开发商提供的系统协议和网络适配器来实现PLC与PC机的互联通信。
但是其通信协议是不公开的,因此互联通信必须使用PLC开发商提供的上位机组态软件,并采用支持相应协议的外设。
这种方式其实现的功能难以满足不同用户的需求。
使用目前通用的上位机组态软件,如组态王、InTouch、WinCC及力控等。
这种方式除了需要增加系统投资外,其应用的灵活性也受到了一定的限制。
利用PLC厂商所提供的标准通信端口和由用户自定义的自由口通信方式来实现PLC与PC机的互连通信,这种方式不需要增加投资,灵活性好,特别适合于小规模的控制系统。
在PLC厂商所提供的标准通信端口中,串口通信由于具有连接简单、成本低、传输距离长及数据传递可靠等优点,故在数据采集、实时监控和传输系统中得到了广泛应用。
1实现串口通信的方法实现串口通信方法主要有2种:
使用Windows应用程序接口(API)函数和利用MSComm控件2。
用API编写程序时往往要考虑多线程问题,编写出的程序十分庞大,而且结构复杂、继承性差,但在CPU处理任务比较繁重、与外围设备有大量的通信数据时,API函数具有优势。
MSComm控件是微软公司开发的,它封装了串口通信的全部API函数,从而可避免烦琐复杂的API编程,使用起来简单方便,大大简化了编程的难度,缩短了编程时间,并且用MSComm控件编写的程序结构清晰,移植性好,稳定性好而可靠性高。
2PC与PLC之间的通信协议在本系统中PLC采用欧姆龙公司OMRON的CJ1M型,CJ系列的PLC体积小,速度快,功能强大,支持DeviceNet开放网络3、机器与机器之间基于ControllerLink的连接和基于以太网的Host连接,以及更高级的信息共享,包括通过以太网、ControllerLink以及DeviceNet的无缝信息通信。
为确保上下位机之间能正确交换数据,必须制定相互遵循的通信协议,HostLink协议是欧姆龙的专有协议4,它使用计算机的RS-232C总线与OMRONCJ1M连接进行信息交换。
其通信采用主从轮询的方式:
上位机始终具有初始传送优先权,所有通信均由上位机来启动,HOSTLink通信单元收到命令交由PLC执行,将执行结果返回上位机,两者以帧为单位轮流交换数据。
上位机向下位机发送数据或者从下位机中读取数据都是主站以命令帧形式发送,对于主站发来的命令帧,从站用响应帧应答。
在命令帧或响应帧中包含需要通信的数据,必须按其格式进行拆装、识别,才能正确分离出数据及有用状态信息,才能使要交换的数据顺利到达对方。
上位机的命令帧由不固定的字节数组成,对不同的识别码有不同的帧长度,但基本格式大体一致。
以读CIO区数据的命令帧为例,如图1所示。
其中,为起始符号;节点号为主站所寻找的目标地址(设备号),设置在PLCCIO区的CIO6648的0007位中,为0031(BCD码),响应帧中也必须带上同一设备号,告诉主站已与哪一个从站建立了通信;识别码说明帧的功能(如RD、RH、WD、TS及MM等);起始字也就是起始偏移地址(09999);字数为数据个数(n=110000,若读10000个字,被读字数用0000表示);FCS为以检查传送时是否存在数据错误设置的,为2个ASCII字符的8位数据,其计算方法为其前面除符号字节的所有字节的异或值;终止符设置成“”和回车(CHR(13)2个字符,表示命令结束。
图2所示为上位机读CIO区命令的PLC相应的响应帧格式,其中结束码表示命令完成的状态(即是否有错误发生),有代码00、13、A8等形式,分别代表正常结束、FCS错误、传送数据时因帧长度错误引起中止等含义。
如发送一读第5号从站的CIO区CIO0026和CIO0027数据的命令帧“5RD00260002#”(其中#表示校验字节)后,收到的响应帧为“5RD00000B012C#”,表示顺利读出第5号从站CIO0026和CIO0027内的数据值分别为11和300。
3PLC-PC串口通信的软件实现3.1MSComm控件利用VB提供的MSComm控件,可实现PLC-PC之间的串口通信。
MSComm是Mis-cosoft公司提供的简化Windows下串口通信编程的ActiveX控件,它通过串行端口传输和接收数据,该控件使用简单,性能安全可靠5。
它提供了2种处理通信问题的方法:
事件驱动方法和查询法6。
事件驱动法的优点在于程序响应及时,可靠性高,当有新字符到达或端口状态改变或发生错误时,MSComm控件将触发OnComm事件,1941第12期刘正琼,等:
基于HostLink协议的PLC与上位机串口通信的实现而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性获知所发生的事件或错误,从而采取相应的操作。
在本系统中采用事件驱动方式。
其常用的属性如下7:
Commport属性:
用于设置或返回通信连接端口号码。
Settings属性:
用于设置初始化参数。
以字符串的形式设置或返回传输速率、校验位、数据位及停止位等4个参数。
格式为“BBBB,P,D,S”,其中BBBB为传输速率;P表示校验检查方式;D表示数据位数;S表示停止位数。
默认值是“9600,N,8,1”,本系统采用欧姆龙系列PLC,通信初始化参数设置为“9600,E,7,2”,它表示所使用的通信端口是以每秒9600位的速度作传输,作偶校验的检查,每个数据是7位,而停止位是2位。
PortOpen属性:
用于设置或返回通信连接端口的状态。
Input属性:
用于从输入缓冲区返回并删除字符。
程序靠这个命令将对方传送到输入缓存区中的字符读进来,并清除缓存区中已被读出的字符。
Output属性:
用于将一个字符串写入输出缓存区,当程序需要向对方传输字符串时,可使用次命令将字符串写入输入缓存区中。
3.2PLC-PC串口通信的软件流程在VB下,利用MScomm控件实现PLC-PC之间串口通信的具体步骤如下:
(1)利用PLC编程软件对PLC硬件进行一定的设置。
CX-P是欧姆龙公司开发的新的PLC编程软件,为纯32位的软件,支持所有的欧姆龙产品8。
设置方法如下:
先将PLC断电,进入CX-P环境,选择在ToolBus下在线工作,在“上位机链接端口”对话框中选择Hostlink后退回主菜单。
(2)建立串口连接,并对串口参数进行初始化,如打开的串口号、传输的波特率、奇偶校验及停止位等参数设置。
(3)上位机向PLC发送读取数据的命令。
为了保证两者之间的正确通信,发送的命令帧必须正确,在发送完命令帧后,上位机处于等待状态,一直等收到PLC的应答帧后,分析结束码,判断是否有错误,(正常为“00”,出错则显示错误代码),并根据错误类型作相应的纠错处理,其程序流程如图3所示。
(4)上位机向PLC发送写入数据的命令,PLC根据接收的数据完成相应的工业现场设备的控制,其程序流程如图4所示。
3.3程序实例在制造执行系统(MES)中,本实例主要用于显示处理从传感器采集到的数据。
在系统中可通过设置定时器TIMER控件8的Interval属性,定义采集的时间间隔,系统设定100ms的时间间隔,从而保证了数据的采集速率。
设计的操作界面,如图5所示。
图5读3311单元的数据用户可以在窗体上选择通信端口和通信模块编号;在地址文本框中可设定读取PLC存储区的地址。
如图5中在地址一栏中输入“3311”,表示1942合肥工业大学学报(自然科学版)第31卷要采集PLC的CIO区域中3311单元的数据。
单击打开通信端口的按钮,激活定时器,程序代码不断发送询问读数的命令,接着处理返回的命令结果,并在窗体上显示模拟输入值,绘出模拟量变化的曲线图。
随着输入点压力(或者温度)的变化,数值一栏显示出采集到的数据值,并且在右下方的图形上绘出变化曲线(见图5),从而实现了对PLC存储区数据的读取。
同时也可以输入相应的地址和数据,然后点击“写数据到存储区”,执行“写”命令。
如在地址一栏中输入“3305”,准备对3305单元写入数据,然后数据一栏写入“128”,表示对3305.07置为高电平。
PLC可根据收到的数据对其控制的设备进行相应的操作。
下面给出部分程序清单:
(1)在“打开通信端口”按钮的Click事件中对MScomm控件进行初始化设置。
MSComm1.Settings=9600,E,7,2设置通信参数MSComm1.PortOpen=True打开通信端口cmdOpencom.Enabled=False将此按钮设置成为禁用状态cmdstart.Enabled=True激活(开始检测)按钮lblmsg.Caption=可单击(开始检测)按钮,执行检测工作ExitSubcomerr:
MsgBox打开通信端口时发生错误!
请确定通信端口确实存在且正常,vbCritical+vbOKOnly,系统信息
(2)从PLC读取数据。
为了能清楚地了解PC如何读取PLC存储区的数据,下面的程序是假设PC读取设备号(站号)为00的PLC中地址为3311的CIO区的数据。
PrivateSubTimer1-Timer()DimtrasmAsStringDimvaloreAsStringtrasm=“00RD33110001”trasm=trasm+fcs(trasm)+Chr(13)组合出读命令帧MSComm1.inputlen=0接收缓冲区初始化MSComm1.Output=trasm向PLC发送读数据帧DoDoeventsLoopUntilMSComm1.InBufferCount=15等待PLC的应答a=MSComm1.InputPC读PLC返回的应答帧IfNottimeoutThen检验收到的校验码和发送的校验码是不是相同fcs=Mid(a,(Len(a)-3),2)trasm=Left(a,(Len(a)-4)Iffcsfcs(trasm)Then如果不相同,则time-out=-1timeout=-1ExitSubEndIfvalore=Mid(a,8,4)如果相同,取出数值EndSub(3)向PLC写入数据。
假设PC向设备号为00的PLC中写入数据,CIO区地址为3305,写入数据为128。
则“写数据到存储区”按钮的Click事件如下:
PrivateSubcmdwritet-Click()DimtrasmAsStringtrasm=“00WR33050080”trasm=trasm+fcs(trasm)+Chr(13)MSComm1.Output=trasmEndSub4结束语本文对欧姆龙PLC的串口通信协议HostLink协议进行了研究,利用VB的MSComm控件实现了PC与PLC的串口通信。
该控件编写的串口通信软件在制造执行系统(MES)得到了成功应用,验证了它的可靠性和稳定性。
参考文献1高钦和.可编程控制器应用技术与设计实例M.北京:
人民邮电出版社,2004:
1-50.2陈常祥,王强,张天桥,等.MSCOMM与API函数实现PLC串口通信比较J.工业控制计算机,2006,19(10):
9-10.3王雪,甘永梅.DeviceNet现场总线从站通讯接口的设计J.工矿自动化,2004,
(2):
7-10.4徐光宪,刘建辉,陈万志.串行通信在监控系统中的应用研究J.微计算机信息,2004,20(7):
24-25.5邓洪声,舒大文.用VisualBasic6.0设计四通道串口数据采集J.昆明理工大学学报(理工版),2004,29
(2):
57一60.6董淑冷,茅红伟.物料自动分拣系统中PLC与上位机的通信J.计算机工程,2007,33(11):
267-269.7李刚.MSCEComm控件在串口编程中的应用J.重庆电力高等专科学校学报,2003,8(4):
36-38.8宋伯生.PLC编程实用指南M.北京:
机械工业出版社,2005:
10-46.(责任编辑张秋娟)1943第12期刘正琼,等:
基于HostLink协议的PLC与上位机串口通信的实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 HostLink 协议 PLC 上位 串口 通信 实现