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

这篇具有很好参考价值的文章主要介绍了Python 解析HJ212-2017并输出Modbus-TCP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能:

 

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

应用场景:

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

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

解决了什么问题:

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

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

拓扑:

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

 

程序文件:

局部文件截图

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

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

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

2、HJ212测试.exe

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

网络拓扑

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

数采仪端设置

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

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

测试开始

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

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

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

Python 解析HJ212-2017并输出Modbus-TCP注意:端口号即使解析脚本服务的端口号也是MOSBUS TCP服务器的端口号。


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

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

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

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

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

测试报文:

##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解析的数据情况。

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

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

下载地址:

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

提取码:4jwd文章来源地址https://www.toymoban.com/news/detail-432581.html

到了这里,关于Python 解析HJ212-2017并输出Modbus-TCP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HJ108:求最小公倍数 python

    def gcd(a,b):     if ab:         smaller=a     else:         smaller=b     for i in range(smaller,0,-1):         if a%i==0 and b%i==0:             return smaller         else:             smaller-=1 def lcm1(a,b):     g=gcd(a,b)     return a*b/g 跑不出结果,求指教哪里出问题

    2023年04月09日
    浏览(75)
  • 华为机试题:HJ35 蛇形矩阵(python)

    描述 : 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如,当输入5时,应该输出的三角形为: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 输入描述 : 输入正整数N(N不大于100) 输出描述 :输出一个N行的蛇形矩阵。 示例1 Python3 【Python】input()函数用法小结 常用的强转类

    2024年02月07日
    浏览(39)
  • 使用python 解析Linux cron表达式,输出执行日期

    该方法通过输入linux 的cron 表达式,可以按要求输出调度的时间,方便与实际调度进行校对。

    2024年02月11日
    浏览(46)
  • 【AI系列】使用 Python 解析和输出成功的问答对 JSON 数据

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年04月16日
    浏览(80)
  • 8路DI高速计数器,8路DO支持PWM输出,Modbus TCP模块 YL93 开关量输入输出

    特点 : ●  8路开关量输入,8路开关量输出 ●  DI每一路都 可用 作计数器或者频率测量 ●  DO每一路都 可独立输出PWM信号 ●   DI和DO都支持PNP,NPN切换功能 ● 支持Modbus TCP 通讯协议 ● 内置网页功能,可以通过网页查询电平状态 ● 可以通过网页设定输出状态 ●  宽电源

    2024年01月19日
    浏览(33)
  • Modbus通信协议+Modbus串口调试工具+Java版协议解析源码

    网络与串口二合一调试助手TCPCOM: https://download.csdn.net/download/liuyuan_java/87454762 Modbus调试工具,模拟串口调试工具 https://download.csdn.net/download/liuyuan_java/87427475 Configure Virtual Serial Port Driver (VSPD) 串口模拟工具 https://download.csdn.net/download/liuyuan_java/87426831 Java实现DL/T645-2007协议报文的

    2024年02月03日
    浏览(76)
  • Modbus TCP通信报文解析

    一、实现了读取线圈状态和写入多个线圈的功能。代码中包含了详细的注释说明,可以清晰地了解每个方法的功能和使用方式。 对于读取线圈状态的方法,使用时需要传入从站地址、起始地址和线圈数量,最后会返回一个 bool 数组,其中每个元素表示一个线圈的状态。 对于

    2024年02月15日
    浏览(50)
  • Apache HTTPD (CVE-2017-15715)换行解析漏洞复现

    组件版本漏洞名称 Apache HTTPD 换行解析漏洞(CVE-2017-15715) 漏洞描述 ​ Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时, 1.phpx0A 将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。 原理 apache-CVE-2017-1

    2024年02月09日
    浏览(40)
  • COCO2017标注文件格式和YOLO标注文件格式的解析

    声明:本篇博客内容是作者在制作数据集时的一些记录,引用了一些博客的内容,并结合个人理解进行了归纳,引用出处在“参考内容”章节,若有侵权,请联系作者删除。若有纰漏和错误,敬请指正! 1、COCO2017数据集的标注格式及含义 COCO 的全称是Common Objects in COntext,是

    2024年02月08日
    浏览(46)
  • MODBUS RTU协议原理及功能码解析

    目录                         第一部分 MODBUS RTU协议原理 1.1 简介 1.2 RTU传输模式 1.3 MODBUS报文帧 1.4 CRC校验                 第二部分 MODBUS RTU模式下功能码解析 2.1 Modbus-RTU协议简介 2.2 部分功能码名词解释 2.3 部分功能码解析 01功能码 –读线圈状态 0

    2024年02月02日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包