APP下载

基于ASCII的张力传感器数据采集系统

2014-08-02周桂存

化工自动化及仪表 2014年9期
关键词:接收数据发送数据轮询

周桂存

(中国石化仪征化纤股份有限公司,江苏 仪征 211900)

在纺织化纤行业,丝束张力是一个十分重要的参数,一般将该参数的检测作为质量控制的重要手段之一。在线张力传感器在化纤生产中应用广泛,德国施密特公司生产的FS系列在线张力传感器在化纤行业有很多应用,FS系列在线张力传感器设有RS-422数字输出信号接口,通过配置RS-422/RS-232转换器和该公司开发的张力检测软件,即可实现在PC机上显示在线张力传感器采集的数据。但是此张力检测软件的用户界面比较单一,灵活性不够,而且要单独采购,增加了生产成本。

笔者通过对FS系列在线张力传感器数字输出接口通信协议ASCII的研究,采用基于CP341的串口通信模块,将其信号采集到现有的S7-300 PLC上,在上位监控系统中将在线张力传感器信号进行实时采集和记录,以方便生产管理和丝束张力对质量影响的追踪分析。在此,基于ASCII通信协议,介绍采用RS-422全双工模式,通过CP341串口通信模块对FS系列在线张力传感器检测数据实时采集的实现方法。

1 FS系列在线张力传感器数据采集系统的结构①

FS系列在线张力传感器的数据采集系统分为现场层、控制层和上位监控层,如图1所示。现场层由FS张力传感器组成,张力传感器采用RS-422通信接口,单段RS-422总线上可以接1~32个张力传感器;控制层由S7-300 PLC组成,PLC系统配置有CP341串口通信模块,与FS张力传感器进行RS-422通信,实现数据采集;监控层采用iFIX监控组态软件构成操作员站,对所采集的数据进行实时显示与超限报警,并形成历史记录,用于事后数据分析等。

图1 数据采集系统结构示意图

2 硬件连接与参数设置

2.1 串口通信模块

图2是FS-422张力传感器和CP341串口模块之间的RS-422电气连接示意图,采用全双工模式。FS张力传感器需外部供电,多台FS张力传感器之间通过RJ45网线并联连接。

图2 张力传感器与CP341的硬件连接示意图

2.2 张力传感器RS-422数字输出口定义

FS系列在线张力传感器出厂前如无特别要求,RS-422接口默认设置为:波特率57 600bit/s,8位数据位,1位停止位,无校验。通信设定参数用户不能修改。

2.3 CP341参数设置

S7-300 PLC的硬件组态中需对CP341进行参数设置,通信协议选ASCII,波特率、数据位、停止位、校验方式设置成与FS-422张力传感器一致,字符延时时间4ms,接口界面模式选全双工(四线制),其他采用默认设置,保存编译下载到S7-300 CPU硬件组态。

3 软件

FS张力传感器的ASCII通信发送/接收数据命令格式如下:

a. 发送数据格式,地址+功能码,无CR或LF;

b. 接收数据格式,值+CRLF。

FS张力传感器ASCII协议的通信代码见表1。

表1 FS-422张力传感器的ASCII代码

采用ASCII协议驱动实现多站点轮询通信。S7-300 PLC作为主站发出数据请求,张力传感器各站作为从站应答响应,主站通过发送不同地址站点的信息帧轮询不同从站,从站根据地址站点信息来判断是否是发给自己的信息,是发给自己的信息即做出相应处理,否则不做处理。响应数据帧中不含地址信息,通过定时轮询,完成后延时直接启动下一个作业。发送或接收数据无数据校验处理。发送数据帧和响应数据帧的格式如图3所示,发送数据帧占2个字节,Byte1为从站地址,Byte2为功能码;响应数据帧7个字节,Byte1~Byte5为响应值;Byte6为CR字符;Byte7为LF字符。

图3 发送和接收数据帧格式

3.1 PLC程序

