Python 解析HJ212-2017并输出Modbus-TCP

功能:

 

利用python开启服务端口,接受来着环保数采仪上传的HJ212-2017报文数据,解析后并输出Modbus-TCP给上位机或PLC读取,可同时连10个主站。

应用场景:

污水厂进出水在线监测环保数采仪的数据协议转换成通用标准协议。

本次实验由于没有数采仪只能通过TCP客户端模拟报文数据。

解决了什么问题:

目前的有的品牌的数采仪也支持MODBUS-tcp输出,但目前污染源与MODBUS寄存器对应关系是根据数采仪屏幕显示行一一按顺序对应的,这样如果增加或者调整数采仪通道后有可能显示的行会有变化,比如之前第一行是氨氮,调整后第一行可能是别的指标了,这样按照之前的地址排列顺序与实际的就对不上了,又要去调整PLC的程序,这样比较麻烦。本程序就是为了解决这个问题。

运行环境
window10 64位 及以上版本

拓扑:

 

程序文件:

局部文件截图

本人已经编译好并打包生成.exe后缀可执行文件,文章后付下载链接。

1、配置生成.xlsm(用来生成config.json)

2、HJ212测试.exe

简单说明:以上两个文件放到同一个文件夹内,文件“配置生成.xlsm”需要根据实际的在线监测配置好环保数采仪MN码及环保因子与MODBUS地址对应关系,并生成配置文件config.json。“HJ212测试.exe”程序是用python3编译打包的,先生成一个配置文件,详见下图片,后双击启动“HJ212测试.exe”程序启动,本脚本自动获取配置内的数据完成初始化运行。

网络拓扑

实际应用需要将污水厂的进出水在线监测的数采仪与工控机处于同一个网段,并要求工控机的防火墙关闭状态,防止端口被防火墙屏蔽。本次用软件模拟数采仪连接发送报文。

数采仪端设置

进入数采仪设置得到MN码,并在的监控中心配置里,输入运行HJ212测试.exe的电脑IP地址,以及配置文件里面设置的端口号。数采仪主动根据设置的IP和端口连接服务器,并发送报文。

测试开始

用到的测试工具:
1,Modbus Poll 模拟mosbus主站(也可以用WINCC 或其他支持mosbusTCP协议的触摸屏或组态软件)
2,NetAssist.exe TCP客户端模拟数采仪发送报文数据。

把文件放到WIN10的工控机上,先打开配置生成xlsm文件配置好后点击按钮生成配置文件,需要配置端口和数采仪的MN码还有现场指标污染源因子及对应需要输出MODBUS 寄存器地址,生成配置文件后再双击启动exe,先看一下后台进程程序有没有运行。

注意:配置生成.xlsm是xls文件带宏应用,打开时会有安全提示。点击允许允许就可以了。

注意:端口号即使解析脚本服务的端口号也是MOSBUS TCP服务器的端口号。


 通过TCP客户端模拟向服务器发送报文测试接口情况:报文格式按照“”HJ212-2017_文件.pdf “”环保标准进行,与实际数采仪报文格式相同。

本脚本仅仅解析:CN=2011的实时数据上传命令获取数据,反应时间可在数采仪中设置上传时间。

测试报文:

##0522QN=20230411110900047;ST=32;CN=2011;PW=123456;MN=613100JYXEWS01;Flag=4;CP=&&DataTime=20230411110900;w00000l-Rtd=24027881.000,w00000l-Flag=N;w00000-Rtd=441.600,w00000-Flag=N;w01018-SampleTime=20230411100000,w01018-Rtd=8.900,w01018-Flag=N;w21003-SampleTime=20230411100000,w21003-Rtd=0.073,w21003-Flag=N;w21011-SampleTime=20230411100000,w21011-Rtd=0.082,w21011-Flag=N;w21001-SampleTime=20230411100000,w21001-Rtd=5.933,w21001-Flag=N;w21024-Rtd=0.179,w21024-Flag=N;w01012-Rtd=2.583,w01012-Flag=N;w01001-Rtd=7.264,w01001-Flag=N&&2700
 

 通过mosbus主站工具测试,读取功能码 03 数据区4XXX解析的数据情况。

下载地址:

链接:https://pan.baidu.com/s/1EF0Jzh1M3Q3gSmR9wngegg

提取码:4jwd

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值