码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Modbus TCP通信笔记


    目录

    • 1 Modbus TCP 数据协议
      • 1.1 数据格式
      • 1.2 报文头(MBAP头)
      • 1.3 功能码
      • 1.4 Modbus 地址映射到 CPU 地址
    • 2 Modbus TCP 通讯数据示例
      • 2.1 功能码01 读离散输出线圈
      • 2.2 功能码02 读离散输入线圈
      • 2.3 功能码03 读保持寄存器
      • 2.4 功能码04 读输入寄存器
      • 2.5 功能码05 写单个离散输出寄存器
      • 2.6 功能码06 写单个保持寄存器
      • 2.7 功能码15 写多个线圈寄存器
      • 2.8 功能码16 写多个保持寄存器
    • 3 西门子200Samrt 做服务器端编程示例
      • 3.1 调用库指令
      • 3.2 编程
    • 4 Modbus TCP通讯调试软件测试
      • 4.1 软件介绍
      • 4.2 软件使用说明
        • 4.2.1 连接PLC
        • 4.2.2 访问PLC
        • 4.2.3 其它说明

    1 Modbus TCP 数据协议

    1.1 数据格式

    事务处理标识协议标识长度单元标识功能码起始地址数据
    2字节2字节2字节1字节1字节2字节N字节

    1.2 报文头(MBAP头)

    其中,事务处理标识、协议标识符、长度和单元标识符统称为报文头(MBAP头)。

    内容解释
    事务处理标识可以理解为报文序列号,一般每次通信后就要加1,以区分不同的通信数据报文。
    协议标识符00 00 表示Modbus TCP 协议
    长度接下来数据长度,单位字节
    单元标识符设备地址,一般为01

    1.3 功能码

    功能码描述说明MOUBUS地址
    01读离散输出寄存器位操作00001 ~ 09999
    02读离散输入寄存器位操作10001 ~ 19999
    03读保持寄存器字操作40001 ~ 49999
    04读输入寄存器字操作30001 ~ 39999
    05写离散输出寄存器位操作00001 ~ 09999
    06写保持寄存器字操作40001 ~ 49999
    15写多线圈寄存器位操作00001 ~ 09999
    16写多个保持寄存器字操作40001 ~ 49999

    1.4 Modbus 地址映射到 CPU 地址

    Modbus 地址CPU 地址
    00001Q0.0
    00002Q0.1
    …………
    10001I0.0
    10002I0.1
    …………
    30001AIW0
    30002AIW2
    …………
    40001Vx(保持寄存器起始地址)例:VW0
    40002Vx+2 =(保持寄存器起始地址+2)例:VW2
    …………

    2 Modbus TCP 通讯数据示例

    2.1 功能码01 读离散输出线圈

    事务处理标识协议标识长度单元标识功能码起始地址数据长度
    00 1100 0000 06010100 0000 08

    注释:读取Q0.0地址开始的8个连续输出点(即Q0.0-Q0.7)。

    2.2 功能码02 读离散输入线圈

    事务处理标识协议标识长度单元标识功能码起始地址数据长度
    00 1500 0000 06010200 0000 08

    注释:读取I0.0地址开始的8个连续输出点(即I0.0-I0.7)。

    2.3 功能码03 读保持寄存器

    事务处理标识协议标识长度单元标识功能码起始地址数据长度
    00 6600 0000 06010300 0000 02

    注释:读取VW0地址开始的2个连续字空间(即vw0,vw2)。

    2.4 功能码04 读输入寄存器

    事务处理标识协议标识长度单元标识功能码起始地址数据长度
    00 9700 0000 06010400 0000 02

    注释:读取AIW0地址开始的2个连续字空间(即AIW0,AIW2)。

    2.5 功能码05 写单个离散输出寄存器

    事务处理标识协议标识长度单元标识功能码起始地址数据
    00 C200 0000 06010500 00FF 00

    注释:将地址00000的输出离散线圈置一(即让Q0.0置一)。

    事务处理标识协议标识长度单元标识功能码起始地址数据
    01 0A00 0000 06010500 0100 00

    注释:将地址00001的输出离散线圈置一(即让Q0.1复位)。

    2.6 功能码06 写单个保持寄存器

    事务处理标识协议标识长度单元标识功能码起始地址数据
    01 5e00 0000 06010600 0200 7b

    注释:往地址VW4寄存器中写入数值0x007B(即十进制数123)。

    2.7 功能码15 写多个线圈寄存器

    事务处理标识协议标识长度单元标识功能码起始地址数据长度(位)字节数数据
    01 5e00 0000 09010F00 0000 1002aa cb

    注释:往地址QB0寄存器中写入数值0xaa,往地址QB1寄存器中写入数值0xcb。

    数据长度位不满8的N倍,字节数也算N个。

    2.8 功能码16 写多个保持寄存器

    事务处理标识协议标识长度单元标识功能码起始地址数据长度(字)字节数数据
    02 6800 0000 0B011000 0000 020400 7B 00 EA

    注释:往地址VW0寄存器中写入数值0x007B,往地址VW2寄存器中写入数值0x00EA。

    3 西门子200Samrt 做服务器端编程示例

    3.1 调用库指令

    在这里插入图片描述

    3.2 编程

    具体操作数值详见F1帮助文档。
    在这里插入图片描述

    4 Modbus TCP通讯调试软件测试

    4.1 软件介绍

    软件名称为:Modbus Poll
    网络搜索自行下载,破解。
    在这里插入图片描述
    在这里插入图片描述

    4.2 软件使用说明

    4.2.1 连接PLC

    依次点击Connection→Connect…→弹出界面
    按图指引自行修改,单击OK按钮。
    在这里插入图片描述

    4.2.2 访问PLC

    单击图示指引图标
    在这里插入图片描述
    弹出界面,按需修改(图示以写单个保持寄存器为例),单击OK按钮。
    在这里插入图片描述

    双击数值处表格,在弹出的对话框中修改数值即可。
    在这里插入图片描述

    4.2.3 其它说明

    软件在使用功能码05时,无法通过双击表格修改数据,只能设置为功能码01,然后通过双击表格修改数据。

  • 相关阅读:
    react组件父子传值
    关于智能空气动力学
    异步函数(async/await)
    【英雄哥七月集训】第 27天:图
    读取图片输出字符图案:用字符输出足球的图案
    linux修改root密码
    视频转gif的几个方法
    【单目3D目标检测】MonoGround论文精读与代码解析
    可信(隐私)计算
    医院电子病历编辑器,EMRE(EMR Editor)源码
  • 原文地址:https://blog.csdn.net/qq_37424623/article/details/132619264
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号