正确完成硬件接线与模块参数设置后,通过编写PLC程序完成与在线张力传感器数据采集通信,S7-300 PLC主站发送数据帧由CP341的功能块FB8实现,接收数据帧由功能块FB7实现。为了实现对多个在线张力传感器从站的轮询,PLC程序中设计了一个轮询计数器,通过修改轮询计数器的值,来修改主站发送数据帧中的从站地址标识字符。

程序发送/接收数据轮询时序如图4所示,当T1=T2时占空比1∶1,T1开始时,发送数据准备,延时T11,发送数据同时清除接收数据缓冲区;T2开始时接收数据,延时T21,将数据从接收缓冲区转移到指定的从站数据存储区中,延时T22,修改轮询计数器,准备轮询下一个从站。

图4 程序发送或接收数据的轮询时序

从在线张力传感器接收到的数据为ASCII字符,需将其转换成整数类型,便于在上位机显示记录。如发送请求命令“d”或“s”,则从站返回数据Byte1~Byte5中Byte5为空格,Byte1~Byte4为实际响应数据,响应数据表如图5所示。

图5 张力传感器响应数据表

图5中,Byte1(千位)有3种类型的ASCII字符响应:“1~9”为数字符号;“-”为负数符号;“sp”为空格符号,表示数字“0”。对应的Byte2~Byte4响应ASCII字符如图5所示。Byte1~Byte4字符(CHAR)转换成整数(INT)的FC部分程序如下:

//Byte1变量转换成整数

L #char1//检查字符1(Byte1)的值是否在30H~39H之间

L 57

>I

JC err

TAK

L 48

JC err//如不,则转到err

-I//计算Byte1

L 1000

*I

T #char1tmp

//Byte2变量转换成整数

L #char2//检查字符2(Byte2)的值是否在30H~39H之间

L 57

>I

JC err

TAK

L 48

JC err//如不,则转到err

-I//计算Byte2

L 100

*I

T #char2tmp

//Byte3变量转换成整数

L #char3//检查字符3(Byte3)的值是否在30H~39H之间

L 57

>I

JC err

TAK

L 48

JC err//如不,则转到err

-I//计算Byte3

L 10

*I

T #char3tmp

//Byte4变量转换成整数

L #char4//检查字符4(Byte4)的值是否在30H~39H之间

L 57

>I

JC err

TAK

L 48

JC err//如不,则转到err

-I//计算Byte43

L 1

*I

T #char4tmp

L #char1tmp//Byte1~Byte4相加

L #char2tmp

+I

L #char3tmp

+I

L #char4tmp

+I

T #Result//Byte1~Byte4整数转换结果

BEU

err:NOP 0

上述程序给出了当Byte1为“1~9”、Byte2~Byte4为“0~9”的ASCII字符时,字符(CHAR)转换成整数(INT)的程序实现方法。

3.2 上位组态程序

上位监控系统采用iFIX组态软件,通过OPC与S7-300 PLC进行以太网通信,将采集到的PLC在线张力传感器数据在上位机上显示、记录、超限报警,并形成历史记录便于数据分析和跟踪追溯。

4 结束语

基于ASCII通信的在线张力传感器数据采集系统,可对多台张力传感器检测数据进行实时采集,通过张力传感器的数字输出接口将其集成到现有的基于PLC的DCS系统中,组网方便,人机交互界面友好,数据处理灵活,系统投资成本也得以降低。现场实际使用表明,基于CP341串口通信模块的RS-422全双工数据采集系统,实时性好、稳定性高,为化纤产品的质量监控提供了有效手段。

猜你喜欢

接收数据发送数据轮询
基于等概率的ASON业务授权设计∗
低复杂度多输入多输出雷达目标角度估计方法
一种车载自组织网络的媒体接入控制协议
基于马尔科夫链的LoRaWAN网络节点性能分析
带标记方式的CRDSA++协议性能分析*
使用IPSec安全传输数据
单片机模拟串口数据接收程序的实现及优化
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
基于ESPRIT的ULA波达方向估计改进算法