使用Python的Modpoll工具读取Modbus数据
今天来推荐一款Github上流行的Modbus调试和数采工具——基于Python的Modpoll项目,GitHub – gavinying/modpoll: A New Command-line Tool for Modbus and MQTTA New Command-line Tool for Modbus and MQTT. Contribute to gavinying/modpoll development by creating an account on GitHub.https://github.com/gavinying/modpoll凡是用过老款基于FieldTalk Modbus驱动的modpoll工具的用户,一定都对程序提供的一堆繁琐难记的命令参数印象深刻,每次采个数据都得查一遍手册。好不容易调出来的命令参数也很难保存,更没有办法在生产环境中复用,基本上只能当作离线的调试工具用用。
这款全新设计的Modpoll工具则完全颠覆了之前的设计思路,支持Modbus RTU/TCP/UDP协议,采用“配置文件”的方式来保存Modbus寄存器设置,结合高效的多寄存器采集方式,能同时满足离线设备通讯调试和在线生产数据采集的场景。另外,这款Modpoll工具还可以作为Modbus转MQTT的网关,在Docker环境中直接部署。
安装
在Linux或MacOS上可以直接通过PyPI或镜像源来直接安装,
pip install modpoll
如果想同时安装pyserial包来支持Modbus RTU通讯,可以用下面的命令
pip install 'modpoll[serial]'
在Windows上安装可以采用pipx,
pipx install modpoll
快速启用
为了帮助用户快速了解这款工具的使用功能,Modpoll项目的作者还写了另一个开源的模拟Modbus TCP设备的程序ModSim,并且将实例部署在了云端供大家免费访问。
我们可以利用examples下面的modsim.csv配置文件,运行modpoll命令来直接访问modsim这个云端的虚拟Modbus TCP设备,
modpoll -1 \
--tcp modsim.topmaker.net \
--config https://raw.githubusercontent.com/gavinying/modpoll/master/examples/modsim.csv
如果想把数据转发到MQTT,只需要运行以下命令指定一个Broker,
modpoll \
--tcp modsim.topmaker.net \
--mqtt-host mqtt.eclipseprojects.io \
--config https://raw.githubusercontent.com/gavinying/modpoll/master/examples/modsim.csv
利用Modbus-MQTT网关,我们可以把老旧的主从轮询模式(Modbus)切换成现代的事件驱动模式(MQTT),从而方便进一步将数据集成到其他现代IoT系统中。
除了以上基本功能以外,Modpoll还提供了其他许多功能,比如通过MQTT写数据到MQTT设备等,具体可以参考项目Github页面和文档网站。
参考资料:https://levelup.gitconnected.com/read-modbus-data-with-python-modpoll-tool-06e2128777ad