Windows CE设备与PLC串行通信的实现
2.2 双方通信程序的设计
根据对数控切纸机控制系统的机械、电气、开关量等控制要求,上下位机之间要就多种不同的数据、指令进行交互。并且这些数据、指令的数据位的长度不同。举其中的机器状态、机器参数、控制命令三种常见的指令为例。机器状态要求下位机不间断发送的机器的实时状态,一般包含数据量不大。机器参数往往是在开机发送或者重新设置了机器的参数时发送,机器参数的数据个数较多,但发送的次数较少。控制命令,只有操作者通过控制面板上的操作时才会发送,它发送的内容也不多,发送频率也较低。但由于使用Fx2n PLC的RS数据通信时,在每次进行通信时,必须知道本次要接收内容的个数。如果把不同类型的数据采用定长结构的发送方式,程序设计起来较为简单,但是其中包含了大量的无用数据,发送的效率较低。所以在进行PLC通信时,定义了下面的通信的协议形式:
本次通信标志 | 下次发送的个数 | 本次发送内容 | 结束标志 |
其中协议中具体含义如下表所示:
协议内容 | 含义 |
本次通信标志 | AA:机器状态 AF:机器参数 AC:控制命令 |
下次发送的个数 | 用于PLC确定下次接收的个数 |
本次发送内容 | DATA |
结束标志 | FF |
表2 通信协议的格式
这样,通过在本次通信中加入下次通信的个数,在PLC端可以通过程序判定确定下次发送内容的个数,进行处理。这样可以提高发送的效率,保证数据的实时性。具体的发送流程如下图所示。
图3 通信流程图
2.3 对数据接收缓冲区的处理
通过研究Windows CE提供的驱动程序代码可以看出,驱动程序通过维护内部的软件缓冲区来保障当应用程序不能及时响应数据到来时,数据会先保存在驱动程序的数据缓冲区中,而不会发生数据丢失的现象。但是对于实时响应要求很高系统来说就是有害的。这样最新到来的数据不能被应用程序及时处理,而被堆放到了缓冲区的后部等待前面的数据处理完成后才能被处理,降低系统的实时性。为了减少驱动程序数据缓冲区对系统实时性的影响,可以通过在串行通信的程序中加入对串行API函数 PurgeComm的调用来及时清除缓冲区的内容,以保证新到的数据及时被应用程序处理,提高通信的实时性。
3 总结
本文详细分析了在Windows CE下进行串行通信的特点,并设计了Windows CE与PLC进行串行通信的程序流程和通信格式。实现了通过串行通信连接的由Fx2n PLC与PC104模块组成的上下位机控制系统,整套系统已经成功的应用到了高档数控切纸机的电气和运动控制。产品经过了用户的长期检验和国家的技术鉴定,合作企业三年内已经取得近600多万元的经济效益。充分证明了整个系统结构的可行性和可靠性。并且可以通过借助Windows CE的可移植性和强大的网络功能以及PLC通用性等特点,把这种通过串行通信连接构成的上下位机结构方式应用推广到其它类似的机电一体化产品中的控制系统应用之中。
参考文献:
[1] Microsoft Corporation, Platform Builder for Windows CE 5.0 Help [OL], 2004.
[2] Douglas Boling, Programming Windows CE [M], 2001.
[3] Mitsubishi Electric Corporation, FX2n series Programmable Controller User's Manual [M], 2001.
[4] 田书峰,李欣.单片机与三菱PLC无协议串行通讯的实现[J],微计算机信息,2005,(10).[5] 陈向群,王雷等,Windows CE.NET 系统分析及实验教程[M],机械工业出版社,2002.
评论