①RS-232转RS-485。实现RS-232到RS-485电气信号的转换,这是第一级RS-485总线。
②10口的485HIJB(集线器)。如图6所示,485HUB是由1个主机和10个从机的零延时的RS-485接口组成,这是在逻辑上实现主从式结构的基础。当主机端下行发送数据时,连接在10个从机接口上的所有接口都可以接收到数据;而当某个从机接口上挂接的节点上行发送数据时,只有主机节点(PS 端)和挂接在同一个从机接口上的其他节点可以接收到数据。这是第二级RS-485总线。[!--empirenews.page--]
③单片机节点。有4种节点,即节能灯状态采集节点、温度采集节点、供电电压采集节点和模式控制节点。每个单片机节点的通信接口都采用零延时的RS-485接口电路,每一个节点都有自己的地址,用于PC端寻址。
理论上,SN75HVD3082的一条总线可以连接多达256个节点,因此在每个从机接口上可以扩展更多的节点;同时在RS-232转RS-485转换器的总线上也可以连接更多的485HUB。这样就可以实现硬件上的扩展。
4 通信协议
采用9600 bps的波特率,固定长度帧结构,帧长度10字节。帧信息定义如下:帧头(0x55 0xAA)、命令(1字节)、数据(4字节)、从机地址(2字节)、校验(1字节)。
在通信协议中采用帧校验和帧超时,以达到软件抗干扰的目的。
①帧校验:采用累加和校验。在发送时,把帧头、命令、数据、从机地址几个域相加并取最低字节填充到校验域。如果节点不处于接收状态,则启动发送,否则等待;如果在未超时,并完整地接收到10字节时,把帧头、命令、数据、从机地址几个域相加,并与校验域比较,相同表示成功接收到1帧数据。
②帧超时:帧超时定义是,在接收到第一个字节时,进入接收状态,并设置8ms定时,以后每接收到一个字节,重置8ms定时。正常情况下,接收一个字节约1 ms时间。如果超过8ms,则退出接收状态,丢弃当前接收帧,回到空闲状态,等待下一帧的接收。
在程序设计中,帧超时的定义与程序的架构和波特率有关,原则上只要大于1个字节的接收时间就可以了。这里选择8ms与程序的架构有关。
5 测试结论和应用前景
在设置了所有节点的地址后,即可在现场对系统进行测试。测试方案是,在PC机端运行测试软件,约每隔50ms发送一次测试命令轮询所有的节点。每一次发送都要求有数据返回,否则视为通信错误。软件连续运行7天,没有发现错误,说明系统稳定可靠。