摘要:本文针对在线检测中出现的纱线不匀问题,通过RS-232C串口通讯,设计了上位机与欧姆龙PLC-CJ1M(CPU21)之间的数据通信,采用基于Windows操作系统功能强大的面向对象的程序设计语言——Visual Basic,编写了上位机程序,而无需在PLC中编写任何程序,可以在线获得纱线的检测数据,及时反映纱线的不匀。
关键字:纱线检测;串行通讯;可编程控制器
中图分类号:TP311.1 文献标识码:B
Application of PLC Communication in Yarn Quality Online Detecting
Qin Weigang
(School of Computer Technology and Automation, Tianjin Polytechnic University, Tianjin, 300160, China)
Abstract: Based on the problem of the yarn unevenness of the online detecting, the paper designed data communication between personal computer and OMRON PLC-CJ1M(CPU21) by RS-232C serial port communication. The program which realize communication were compiled on using powerful and object oriented programming to designing language—Visual Basic in Windows operation system. The data can be gotten by online yarn detecting, and can reflect yarn unevenness. Keywords: Yarn Detecting; Serial Port Communication; Programmable Logic Controller 0. 引言
1969年美国数字设备公司根据美国通用汽车公司的要求,研制出世界上第一台可编程序控制器。最初只能用于逻辑运算,故称为可编程逻辑控制器,简称为PLC(Programmable Logic Controller),随着计算机技术和电子技术的飞速发展,其功能远远超出顺序控制和逻辑控制的范畴,不仅实现了数据运算和处理能力,而且体积小,功能强,可靠性高,编程直观,适应性好,接口方便,性价比高。 近年来,随着现代化生产技术的提高,以及计算机技术、信息技术和通讯技术的相互渗透,纱线的不匀直接导致布面的不平整,这就说明在纱线生产环节极为重要。纱线不匀是影响其品质的重要指标之一。传统的纱线检测方式都是在实验室离线进行的,通过对纱线的抽样,要求一定的温湿度前提下,相对于纱线的在线检测反映出离线检测的滞后性和随机性。RS-232C串行通讯实现比较容易,常被用于自动控制、数据采集、智能仪表等上位机与外部设备的数据通讯。本文设计了VB与欧姆龙PLC-CJ1M(CPU21)之间的数据通信,在线获得纱线的检测数据,如CV值、纱线瞬时直径、平均直径、粗节最大值、细节最小值等等,及时反映纱线的不匀,使操作人员及时做出相应调整。 1. 上位机与PLC之间通讯实现
欧姆龙PLC—CJ1M(CPU21)有两个串行通讯口,一是通过欧姆龙专用串口通讯线CS1W-CN226,其网络类型设置为Toolbus,同时将DIP4串行通讯设状态置为ON;一是通过欧姆龙九针串口通讯线XM2Z-200S-CV,其网络类型设置为SYSMAC WAY,其它为默认设置,包括端口为COM1,波特率为9600。图1所示为上位机通过RS-232C端口连接到PLC的示意图,也可以称作1:1连接。
图1 RS-232C端口的1:1连接。 图2所示为上位机与PLC之间通讯实现过程。
图2 上位机与PLC之间通讯实现过程
2. VB与PLC之间通讯协议和程序实现
2.1 链接系统的通讯协议 在纱线数据通讯中,只需要在上位机系统中编写上位机通讯程序,无需在PLC中编写任何程序,PLC CPU会根据上位机发来的命令帧自动生成响应帧返回给上位机。命令帧和响应帧之间包含需要通讯的数据,只有保证正确实现命令帧和响应帧之间的应答,才能实现准确的数据交换。命令和应答有两种方式,一种是从上位机发命令到PLC,另一种方式允许PLC发命令给上位机,我们采用浅一种方式。 从上位机发送命令时的命令帧和响应帧如图3。
图3 命令帧和响应帧格式 命令帧中: @——命令开始标志,所有命令都以“@”开始; 节点号——与上位机连接的PLC,在1:1连接中默认值为00; 标题码——设置两字节的命令代码,如RD代表读PLC的DM区数据; 正文——设置命令参数 FCS——设置两字符的帧检查顺序码,用于校验,是用两位ASCII码表示的8位数据,是从“@”开始到正文结束的所有字符的ASCII码按位异或运算的结果; 结束符——表示命令的结束,用“*”和回车符“CHR$(13)”标明。 应答帧中: @、节点号、标题码、FCS和结束符同命令帧中的含义。 异常号——返回命令的执行状态,,是否有错误发生。 2.2 通讯端口初始化 在上位机与PLC实现通讯之前,必须先在上位机VB中设置通讯控件MSComm1的相应属性,通讯口初始化程序一般放在窗体加载程序中。 Private Sub Form_Load() MSComm1.CommPort = 1 '设置Com1通讯口 MSComm1.Settings = “9600,e,7,2” '波特率9600,e偶校验,7位数据位,2位停止位 MSComm1.PortOpen = True '打开通讯端口 MSComm1.InBufferCount = 0 '清空接收缓冲区 End Sub 其它设置均取通讯控件MSComm1的默认值。 2.3 帧格式代码 采用基于Windows操作系统功能强大的面向对象的程序设计语言——Visual Basic,编写了上位机程序,建立了上位机与PLC之间良好的通讯协议。以读内存DM区为例: 上位机命令帧: "@" + "00" + "FA" + "1" + "00000000" + "0101" + "82" + 开始地址+读取个数+FCS+结束符 PLC应答帧: "@" + "00" + "FA" + "1" + "00000000" + "0101" + "82" + "0000"+读取数据 +FCS+结束符 其中: FA——表示FINS命令 0101——表示连续读内存区 82——表示读内存DM区 2.4 校验算法实现 为了保证通讯数据准确无误的传输,欧姆龙PLC对通讯数据以按位异或算法进行校验。代码如下,仅供参考。 Option Explicit Function FCS(ByVal temp1 As String) As String Dim slen1, i, xorresult1 As Integer ' 定义变量 Dim tempfcs1 As String xorresult1 = 0 slen1 = Len(temp1) ' 求输入字符串的长度 For i = 1 To slen1 xorresult1 = xorresult1 Xor Asc(Mid(temp1, i, 1)) '从首字符到尾字符获取ASCII码,按位异或 Next i Tempfcs1 = Hex$(xorresult1) '转换为16进制 If Len(tempfcs1) = 1 Then FCS = "0" & tempfcs1 Else FCS = tempfcs1 End If End Function 3. 结束语
本文作者创新点主要通过RS-232C串口通讯,采用面向对象的可视化编程工具——Visual Basic建立上位机与欧姆龙PLC-CJ1M(CPU21)之间的数据通讯,获取纱线在线检测数据,现场实测表明能够快速准确在线测量纱线的CV值、瞬时直径、平均直径、粗节最大值、细节最小值等等,实时反映纱线的不匀率,对提高棉纺企业纱线质量具有重要的意义。
参考文献: [1]荣大龙. VB编程PLC串行通讯技术及应用[J].微计算机信息,2002,11:54-56 [2]张智杰.使用VB开发PLC的串行通讯程序.仪器仪表用户[J],2002,9(1):23-25 [3]余松,赵忠堂.用VISUAL BASIC实现上位机和PLC的通讯[J].电气传动, 1999,(3):41-43 [4]OMRON SYSMAC CS/CJ系列可编程控制器编程手册[Z],2003,4 [5]樊春峰,李劲伟.用VB开发上位机与OMRON PLC之间的一种通讯程序[J].洛阳工学院学报,2002,23(2):82-84 [6]沈世斌. 三菱PLC与PC机间的通讯应用[J].微计算机信息,2006,4-1:81-83 作者简介:秦伟刚(1978-),男,山东昌乐县人,天津工业大学计算机技术与自动化学院助教,硕士研究生学历,主要从事复杂过程控制和智能控制研究。 Biography: Qin Weigang, (1978-), male, School of Computer Technology and Automation, Tianjin Polytechnic University, Tianjin, assistant, main research area, complex processing control and intelligent control
|