刘丕亮; 李扬; 崔桂梅
【期刊名称】《《电气传动》》
【年(卷),期】2019(049)009
【总页数】4页(P60-63)
【关键词】WinCC监控; 高速数据传输; 单片机; 数据缓存技术; 整体打包
【作 者】刘丕亮; 李扬; 崔桂梅
【作者单位】内蒙古科技大学信息工程学院 内蒙古 包头 014010
【正文语种】中 文
【中图分类】TP274.2
WinCC作为工业现场监控系统,不仅能够与可编程控制器(PLC)进行数据交互[1],而在很多工业现场控制中单片机往往才是下位机控制的主体。现场采集的数据可能小于WinCC的最短归档周期,不能满足数据存储速度的需求。所以需要更加灵活、更高速的数据通讯才能实现与智能操控机的通讯。
WinCC变量默认的归档最短周期为500 ms,实验得出,若采用事件控制变量归档,当WinCC归档时间小于200 ms,即有1%左右的误码率,当归档时间为75 ms时,误码率约为4%。此时数据重复以及漏存现象较为严重,很难对数据进行有效地分析。而西门子公司在进行100 ms的快速数据传输时需要基于S7-400PLC的硬件基础,而现场设备若都采用S7-400PLC作为控制器,会使硬件成本增加。除此之外,WinCC提供的用于SIMATIC S5/S7和505系列PLC专用通道以及PROFIBUS DP/FMS、DDE等通用通道都需要专用的通讯协议,需要另购买协议授权或需要编辑相应接口程序,无法灵活更改。文献[2]采用的工业以太网建立的WinCC与S7-300进行通讯,可以进行组网运行,但是数据集传输速度仍旧依靠WinCC的周期性归档。文献[3]的通讯方法是具有S7-400PLC自带的AR_Send系统功能块提出的,使用AR_Send功能块能够完成WinCC对S7-400PLC的高速数据采集。能够完成100 ms的高速数据采集,但是仅限于S7-400PLC才能使用。文献[4]是基于S7-300/400/1500 PLC提出的,能够完成WinCC对S7-300/400/1500 PLC的高速数据采集。据文献介绍能够达到10 ms的采集速度,但是仅局限于WinCC+PLC的通讯模式。文献[5]是针对WinCC与自定义设备的通信,采用OPC和Modbus协议,但是采用OPC的通讯模式数据传输速度较慢,并不能完成WinCC与自定义设备的高速数据采集。相比于Visual Basic 6.0,LabView等软件,WinCC具有针对工业生产的强大报表和画面组态功能,使得WinCC在工业生产中具有广泛的应用。WinCC不仅和PLC能够实现数据通讯,WinCC+单片机的控制方式在工业生产中也尤为常见。在使用WinCC对现场生产过程中的参数进行监控时,数据通过单片机集成的数据采集和通讯系统发给WinCC,由WinCC进行显示,同时WinCC将接收到的数据归档到数据库,以便后期调用和分析。单片机通过RS485与WinCC进行数据交互。WinCC通过串口接收到单片机发送来的数据后存储到Microsoft SQL Serve数据库中,并将需要显示的数据同步显示到组态画面上。该数据传输模式采用事件中断方式触发,
具有很强的实用性和较低的误码率。
本研究基于WinCC与单片机通讯,使用MSComm控件设置串口和进行数据传输。采用数据接收和数据存档分开处理、同步运行的方式实现数据的高速归档。在分析了大量WinCC数据接收的数据,并研究了Modbus等通讯协议后,决定采用二进制作为数据传输方式,相比于以文本型作为数据传输方式,传输同样数据的时间能够减少1倍。波特率设置为115 200,可以在较短时间内接收较大的数据量。并且每一组数据都采用了首尾校验和累加校验结合的方式以确保数据的正确性。使用一个字节的二进制码表示数据的不同地址,使用另外一个字节的二进制码代表数据的不同操作,这样能够较好地区分数据的种类,将它们赋值给相应的WinCC内部变量。
1 基本原理
单片机与WinCC对不同的设备和变量使用不同的地址码和操作码进行区分,多次采集的数据进行缓存后再发送。
本文高速数据接收的结构图如图1所示。WinCC以中断的方式进行数据的接收和处理以及存储。
图1 高速数据接收结构图Fig.1 The structure block diagram of high speed data receiving
高速数据采集的过程可用如下表达式表示:
单片机:
式中:V[c]为单片机存储数据的数组,c为数组能存储的最大变量个数减1。U[b]为在加上相应变量数据的地址码、操作码和数据长度以及求和校验后的变量包,将变量包U[b]按照采集的先后顺序依次存储到数组V[c]中。每存1个数据,b都加1,所以b+1的数值即为变量的个数。C[d]为固定的起始码和截止码,还有读取到的动态的时间戳,d为固定的字节数,把这些统一放到数组Y[n]中发送,数组Y[n]需要有足够的空间存放单次发送的数据。上位机读取到的数组Y[n],由WinCC对Y[n]进行首尾校验,首尾校验成功后,将数据包中b的值取出。然后根据b的值来确定对WinCC内部变量赋值时循环执行的次数。每执行1次循环,则b减1,直到减到0为止。
WinCC的正常数据采集周期为T2,高速数据采集的周期为T1=T2/b,数据包U[b]的个数为b+1个,在同一时间读取多个变量,间接地实现了与单片机之间自定义通讯的高速数据采集。
该方法适用于WinCC与单片机的自由通讯,其功能全部使用VB脚本编程,无需增加额外的数据处理和传输模块或其它软件,不增加成本。只需要通过程序就能完成高速的数据采集。此数据可以是整型,也可以是浮点型数据。
2 实现方法
2.1 单片机和WinCC的数据传输形式
在单片机中建立1个缓存数组,单片机将地址码、操作码以及数据的位数加在变量数据之前,求和校验放在最后,形成单个的变量包。然后将加了地址码和操作码的变量包存入待发送的数组中,等到数组达到一定的变量包数时,再加起始码和截止码以及时间戳后,以整包2进制数的形式发送给WinCC。时间戳为2个字节,是单片机定时器给出的0~65 535递增的16进制数,用以数据校验出错时的数据补发。每个变量组成变量包,数据格式如表1所示。单片机每次发送给WinCC的全部数据发送格式如表2所示。表1、表2中字符全部为16进制。固定的起始码和截止码用以校验和确定数据包的首尾。
表1 单个变量包数据格式Tab.1 The data format of single variable packageimages/BZ_63_269_1121_1186_1275.png
表2 单次数据发送格式Tab.2 The send format of single
dataimages/BZ_63_269_1417_1186_1575.png
2.2 WinCC的高速数据接收
在进行高速数据传输时,需要设置每次发送的变量个数尽可能多,WinCC每接收到1组下位机发送的信号,MSComm控件就会产生1次On-Comm事件。通过监控OnComm事件,就可以判断下位机一共给上位机发送了几次数据。高速数据传输原理图如图2所示。
图2 高速数据传输原理图Fig.2 The schematic block diagram of high speed data transmission
单片机以整包的形式将数据发送给WinCC。WinCC将整包数据Y[n]存入Table0,数据库中Table0的数据如图3所示。
图3 Table0数据库数据Fig.3 The database data of Table0
每当有数据包Y[n]被存入数据库表Table0中,事件触发的全局脚本会从Table0中取出最新存入的数据包Y[n],对其进行循环拆解和变量赋值,将拆解出的数据赋值给相应的变量,然后将相应变量的数据存储到Table1中,并通过WinCC的内部变量组态显示出来。通过修改单次数据发送的变量个数,能够在1次数据接收中接收不同数量的变量。
Table1中的数据如图4所示,该段单个数据的采集周期是10 ms,设置以每10组数据组成1个数据包的形式发送到WinCC,发送周期为100 ms。
图4 Table1数据库数据Fig.4 The database data of Table1
考虑到小于100 ms数据对于人来说反应时间太短,所以在WinCC使用MSHFGrid控件对数据库表Table1中的数据以表的形式导出并可生成Excel数据表和数据图。表名和图名全部是生成表和图的时间。
3 实验测试结果
3.1 实验目的
针对本文提出的WinCC高速接收单片机的数据进行了大量的实验以确定该方法的有
效性和高速数据传输的最大数据量。
3.2 实验原理及步骤
作为上位机监控现场的WinCC和单片机构成了整套高速数据传输的系统。单片机按照相应的协议格式写好的16进制的数据包Y[n],通过串口发送给WinCC,WinCC接收数据并显示到画面中。
图5为WinCC显示画面。
图5 WinCC显示画面Fig.5 The display screen of WinCC
3.3 实验结果
图6为单片机发送周期为2 500 ms的正弦信号时,WinCC以500 ms的正常归档周期采集的常规数据和使用本文的高速数据传输采集到的数据对比图。
图6 常规数据采集和高速数据采集对比图Fig.6 The contrast diagram of conventional data acquisition and high speed data acquisition
从图6可以看出500 ms的常规数据采集,信号有较严重的失真,而使用本文的高速数据采集方法能够较好地保留信号的完整性。
通过大量的实验,得到如下结果:在保证数据正确率的前提下,通过串口给WinCC
发送数据包的最短周期为100 ms,进行循环赋值的次数为10次,即WinCC与单片机之间单个变量最短的高速数据接收周期为10 ms。此时的数据错误率约为0.04%。
经校验出错的数据会在数据库表相应的位置留空,提供2种解决方案以供参考:
1)对出错数据的前一个和后一个数据求平均数进行补位。这种补数据的方法不会影响高速数据的正常接收。
2)WinCC将错误数据包的时间戳发送给串口,下位机会将对应的时间戳的数据包再次发送给WinCC,WinCC校验正确后会将缺的变量的数据存储到数据库表的相应位置。这样的数据还是采集到的数据,但是,如果缺失数据是由于串口接收速度过快引起的,则容易造成数据的堆积。
4 结论
本文提出的基于WinCC与单片机的高速数据采集方法能够有效地解决WinCC与单片机之间数据通讯速率低的问题,数据采集周期由原来的500 ms缩短到10 ms。本方案的提出,使得在工业上采用上位机WinCC+下位机单片机的工作模式有了一种高速、便捷、无需附加成本的高速数据采集方案。
所提方法采用二进制的传输模式,有效地提高了数据传输的速度,同时也保证了数据传输的准确性。能够保持信号的完整性,在10 ms的采集速度下基本不会失真。
不同于常规的WinCC+PLC的工作模式,采用WinCC+单片机的模式,解决了其高
速数据传输的问题,能够使WinCC作为工业现场监控系统获得更广泛的应用。
参考文献
【相关文献】
[1]甄立东.西门子WinCC V7基础与应用[M].北京:机械工业出版社,2011.
[2]崔桂梅,顾婧弘,刘丕亮.基于西门子PLC网络化实验平台的设计[J].实验室研究与探索,2015,4(3):212-215.
[3]姜丽波,张根宝.WinCC高速数据采集应用[J].电气传动自动化,2006,28(2):41-43.
[4]许洪韬,谭建平,杨俊,等.浮点型数据的WinCC高速采集方法[J].锻压技术,2015,25(3):122-126.
[5]唐磊,周伦,唐波.WinCC与自定义设备通信的研究与实现[J].仪表技术与传感器,2014,32(5):32-34.
因篇幅问题不能全部显示,请点此查看更多更全内容