基于KSZ8873的双网口协议转换模块设计
2 软件设计
本文引用地址:https://www.eepw.com.cn/article/281884.htm2.1 软件架构
软件按照分层思路设计,有驱动层、适配层和应用层。如图2所示。
驱动层主要完成与硬件相关的寄存器配置,从硬件寄存器接收数据,传入适配层,或从适配层接收数据,传给硬件寄存器。
适配层隔离了应用层和驱动层的耦合,实现Modbus-RTU协议、Modbus-TCP[3]和IEC104协议的解析,根据不同协议从应用层获取相关数据,进行格式组帧后,传入驱动层发送,或者从驱动层获取数据帧,按照不同协议解析出有效数据,传入应用层。
应用层主要完成数据存储和映射功能,把来自于不同协议的数据进行综合,按照一定格式进行存储,并实时刷新。
2.2 软件流程
软件流程如图3所示。进入主函数后依次进行MCU、驱动层、适配层和应用层的初始化工作,再进入主循环,主循环共包括3个子任务,RS232子任务、RS485子任务和网口子任务。每个子任务主要完成从驱动层接收并解析数据帧,传入应用层;或者从应用层获取实时数据,按照协议进行组帧后,传入驱动层发送。
为了提高软件执行效率和可靠性,采用时分方式进行子任务调度,调度时间间隔为10ms。系统使用1ms的时钟节拍工作,进入主循环前时间计数器t清零,第10ms调用RS232子任务,第20ms调用RS485子任务,第30ms调用网口子任务,并清零时间计数器t。
3 组网模式
菊花链式的组网模式可以替代原有RS485总线。再增加一条网线,可以实现环网,起到冗余作用,提高网络的可靠性[5]。 如图4所示。虚线表示增加的网线。
4 结束语
本文介绍了一种基于KSZ8873芯片的双网口协议转换模块,能够实现RS485/RS232总线与网口的物理层转换,再通过软件实现不同总线上不同协议的转换。使用该模块既可以替代现有RS485总线,也可以在新建系统时实现设备网络化工作,并且能够快速实现环网,使得网络更加可靠,低成本和灵活配置也是其主要特点。
参考文献:
[1]KSZ8873 Datesheet[M].Micrel,INC,2009
[2]RMII Specification[M].National,INC,1998
[3]Modicon Modbus Protocol [M],ABB,INC,2002
[4]PIC32M5XX/6XX/7XX Datesheet[M].Microchip Technology INC,2009
[5]王浩, 彭川虎, 王平, 等. 用于数字化变电站的嵌入式环网模块设计[J].电测与仪表,2012,49(12):86-91
评论