CN110531686B - 一种基于单主多从协议实现多主机的装置及其方法 - Google Patents
一种基于单主多从协议实现多主机的装置及其方法 Download PDFInfo
- Publication number
- CN110531686B CN110531686B CN201910928584.1A CN201910928584A CN110531686B CN 110531686 B CN110531686 B CN 110531686B CN 201910928584 A CN201910928584 A CN 201910928584A CN 110531686 B CN110531686 B CN 110531686B
- Authority
- CN
- China
- Prior art keywords
- data
- processor
- host
- buffer area
- slave
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000004891 communication Methods 0.000 claims abstract description 50
- 238000002955 isolation Methods 0.000 claims abstract description 16
- 230000004044 response Effects 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 239000003381 stabilizer Substances 0.000 claims description 3
- 238000011084 recovery Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 11
- 230000003993 interaction Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Abstract
本发明提供了一种基于单主多从协议实现多主机的装置及其方法,包括:处理器模块、至少两个主机接入模块、至少一个从机接入模块;所述主机接入模块和从机接入模块分别连接所述处理器模块,用于实现主机和处理器模块、从机和处理器模块之间的通信。本发明在原单主485网络上扩展1路主机接口,共具有3个RS485接口,每个口都采用电源隔离和信号隔离,带有TVS,自恢复保险丝。结合缓存协调的软件算法,当两主机同时通信时,另一路主机的数据被缓存,待总线空闲时,再通信另一路,完全解决了单主多从协议上多主机的通信故障问题,避免了数据碰撞,且合理利用了处理器内存资源和逻辑单元资源,具有通信可靠,效率高的有益效果。
Description
技术领域
本发明涉及单主多从通信领域,具体涉及一种基于单主多从协议实现多主机的装置及其方法。
背景技术
随着物联网概念的提出,相关产业的落地,物联网产业迎来飞速的发展,遍布于世界各个角落的电子传感器,仪表,设备,控制器等等,电子终端设备都有接入物联网的需求,而绝大多数存量终端并不具备多余的接口来加入物联网,这就使得物联网最后1公里面临巨大挑战。
在存量市场上,仪表,控制器,传感器等等,有很大部分采用的是2线制485,而所支持的协议绝大多数是MODBUS协议,自由协议。Modbus协议采用的是简单的主从应答机制,即主机向从机发送请求,从机对主机的请求进行应答。该协议公开发表且无版权税,有许多公司的产品支持Modbus协议。同时,Modbus网络在通讯的时候有着较高的可靠性,并且其帧格式较简单,较易进行开发。按照Modbus协议规定,Modbus网络中只能存在一个主机,其余均为从机。这样一主多从的结构存在以下几个问题。首先,一旦主机出现故障,则整个网络陷于瘫痪,无法实现对从机的查询工作。其次,单主机网络架构无法实现多主机对于网络内部资源的访问。由于单主机网络架构存在以上的缺点,如何在Modbus网络中实现多主机共存,并实现多主机对于网络的访问的成为当今Modbus网络所需要解决的一个难题。
如果为了实现万物互联而替换硬件,更改程序,改变架构,那么将会耗费巨大的人力物力,并且也使得原有设备变的不稳定。单主多从协议不支持多主机,目前的通用做法就是强行在总线上加入主机,然后通过在主机上设置不同的采样周期,或者是通过某种手段监测总线空闲,来减少两个主机的冲突。然而这种手段并不可以绝对避免数据碰撞。为此,申请号为201721065206.8的中国专利,公开了一种基于Modbus协议的多主机通讯系统:当通讯系统运行时,多个Modbus通讯主机同时请求Modbus通讯从机信息时,利用中断处理方式,将多个Modbus通讯主机的通道分别进行标记,存入DMA缓冲区,进行轮询中断处理,首先将第一个Modbus通讯主机的请求信息通过RS485接口模块发送给Mod bus通讯从机,此后根据Modbus通讯协议在中断程序中进行Modbus通讯主机和Modbus通讯从机信息的交互,当交互完成后,释放Modbus通讯主机和Modbus通讯从机的通路,然后进行第二个Modbus通讯主机和Mod bus通讯从机的通讯交互,依此类推。
上述对多主机Modbus通讯通道的分别进行标记,存入DMA缓冲区,并轮询中断的方式,轮流进行主从交互,虽然实现了多主机对于网络内部资源的访问,来减少两个主机的冲突。然而这种手段并没有从根本上解决数据碰撞,且轮询中断、轮流进行主从交互的单线程执行方式,并没有合理利用单片机内存资源和逻辑单元资源,导致通信效率低下,迫切需要加以改进。
发明内容
为解决上述问题,本发明提供了一种基于单主多从协议实现多主机的装置及其方法。本发明在原单主485网络上扩展1路主机接口,共具有3个RS485接口,每个口都采用电源隔离和信号隔离,带有TVS,自恢复保险丝。结合缓存协调的软件算法,当两主机同时通信时,另一路主机的数据被缓存,待总线空闲时,再通信另一路,完全解决了单主多从协议上多主机的通信故障问题,避免了数据碰撞,且合理利用了处理器内存资源和逻辑单元资源,具有通信可靠,效率高的有益效果。
为实现所述技术目的,本发明的技术方案是:一种基于单主多从协议实现多主机的装置,包括:处理器模块、至少两个主机接入模块、至少一个从机接入模块;
所述主机接入模块和从机接入模块分别连接所述处理器模块,用于实现主机和处理器模块、从机和处理器模块之间的通信。
进一步,所述处理器模块包括型号为STC15W的处理器及其最小系统。
进一步,所述主机接入模块、从机接入模块采用型号为ADM2483的磁隔离RS485收发器。
进一步,还包括:
电源输入模块,采用型号为XL1509的线性稳压器,将输入电源降压至所述处理器的工作电压;
显示模块,用于主机和处理器、从机和处理器的通信状态显示以及处理器运行状态的显示。
进一步,还包括看门狗模块,看门狗模块包括型号为SGM706的多功能微处理器监控电路,及型号为MT9700的功率开关电路,用于防止不明原因导致的装置死机。
作为本发明的一种优选的实施方案,基于上述内容,还包括隔离电源模块,隔离电源模块采用型号为B0505S的电源模块,并连接所述功率开关电路,用于给各个主机接入模块、从机接入模块供给相互不相关的电源,隔断电的联系,防止相互间的干扰。
一种基于单主多从协议实现多主机的方法,使用了上述的基于单主多从协议实现多主机的装置,其包括以下步骤:
S1:处理器时刻监控各个主机发来的数据,并只存储1个通信帧的数据;
S2:处理器将以所述步骤S1中,来自不同主机的数据存储于不同的存储区,且不相互重叠;
S3:处理器检测这各个存储区是否有新的数据,如果有并且从机总线空闲,则发送此存储区的数据到从机总线;
S4:发送完毕后,开始等待从机总线的响应信息,如果在预设的时间内收到数据,则立即将接收到的数据发送到该存储区对应的主机处,如果没有接收到数据那么处理器继续监控存储区。
作为本发明的一种实施例,所述步骤S1中,有主机1和主机2两个主机接入处理器,对应存在第一主机接入模块和第二主机接入模块;
所述步骤S2中,处理器内部划分A存储区、B存储区两个存储区。
进一步,处理器将所述A存储区划分为A接收缓冲区、A发送缓冲区,处理器时刻监控第一主机接入模块,一旦接收到主机1发来的数据,立即存入A接收缓存区,同时监控A发送缓存区是否有数据,如果有立即发送回主机1;
B存储区划分为B接收缓冲区、B发送缓冲区,处理器时刻监控第二主机接入模块,一旦接收到主机2发来的数据,立即存入B接收缓存区,同时监控B发送缓存区是否有数据,如果有立即发送回主机2。
进一步,所述步骤S3和S4中,处理器时刻监控A接收缓冲区,B接收缓冲区,如果A接收缓冲区内有数据,立即将A缓冲区数据从处理器接口发出到从机接入模块的从机总线上,并开始等待从机总线的响应,如果从机总线不能响应,那么处理器继续监控B接收缓冲区和A接收缓冲区,但是此时先监控B接收缓冲区,如果从机总线响应了数据,那么处理器先将接收到的数据存入A发送缓冲区,然后再监控B接收缓冲区和A接收缓冲区;
如果B接收缓冲区内有数据,立即将B缓冲区数据从接口发出到从机总线,并开始等待从机总线的响应,如果从机总线不能响应,那么处理器继续监控A接收缓冲区和B接收缓冲区,但是此时先监控A接收缓冲区,如果从机总线响应了数据,那么处理器先将接收到的数据存入B发送缓冲区,然后再监控A接收缓冲区和B接收缓冲区。
本发明的有益效果在于:
本发明在原单主485网络上扩展1路主机接口,共具有3个RS485接口,每个口都采用电源隔离和信号隔离,带有TVS,自恢复保险丝。结合软件算法,实现了单主多从2线制485网络中不能实现多主机同时采集的问题,使数据可以被另外的设备采集,而不需要对原有程序进行变更,不需要做任何替换。将大幅减少升级成本和减少升级时间,减少升级风险。
本发明通过缓存协调机制,当两主机同时通信时,另一路主机的数据被缓存,待总线空闲时,再通信另一路,完全解决了单主多从协议上多主机的通信故障问题,避免了数据碰撞,且合理利用了处理器内存资源和逻辑单元资源,具有通信可靠,效率高的有益效果。
附图说明
图1是本发明基于单主多从协议实现多主机的装置模块化原理示意图;
图2是本发明电源输入模块的电路原理图;
图3是本发明看门狗模块的电路原理图;
图4是本发明隔离电源模块的电路原理图;
图5是本发明显示模块的电路原理图;
图6是本发明第一主机接入模块的电路原理图;
图7是本发明第一主机接入模块的电路原理图;
图8是本发明从机接入模块的电路原理图;
图9是本发明处理器模块的电路原理图。
图10是本发明基于单主多从协议实现多主机的方法模块化原理示意图;
图11是本发明的A功能块逻辑原理图;
图12是本发明的B功能块逻辑原理图;
图13是本发明的C功能块逻辑原理图。
具体实施方式
下面将对本发明的技术方案进行清楚、完整地描述。
一种基于单主多从协议实现多主机的装置,如图1所示,包括:处理器模块、至少两个主机接入模块、至少一个从机接入模块;
所述主机接入模块和从机接入模块分别连接所述处理器模块,用于实现主机和处理器模块、从机和处理器模块之间的通信。本发明在原单主通信网络上扩展1路主机接口,共具有3个通信接口,为多主机通信提供了硬件基础。
进一步,如图9所示,所述处理器模块包括型号为STC15W的处理器及其最小系统。STC15W支持外部RAM扩展,方便了各主机和从机之间的通信数据寄存。
进一步,如图6-8所示,所述主机接入模块、从机接入模块采用型号为ADM2483的磁隔离RS485收发器,用于给3个RS485收发器供给相互不相关的电源。隔断电的联系,防止相互间的干扰。本发明的三个RS485收发器每个口都采用电源隔离和信号隔离,带有TVS,自恢复保险丝。
进一步,如图2和图5所示,还包括:
电源输入模块,采用型号为XL1509的线性稳压器,将输入电源降压至所述处理器的工作电压;电源从xs6的1,2脚接入,电压范围DC9-30V。通过DC/DC芯片降压到5V,供内部芯片使用。D1二极管防止直流电源的反接,DZ1过压保护,将电压限制在DC30V附近。本发明支持DC9-DC30V供电,具有过压保护。
显示模块,用于主机和处理器、从机和处理器的通信状态显示以及处理器运行状态的显示。3只双色LED灯,LED1,LED2,LED3用于显示3个RS485收发器的通信状态,LED4用于显示处理器的工作状态,处理器工作正常时,此灯会每隔500ms切换亮灭状态。
进一步,如图3所示,还包括看门狗模块,看门狗模块包括型号为SGM706的多功能微处理器监控电路,及型号为MT9700的功率开关电路,用于防止不明原因导致的装置死机。看门狗芯片U11一直监测单片机发出的交替信号,如果持续1.6秒状态不反转,则通过S1切断单片机的电源后再恢复,从而保证单片机可靠工作。
作为本发明的一种优选的实施方案,基于上述内容,如图4所示,还包括隔离电源模块,隔离电源模块采用型号为B0505S的电源模块,并连接所述功率开关电路,用于给各个主机接入模块、从机接入模块供给相互不相关的电源,隔断电的联系,防止相互间的干扰。
一种基于单主多从协议实现多主机的方法,使用了上述的基于单主多从协议实现多主机的装置,其包括以下步骤:
S1:处理器时刻监控各个主机发来的数据,并只存储1个通信帧的数据;
S2:处理器将以所述步骤S1中,来自不同主机的数据存储于不同的存储区,且不相互重叠;
S3:处理器检测这各个存储区是否有新的数据,如果有并且从机总线空闲,则发送此存储区的数据到从机总线;
S4:发送完毕后,开始等待从机总线的响应信息,如果在预设的时间内收到数据,则立即将接收到的数据发送到该存储区对应的主机处,如果没有接收到数据那么处理器继续监控存储区。通过以上的缓存协调机制,当两主机同时通信时,另一路主机的数据被缓存,待总线空闲时,再通信另一路,完全解决了单主多从协议上多主机的通信故障问题,避免了数据碰撞。
作为本发明的一种实施例,所述步骤S1中,有主机1和主机2两个主机接入处理器,对应存在第一主机接入模块和第二主机接入模块;步骤S1中:处理器时刻监控主机1发来的数据,并只存储1个通信帧的数据,依靠3.5T时间来判断帧尾。同时时刻监控主机2发来的数据,并只存储1个通信帧的数据,依靠3.5T时间来判断帧尾。
为了清楚的表明本发明基于单主多从协议实现多主机的方法,如图10所示,按照模块化程序编程方法,以下将处理器内程序划分为A功能块、B功能块、C功能块三个功能块。所述A功能块1用以接收主机1发来的通信报文并放入A接收缓存,将A发送缓存区的报文发送回主机1。所述B功能块2用以接收主机2发来的通信报文并放入接收缓存,将B发送缓存区的报文发送回主机2。所述C功能块用以将A接收缓存和B接收缓存发送到从机总线,将总线响应的报文区分放入A发送缓存和B发送缓存。本发明可实现多线程工作,合理利用了处理器内存资源和逻辑单元资源,具有通信可靠,效率高的有益效果。
所述步骤S2中,处理器内部RAM中,划分A存储区、B存储区两个存储区。
进一步,如图11所示,处理器将所述A存储区划分为A接收缓冲区、A发送缓冲区,A功能块时刻监控第一主机接入模块,一旦接收到主机1发来的数据,立即存入A接收缓存区,同时监控A发送缓存区是否有数据,如果有立即发送回主机1;
如图12所示,B存储区划分为B接收缓冲区、B发送缓冲区,B功能块时刻监控第二主机接入模块,一旦接收到主机2发来的数据,立即存入B接收缓存区,同时监控B发送缓存区是否有数据,如果有立即发送回主机2。
进一步,如图13所示,所述步骤S3和S4中,C功能块时刻监控A接收缓冲区,B接收缓冲区,如果A接收缓冲区内有数据,立即将A缓冲区数据从处理器接口发出到从机接入模块的从机总线上,并开始等待从机总线的响应,如果从机总线不能响应,那么C功能块继续监控B接收缓冲区和A接收缓冲区,但是此时先监控B接收缓冲区,如果从机总线响应了数据,那么处理器先将接收到的数据存入A发送缓冲区,然后再监控B接收缓冲区和A接收缓冲区;
如果B接收缓冲区内有数据,立即将B缓冲区数据从接口发出到从机总线,并开始等待从机总线的响应,如果从机总线不能响应,那么C功能块继续监控A接收缓冲区和B接收缓冲区,但是此时先监控A接收缓冲区,如果从机总线响应了数据,那么处理器先将接收到的数据存入B发送缓冲区,然后再监控A接收缓冲区和B接收缓冲区。
而本方法引入缓存协调机制,将完全避免此种情形。当两主机同时通信时,另一路主机的数据被缓存,待总线空闲时,再通信另一路。完全解决了单主多从协议上多主机的通信故障问题。
对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (1)
1.一种基于单主多从协议实现多主机的方法,该方法利用基于单组多从协议实现多主机的装置实现,该装置包括:处理器模块、至少两个主机接入模块、至少一个从机接入模块;
所述主机接入模块和从机接入模块分别连接所述处理器模块,用于实现主机和处理器模块、从机和处理器模块之间的通信;
所述处理器模块包括型号为STC15WLQFP32的处理器及其最小系统;所述主机接入模块、从机接入模块采用型号为ADM2483的磁隔离RS485收发器;
电源输入模块,采用型号为XL1509的线性稳压器,将输入电源降压至所述处理器的工作电压;
显示模块,用于主机和处理器、从机和处理器的通信状态显示以及处理器运行状态的显示;
看门狗模块,看门狗模块包括型号为SGM706的多功能微处理器监控电路,及型号为MT9700的功率开关电路,用于防止不明原因导致的装置死机;
隔离电源模块,隔离电源模块采用型号为B0505S的DC/DC电源模块,并连接所述功率开关电路,用于给各个主机接入模块、从机接入模块供给相互不相关的电源,隔断电的联系,防止相互间的干扰;
所述方法包括以下步骤:
S1:处理器时刻监控各个主机发来的数据,并只存储1个通信帧的数据;
S2:处理器将以所述步骤S1中,来自不同主机的数据存储于不同的存储区,且不相互重叠;
S3:处理器检测这各个存储区是否有新的数据,如果有并且从机总线空闲,则发送此存储区的数据到从机总线;
S4:发送完毕后,开始等待从机总线的响应信息,如果在预设的时间内收到数据,则立即将接收到的数据发送到该存储区对应的主机处,如果没有接收到数据那么处理器继续监控存储区;
所述步骤S1中,有主机1和主机2两个主机接入处理器,对应存在第一主机接入模块和第二主机接入模块;
所述步骤S2中,处理器内部划分A存储区、B存储区两个存储区;
处理器将所述A存储区划分为A接收缓冲区、A发送缓冲区,处理器时刻监控第一主机接入模块,一旦接收到主机1发来的数据,立即存入A接收缓存区,同时监控A发送缓存区是否有数据,如果有立即发送回主机1;
B存储区划分为B接收缓冲区、B发送缓冲区,处理器时刻监控第二主机接入模块,一旦接收到主机2发来的数据,立即存入B接收缓存区,同时监控B发送缓存区是否有数据,如果有立即发送回主机2;
所述步骤S3和S4中,处理器时刻监控A接收缓冲区,B接收缓冲区,如果A接收缓冲区内有数据,立即将A缓冲区数据从处理器接口发出到从机接入模块的从机总线上,并开始等待从机总线的响应,如果从机总线不能响应,那么处理器继续监控B接收缓冲区和A接收缓冲区,但是此时先监控B接收缓冲区,如果从机总线响应了数据,那么处理器先将接收到的数据存入A发送缓冲区,然后再监控B接收缓冲区和A接收缓冲区;
如果B接收缓冲区内有数据,立即将B缓冲区数据从接口发出到从机总线,并开始等待从机总线的响应,如果从机总线不能响应,那么处理器继续监控A接收缓冲区和B接收缓冲区,但是此时先监控A接收缓冲区,如果从机总线响应了数据,那么处理器先将接收到的数据存入B发送缓冲区,然后再监控A接收缓冲区和B接收缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910928584.1A CN110531686B (zh) | 2019-09-28 | 一种基于单主多从协议实现多主机的装置及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910928584.1A CN110531686B (zh) | 2019-09-28 | 一种基于单主多从协议实现多主机的装置及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110531686A CN110531686A (zh) | 2019-12-03 |
CN110531686B true CN110531686B (zh) | 2024-07-12 |
Family
ID=
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107465576A (zh) * | 2017-08-23 | 2017-12-12 | 江苏舾普泰克自动化科技有限公司 | 一种基于Modbus协议的多主机通讯系统及方法 |
CN210137335U (zh) * | 2019-09-28 | 2020-03-10 | 徐州可云智能科技有限公司 | 一种基于单主多从协议实现网络主机的装置 |
CN210294853U (zh) * | 2019-09-28 | 2020-04-10 | 徐州可云智能科技有限公司 | 一种基于单主多从协议实现多主机的装置 |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107465576A (zh) * | 2017-08-23 | 2017-12-12 | 江苏舾普泰克自动化科技有限公司 | 一种基于Modbus协议的多主机通讯系统及方法 |
CN210137335U (zh) * | 2019-09-28 | 2020-03-10 | 徐州可云智能科技有限公司 | 一种基于单主多从协议实现网络主机的装置 |
CN210294853U (zh) * | 2019-09-28 | 2020-04-10 | 徐州可云智能科技有限公司 | 一种基于单主多从协议实现多主机的装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7266625B2 (en) | Data communication system | |
CN111966189B (zh) | 一种灵活配置的多计算节点服务器主板结构和程序 | |
CN106603359B (zh) | Plc系统的通讯控制方法及装置 | |
CN102724093A (zh) | 一种atca机框及其ipmb连接方法 | |
CN208386576U (zh) | 一种具有简单交换管理功能的工业网络交换串口服务器 | |
CN110247936B (zh) | 一种通讯协议转换卡及通讯协议转换系统 | |
CN210294853U (zh) | 一种基于单主多从协议实现多主机的装置 | |
CN110531686B (zh) | 一种基于单主多从协议实现多主机的装置及其方法 | |
CN111858459B (zh) | 处理器及计算机 | |
CN210324188U (zh) | 一种集成电路总线iic主从竞争自动切换设备及其系统 | |
CN1964286B (zh) | 具有双cpu的主控设备 | |
CN209433225U (zh) | 用于列车网络输入输出系统的处理装置 | |
CN111475368A (zh) | 一种串口级联调控方法及串口设备 | |
CN106708701B (zh) | 一种基于arinc659总线的中央维护装置与方法 | |
CN103513596B (zh) | 基于arm的mvb总线管理功能实现系统 | |
CN116126756A (zh) | 一种基于fmql的srio实现装置及方法 | |
CN210137335U (zh) | 一种基于单主多从协议实现网络主机的装置 | |
CN115696100A (zh) | 一种交换机光模块监测方法、装置、设备及存储介质 | |
CN212324117U (zh) | 一种rs485总线多主机竞争切换系统 | |
CN105743927A (zh) | 一种CANopen与DP协议数据转换器及转换方法 | |
JPH08242303A (ja) | ナースコール装置の子機アダプタ脱落・断線検出方法 | |
CN202205196U (zh) | 一种串行设备共用通信总线的系统 | |
CN110531686A (zh) | 一种基于单主多从协议实现多主机的装置及其方法 | |
CN110515776B (zh) | 一种双机备份系统及备份方法 | |
CN217159737U (zh) | 网间连接器及工业控制系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |