目的

内置modbus rtu相关的驱动包含以下3个:

  • dr_modbus_rtu.py:用于通过dtu透传把232串口转成tcp客户端的情形
  • dr_modbus_rtu_over_tcp.py:同上,另一种代码实现
  • dr_modbus_rtu_serial.py:用于本地COM串口直连的情形

该类驱动支持标准的modbus rtu协议,实施人员作为直接用户无需编写代码,通过配置即可实现对任意支持该协议的设备实现数据采集接入(包括控制)。

用户通过设备传感+DTU,结合平台“云网关”功能,可以快速实现modbus rtu设备上云(参考:Modbus-rtu报文协议TCP连接透传测试

说明

驱动根配置

  • dr_modbus_rtu.py
    {
    “parentid”: null,
    “driver”: “python/dr_modbus_rtu.ModbusDriver”,
    “param”: {
      "serial": "com2,9600,N,8,1,0", //示例,本地串口配置
    “sub”: [
    ]
    },
    “datahub”:””,
    “bind”: {
    }
    }

  • dr_modbus_rtu_serial.py
    {
    “parentid”: null,
    “driver”: “python/dr_modbus_rtu.ModbusDriver”,
    “param”: {
      "tcp":59142,                //示例,DTU模块网络端需配置的平台TCP服务器端口
      "serial": "1,9600,N,8,1,0", //示例,DTU模块串口端配置参数
    “sub”: [
    ]
    },
    “datahub”:””,
    “bind”: {
    }
    }

数据点配置

  • 以下配置对本文提到的3个内置modbus驱动均适用:
    {
    “disabled”: false, //是否过滤
    “proxy”: {

      "index": "",    //批量采集返回的第几个数据
      "pointer": null //是否指向其他数据点

    },
    “position”: [],
    “equation”: null,
    “class”: null,
    “parentId”: null,
    “param”: {

      "regad": 32,                //寄存器地址
      "funid": 3,                    //功能号
      "equation": "round(x,1)",    //数值转换
      "devid": 1,                    //设备地址
      "format": ">24f"            //连续采集数量以及数据类型、内存字节序

    }
    }

  • disabled
    为true时,Collecting时将过滤该数据点,不会驱生成采集指令

  • proxy.pointer
    为null时,会根据param字段下的内容生成modbus采集指令;不为null时,这里填入其他数据点的标识ID,通常指向的数据点pointer为null,会生成modbus批量采集命令,返回多个数据,当前数据点结合proxy.index,会将批量返回的数据第几个按照index对应给自己。

  • proxy.index
    参见param.format配置,批量采集多个时,多个数据返回的对应关系。比如pointer通过id指向数据点A,那么A的配置中生成的批量采集返回的数据(这里24个为例),除了第一个默认对应到A本身,其他23个,分别对应给pointer指向A并且index配置是1~23的,按顺序依次对应。

  • param.devid
    modbus设备地址

  • param.funid
    modbus功能号

  • param.regad
    modbus寄存器起始地址,十六进制转换成的10进制,比如起始地址是20 00,那么这里应该填入8192

  • param.format
    //24为批量采集24个数据,f表示浮点数,>或<表示大小端,参见:https://blog.csdn.net/mijichui2153/article/details/108692649

  • param.equation
    数据转换公式,x为当前值,可以进行+、-、*、/,以及round()取小数位等


【附】

下载excel格式的数据点表,理解modbus rtu驱动的配置逻辑:

作者:admin  创建时间:2022-05-25 23:55
最后编辑:admin  更新时间:2022-08-12 14:50