基于Modbus的EPS应急电源监控系统的研究
随着环保和消防要求的提高,柴油发电机逐渐失去优势,而由于逆变技术的成熟发展,新型无公害、高可靠性、动力型的大型应急电源EPS(EmergencyPowerSupply)逐步成为代替柴油发电机组的“绿色电源”,目前已经在建筑领域得到大面积推广。同时,随着微处理器、计算机和数字通信技术的飞速发展,计算机控制已经扩展到了几乎所有的工业领域。将所有的功能集成于统一开放的平台上,通过人机界面可以使复杂的控制和数据处理变得更加简单。
2 监控系统设计
美国电子工业协会(EIA)制定的RS485标准作为一种多点差分数据传输的电气规范,现已成为业界应用最为广泛的标准通信接口之一。这种通信接口允许在简单的一对双绞线上进行多点、双向通信。平衡发送、平衡接收,具有传输距离远、通信速率高、抗干扰能力强、软硬件支持丰富与现场仪表接口简单、易于实现和扩展等特点。接口总线上可连接32个设备,加中继器后最多可达255个设备。因此,许多领域都采用RS485作为数据传输链路,例如汽车电子、电信设备、局域网、蜂窝基站、工业控制仪器仪表等。本系统采用一台PC作为上位机,下位机由若干台P89C51单片机担任,监控系统结构图如图1所示。
上位机的RS232串行口通过RS232/RS485转换器转换为RS485总线,各下位机通过MAX485芯片连接到总线上。各个下位机设有自己惟一的地址,且下位机之间不能通信,一切通信受上位机控制。开始时,所有下位机都处于监听状态,等待上位机发出指令。当上位机发出指令时,所有下位机都接收并且将其中的地址帧与自己的地址比较,如果相同则继续接收后面的指令或数据,若不同则不予理睬。
3 通信协议Modbus
Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其他设备之间可以通信。他已经成为一通用工业标准,不同厂商生产的控制设备利用其可以连成工业网络,进行集中监控。
Modbus协议定义了消息域格式和内容的公共格式,如表1和表2所示,使控制器能认识和使用消息结构,而无需考虑通信网络的拓扑结构。他描述了一个控制器访问其他设备的过程,当采用Modbus协议通信时,此协议规定每个控制器需要知道自己的设备地址,识别按地址发来的消息,如何响应来自其他设备的请求,如何侦测错误并记录。
系统通信采用主从技术,即只有主设备能发出查询,从设备响应消息。主设备可单独和从设备通信,从设备返回一个消息。如果采用广播方式(地址为零)查询,从设备不作任何回应。
Modbus协议有两种模式:ASCII和RTU模式。一个Modbus通信系统中只能选择一种模式,不允许两种模式混合使用。本系统采用RTU模式,消息的起始位以至少3.5个字符传输时间的停顿开始(一般采用4个),在传输完最后一个字符后,有一个至少3.5个字符传输时间的停顿来标识结束。一个新的消息可在此停顿后开始。在接收期间,如果等待接收下一个字符的时间超过1.5个字符传输时间,则认为是下一个消息的开始。校验码采用CRC16方式,只对设备地址、功能代码和数据段进行。整个消息帧必须作为一连续的流传输,传输速率较ASCII模式高。
Modbus可能的从设备地址是0~247(十进制),单个设备的地址范围是1~247。可能的功能代码范围是十进制的1~255。其中有些代码适用于所有的控制器,有些是针对某种Modicon控制器,有些是为用户保留或备用。
4 软件设计
本系统上位机软件采用VC6.0开发,操作系统为Windows98,上位机向串口读写数据,通过485总线将控制信息送到现场的每台EPS设备,就可以监控网络上任何一台EPS设备,同时现场采集到的电压、电流等信号实时显示在上位机的界面上。
(1)人机界面子程序
包括实时信息动态更新及数字显示,异常判断及报警声音提示。
(2)串口通信子程序
在Windows98中将串行口和文件的操作统一起来。对他们打开、读、写、关闭等操作都使用相同的API函数,但是又是有区别的,比如串行口不能像文件一样被删除,这些差别体现在API函数中部分的参数设置上。在VC中设计串行通信程序时要用到一些通信的API函数,如CreateFile(),CloseHandle(),ReadFile(),WriteFile(),SetupComm(),WaitCommEvent()等。除上述几个函数外,还要经常用到一个重要的记录DCB(设备控制块)。DCB中记录有可定义的串行口参数,设置串行口参数时必须先用GetCommState函数将系统默认值填入DCB控制块,然后才可把用户想改变的自定义值设定。
PC机串行通信从调用CreateFile()函数开始,接着设置串行口波特率、数据位、校验位、停止位等参数和超时参数,最后选择一种工作方式来读写串行口。在Windows环境下,串行通信有4种方式可供选择:查询方式、同步I/O、异步I/O和事件驱动方式。这几种方式各有自己的优缺点:
①查询方式比较直接,但要占用大量的CPU时间;
②同步I/O方式直到读取指定的字节数或超时的时候才返回,这样很容易长时间地阻塞线程;
③异步I/O可以在后台读写数据,而在前台做其他的事情;
④事件驱动方式是由Windows通知应用程序某些事件什么时候发生,然后根据所发生的事情来对串口进行操作。
在监测系统中,由于事件的偶然性和要求传送的实时性,计算机常采用事件驱动I/O方式来进行现场监测。事件驱动I/O方式是指线程通过监视通信资源中的一组事件来进行I/O操作,这种方式类似于MSDOS下的中断方式,效率比较高。在实际项目应用和开发过程中,大多用的这种工作方式来实现PC机和下位机的通信。
上位机部分通信程序的实现过程如下:
5 系统抗干扰问题
实时监控系统在工业中的应用越来越多,由于现场的电气环境比较复杂,容易形成各种干扰源,特别是在较恶劣的工业环境中,因此研究解决系统抗干扰问题对确保系统的稳定运行非常重要。RS485本身具有较强的抗电磁干扰能力,但实际应用中仍然会出现一些问题,为此应注意以下几个方面:
(1)RS485支持半双工或全双工模式网络拓扑,一般采用终端匹配的总线型结构,不支持环形或星型网络。最好采用一条总线将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。
(2)采用双绞线作为RS485传输线时,虽然对电磁感应噪声有较强的抑制能力,但对静电感应引起噪声的抑制能力较差,因此应选用带屏蔽的双绞线,同时双绞线的屏蔽层要正确接地。
(3)通过在总线两端A,B加入匹配电阻的方法,解决信号反射问题。
(4)对于RS485网络,合理的接地系统对系统的可靠性很重要。基于共模干扰和EMI问题,选择集中供电方式,可基本消除各处参考电位不等的情况。
(5)在切换大功率感性负载、闪电等过程中,都会产生幅度很高的瞬态干扰,如果不加以适当防护就会损坏接口。对于这种瞬态干扰可以采用隔离或旁路的方法加以防护。
6 结语
本文提出的主从分布式多机通信系统硬件电路简单、控制灵活。用VC语言实现上位机数据传送的优点是可有效地实现通信的底层控制。由于RS485总线通信方式仍属于串行通信方式,通信速度偏低,若要提高通信速度,还需对控制系统做进一步的改进。
文章版权归西部工控xbgk所有,未经许可不得转载。