zoukankan      html  css  js  c++  java
  • Modbus常用

    1.  功能码

    modbus的操作对象有四种:线圈、离散输入、输入寄存器、保持寄存器。

    线圈:PLC的输出位,开关量,在MODBUS中可读可写

    离散量:PLC的输入位,开关量,在MODBUS中只读

    输入寄存器:PLC中只能从模拟量输入端改变的寄存器,在MODBUS中只读

    保持寄存器:PLC中用于输出模拟量信号的寄存器,在MODBUS中可读可写

    根据对象的不同,modbus的常用功能码有:

    • 0x01:读线圈
    • 0x05:写单个线圈
    • 0x0F:写多个线圈
    • 0x02:读离散量输入
    • 0x04:读输入寄存器
    • 0x03:读保持寄存器
    • 0x06:写单个保持寄存器
    • 0x10:写多个保持寄存器

    通用采集器一般包含DI,DO,AI相关接口,对此类接口主要应用功能码01~06。

    3类接口具体对应关系示例如下:

    继电器定义,功能码01/05(01:读线圈,05写线圈)

    序号                   地址                   数据描述

    01                       00001                DO1

    08                       00008                DO8

    开关量输入定义,功能码02(02:读取输入状态)

    序号                   地址                   数据描述

    01                       10001                DI1

    02                       10002                DI2

    08                       10008                DI8

    输入寄存器定义,功能码04(04:读取输入寄存器)

    序号                   地址                   数据描述

    01                       30001                AI1

    08                       30008                AI8

    保持寄存器定义,功能码03/06(03:读取保持寄存器,06:写单个寄存器)

    序号                   地址                   数据描述

    01                       40001                系统实际时间的低16位

    02                     40002                系统实际时间的高16位

    03                       40003                第一路开关量32位计数器低16位。

    04                       40004                第一路开关量32位计数器高16位。

    19                       40019                为串口1收发延时设置,16位,以1ms为单位。

    20                       40020                为串口2收发延时设置,16位,以1ms为单位。

    21                       40021                串口1波特率设置

    22                       40022                串口2波特率设置。

    我们都知道ModbusRTU一帧数据包含1字节地址(物理地址),1字节功能码(上述对应功能码01~06),数据和2字节CRC。 

     

    2. 数据

    一帧报文中数据内容根据功能码不同而不同,详见“ModBus协议”。

    例如:

    01功能码(读DI):功能码:02--1字节,起始地址:0x0000~0xFFFF--2字节,

                                线圈数量:1~2000--2字节

    响应PDU:功能码:02--1字节,字节数:N*,输出数量/8[+1](未整除+1),

         输入状态:N*X1个字节

    错误:差错码:0x82--1字节,异常码:0x1~0x4--1字节。

    3. 模拟软件

    modbus设备分为主站(poll)和从站(slave),主站只有一个,从站有多个,主站向各个从站发送请求帧,从站给予响应。一般情况下,主站是client端,从站是server端。

    modbus pollmodbus slave是一组modbus仿真软件,可以实现modbus RTUTCP、串口仿真等。

    4. 简述 

     

    参考:

    1. modbusTCP协议

    2. http://www.modbus.org/tech.php modbus官网及各语言code

    3. https://github.com/stephane/libmodbus/ libmodbus

    4. https://libmodbus.org/docs/v3.1.6/ libmodbus官网及API

    5. libmodbus官方中文手册详解

    6.  c 的modbus源码编译(windows和linux)  libmodbus编译

    7. windows使用modbus开源纯C库通过TCP 读写寄存器的值  libmodbus应用

    8. MODBUS的接入   配置文件参考

    9. Modbus RTU通用规约说明、模板及规约配置(DOC)      配置文件参考

  • 相关阅读:
    常看本地是否安装Git和maven工具
    Git 安装和使用Tips
    Jmeter 获取系统时间,和对系统时间进行增减时间
    Java 中的系统时间
    Go语言
    数据拆分之 垂直拆分 and 水平拆分
    在Windows和UNIX下利用PHP和LDAP进行身份验证
    Linux中使用crontab命令定时执行shell脚本或其他Linux命令
    php empty()和isset()的区别
    php 判断是否get传值的参数是否存在
  • 原文地址:https://www.cnblogs.com/embedded-linux/p/5295800.html
Copyright © 2011-2022 走看看