2.2 Modbus协议栈设计
控制器能设置ASCII或RTU两种传输模式中的任何一种在标准的Modbus网络中通信。目前最常用的是RTU模式。在消息中的每个8 bit字节包含2个4 bit的十六进制字符,在同样的波特率下,可比ASCII方式传送更多的数据[1]。本设计采用Modbus RTU传输模式,使用RTU模式的关键是帧字符时间的处理。要求至少为3.5个字符时间的空闲间隔将报文帧区分开,同时整个报文帧必须作为一个连续的数据流传输,2个字符之间的空闲间隔小于1.5个字符时间[2]。
协议栈采用分层设计,分为协议状态机处理部分和硬件相关部分。协议状态机部分,通过查询协议事件状态维护协议状态机,根据不同状态对接收帧进行校验以及对功能码的处理函数。硬件相关部分包括对定时器和串口的初始化配置以及相应的定时器中断、串口接收发送中断。协议栈程序的流程图如图5。应用程序将AD采样后处理好的数据存储在特定的缓冲区中,供上位机查询。协议栈的接收和发送Modbus RTU数据帧是通过一个由硬件提取层的调用驱动状态机来实现的。协议栈开T3.5字符计时中断、接收中断和发送中断,在主函数循环中对事件标志进行查询和处理。
3 上位机监控软件的设计
在智能控制器监控系统设计中,智能控制器与上位机系统通信采用主从方式,上位机的作用主要是实现“四遥”功能。智能控制器一方面将实时数据和信息上传,另一方面接收上位PC机发出的控制命令。断路器智能控制器系统中,上位机监控主要实现如下功能[4]:
(1)实时接收下位机(智能控制器)上传的数据,采用数据列表和实时曲线的方式显示。上位机接收下位机定时发送的数据,包括:三相电压、三相电流、中性线电流、有功功率、功率因素及累计电量等;可随时读取下位机中的数据。操作人员可在监控机上随时向下位机发送查询帧,索取当前断路器中的运行数据。
(2)具有在线设置下位机参数及发送远程合分闸命令功能。这样便于操作人员在远离现场的情况下安全地控制和操纵断路器的运行。
上位机监控软件可采用VB、VC等高级语言实现,亦或在组态软件上进行二次开发。考虑到人机界面构建简易、程序便于集成和升级,设计中采用Visual C++ 6.0作为开发工具。在9 600 b/s波特率下,设置Modbus帧间间隔为50 ms。超时时间为300 ms时,对节点地址为10的额定100 A断路器线路电流有效值进行监控,监控测试界面如图6。
本文从硬件和软件上设计实现了Modbus智能断路器,给出了包括监控上位机软件在内的整套应用方案,通过上位机监控软件实现对断路器的“四遥”等联网应用功能。通过现场实验测试表明,系统运行稳定可靠、实时性高,为断路器的网络互联提供一种较好的解决方案。