Modbus网关是一种能够将Modubs TCP协议转化为Modbus RTU协议的设备。Modbus广泛应用于仪表和传感器领域,可以获得仪表和传感器的数据,但是传统的基于RS485的Modbus RTU(或ASCII)速度和扩展性较差,所以后来出现了Modbus TCP这种基于网络的协议。所以Modbus网关这种转换器就应运而生了。
四种Modbus网关从简单协议转换到多主机网关,再到存储型网关,再到ZLMB这种可配置网关。从简单到复杂也是反映了它的发展过程,了解他们的优缺点有助于工程师更好掌握它们的使用方法。
这里特别推荐的是ZLMB可配置网关,它可以预先配置需要读取的多个从站的多个寄存器列表,然后网口可以用一条指令一次性读取所有寄存器,读取效率非常高。且读取速度很快。具体参考《可配置Modbus网关ZLMB》。
最初的Modubs网关,只不过是需要解决数据格式的转化。举一个例子,Modbus RTU(RS485端)中03功能码,读取00开始的1个寄存器的指令为:01 03 00 00 00 01 84 0a,其中84 0a是CRC校验。而一个Modbus TCP指令(网络端)为00 00 00 00 00 06 01 03 00 00 00 01。我们知道普通的串口服务器是“透传”的,也就是发送串口发送01 03 00 00 00 01 84 0a,网口也是01 03 00 00 00 01 84 0a。为了实现这个RTU转Modbus TCP功能,对比发现只要去掉CRC校验84 0a加上开头的00 00 00 00 00 06即可。
这种简单的格式转化确实能够初步地满足要求。但是缺点是:
1.无法多主机访问:不能实现多个Modbus TCP主机去访问网关,因为主机A和主机B发送的数据在RS485总线上会产生抢占总线冲突,引起数据错乱。
2.返回数据干扰:设备对主机A的应答不仅会返回给主机A也会返回给主机B,这样主机B的返回数据中就会有干扰数据。
虽然简单协议转化进本已经被淘汰,这里也简要介绍一下它的设置方法:在ZLVircom配置工具的“设备编辑”界面中选择转化协议为“Modbus TCP转RTU”,在高级选项中去掉“多主机”和“RS485防冲突”两个勾。
多主机模式的Modbus网关正是为解决“简单协议转化”模式的缺点设计的。如上图所示,当主机A和主机B同时访问是Modbus网关会进行总线的占用调度,从而解决总线冲突问题,另外主机A访问的数据也不会再发送给主机B,解决了返回数据干扰问题。
数据通讯步骤如下:
1.当网关收到主机A的查询请求时,检查总线是否有在使用,如果空闲则发送到RS485总线上,否则等待到总线空闲。
2.网关记录下来当前查询的主机,这里是主机A。
3.当数据从RS485总线返回时,网关将其转化为Modbus TCP格式转发给相应的主机(这里是主机A)。
多主机模式的优点是,实现了多台主机的同时访问,解决了总线冲突和返回数据干扰问题,但是仍然存在不足之处:
1.数据返回慢:从以上的数据通讯步骤可以看出,一台主机获得数据需要数据线从网络转发到RS485总线,等待设备返回后再从RS485转发到网络。由于RS485总线本身是慢速通信方式,主机一般需要等待50~100ms才能获得一个数据。
2.主机数量很多时,等待容易超时:这也是数据返回慢引起的另外一个问题。
对于早期的ZLAN5142默认即“多主机模式”;对于ZLAN5143(1.565之前版本)不支持“多主机模式”,只支持“存储型”;对于于ZLAN5143(1.565及其之后版本)支持“多主机模式”,设置方法为:在ZLVircom配置工具的“设备编辑”界面中选择转化协议为“Modbus TCP转RTU”,在高级选项中将RS485总线冲突最多等待时间改为2秒即可。
存储型网关正是为了解决“多主机模式”的缺点而设计的,由于“多主机模式”的慢速问题主要是由于RS485总线返回数据太慢引起的,“存储型”的思路就是通过预先获得某些需要的数据,事先存储起来,等网络端需要数据时可以立即提供,从而减少数据查询时间。
存储型网关有两个特点:
1.自学习:存储型网关无需配置,因为它可以在主机索要一个查询数据的时候就会将这个记录保存一起,网关内部会自动学习当前网口需要的数据。
2.事先查询:当网关获悉所有主机索要的所有的寄存器之后,网关会事先进行逐条查询,并把结果存储到网关的内部。
如此一来,当主机A想要之前要过的数据的时候,网关会从自己的内存中调取数据,并立即返回给主机A,由于没有转发到RS485总线的过程,这个时间大约在1~2ms,比之前的50~100ms大大提高。
存储型网关的优点:
1.返回速度快:主机A查询返回数据时间大大提高。
2.无需配置:由于采用自学习方式,无需配置,操作起来和“多主机模式”并没有差别。
存储型网关的问题:
1.首条指令返回慢:由于网关是通过学习来获得主机索要的寄存器号的,在获得这个信息前,无法事先查询。所以主机发送的第一条指令仍然需要通过转到RS485总线来获得数据。首条指令返回和多主机模式一样慢。
2.RS485总线查询过快可能影响设备工作:由于一般默认情况下RS485总线会以最快速的速度查询从站设备内部的寄存器内容,而某些仪表可能无法适应这么快速的查询导致设备工作异常。对于这点实际可以加大“RS485总线空余时间”参数来解决查询过快的问题,实际是可以解决的。
3.不是最新数据:由于数据是事先查询获得,存储起来的,所以查到的数据可能并不是新的数据,虽然这个时间也就只有几百毫秒,对于某些特殊情况也需要考虑到这种延时。
4.时序问题:某些Modbus TCP的读取和存储需要按照写、读等时序操作的,“存储型”的这种预先存储会打乱这种时序,会引起某些设备无法兼容的问题。
这里的缺点2、3、4都可以撤回到“多主机模式”的网关来解决这个问题,注意撤回到“多主机模式”后,数据返回会变慢。注意ZLAN5143的新固件支持“多主机模式”和“存储型”两种模式。而上述缺点1(首条指令返回慢),将会在后面的“可配置”网关中解决。
ZLAN5142不支持“存储型”,ZLAN5143设置为“存储型”的方法为:在ZLVircom配置工具的“设备编辑”界面中选择转化协议为“Modbus TCP转RTU”即可。
为了解决“存储型”网关的首条指令返回慢的问题可以采用可配置网关。可配置网关也采用“存储型”网关的事先查询获得RS485总线从站寄存器内容的办法。但是它不采用自学习的方法,为了解决首条指令返回慢的问题,必须事先把需要的寄存器列表配置到网关内部。它可以预先配置Modbus RTU端的设备的地址、功能码和寄存器列表,并存储到网关内部。网关会自动采集这些配置的RTU设备的数据,然后映射到连续的Modbus TCP寄存器地址,从而允许Modbus TCP端一次性读取所有的设备的不同寄存器的数据。
卓岚可配置网关又称之为ZLMB网关,有如下的优点:
1.所有指令返回速度都快:即使是首条指令也同样快速。
2.指令合并提高效率:可以将分散的不同的站地址、寄存器映射到同一片寄存器。这样Modbus TCP端可以用一条指令采集所有数据,包括不同站地址的设备的数据,而不是分为几条指令分别去采集,提高了Modbus TCP端的传输效率。
3.地址重映射:对于某些情况需要将不同分散的寄存器重新映射到整片连续的区域,ZLMB网关可以实现这个要求。
可配置网关的缺点:
1.需要手动配置:如果“存储型”网关就能够满足要求的可以优先选择“存储型”,因为“存储型”无需任何配置。ZLMB方式需要手动使用ZLVircom配置需要的寄存器。
2.事先预读取引起的问题:和存储型一样存在“不是最新数据”和“时序问题”。
卓岚ZLAN5143、ZLAN7144、ZLAN7146、ZLAN8303等都支持可配置Modbus网关功能。其中ZLAN5143需要固件版本1.579及以上版本,配合ZLVircom5.15及以上版本来使用。7144需要固件版本1.491及以上版本。配置方法是:在ZLVircom配置工具的“设备编辑”界面中点击“固件和配置”按钮,然后在弹出的“网页程序下载工具”对话框中,选择“网页目录下载”,然后点击“ZLMB”按钮,设计完毕后点击“下载”按钮下载到设备内容。具体内容请参考《可配置Modbus网关ZLMB》的详细介绍。
网关类型 | 简单协议转化 | 多主机模式 | 存储型网关 | 可配置网关 |
---|---|---|---|---|
多主机支持 | ╳ | √ | √ | √ |
返回指令快 | ╳ | ╳ | √ | √ |
首条指令返回快 | ╳ | ╳ | ╳ | √ |
不存在预先读取引起的问题 | √ | √ | ╳ | ╳ |
无需配置 | √ | √ | √ | ╳ |
支持指令和合并和重新映射地址 | ╳ | ╳ | ╳ | √ |
总的来说,可配置网关是读取效率最高的,最为先进的Modbus网关,但是配置较为繁琐;而存储型网关是默认的模式,也是使用最简便的模式,同时具有多主机、读取速度快等特点;而在某些RS485设备不适应“预先读取”这种的情况下,可以退回到“多主机”模式这种慢速模式。而“简单协议转化”模式由于存在多主机时有总线误码和丢失,一般情况不会采用。
四种Modbus网关模式和对应的型号现列出到如下表:
名称 | 型号 | 简单协议转化 | 多主机模式 | 存储型网关 | 可配置网关 |
---|---|---|---|---|---|
多串口Modbus网关 | ZLAN5240、ZLAN5443A、ZLAN5843A、ZLAN5G40A | √ | √ | ╳ | ╳ |
单串口Modbus网关 | ZLAN5142、ZLAN5142-3 | √ | √ | ╳ | ╳ |
新一代多串口Modbus网关 | ZLAN5443D、ZLAN5443-232 | √ | √ | √ | √ |
以太网Modus网关 | ZLAN5143 | √ | √ | √ | √ |
Wifi+以太网Modus网关 | ZLAN7144 | √ | √ | √ | √ |
Wifi Modus网关 | ZLAN7146 | √ | √ | √ | √ |
4G+以太网Modbus网关 | ZLAN8303-7 | √ | √ | √ | √ |
Zigbee Modbus网关 | ZLAN9543 | √ | √ | √ | √ |
Lora Modbus网关 | ZLAN9743 | √ | √ | √ | √ |