开放型 MODBUS-TCP规范(中文版)2

2023-11-16

导读:
   5.3 等级2指令详述
   5.3.1 强制多点线圈 (FC 15)
  
   请求
  
  Byte 0: FC = 0F (16进制)
  Byte 1-2: 参考数值
  Byte 3-4: 比特数 (1-800)
  Byte 5: 字节数 (B = (比特数 + 7)/8)
  Byte 6-(B+5): 写入的数据 (最小意义位 = 第一个线圈)
  
   响应
  
  Byte 0: FC = 0F (16进制)
  Byte 1-2: 参考数值
  Byte 3-4: 比特数
  
   异常
  
  Byte 0: FC = 8F (16进制)
  Byte 1: 异常代码 = 01 or 02
  
   示例
  
  当参考值为0(在Modicon 984中为00001)时给3线圈写入值0,0,1
  
  0F 00 00 00 03 01 04 => 0F 00 00 00 03
  
  注意到返回的数据的格式和big-endian 体系结构不同。而且此请求如果调用乘法指令字且这些指令不以16位为界排列,那么该请求将在从站得到计算强化。
  
   5.3.2 读一般参考值 (FC 20)
  
   请求
  
  Byte 0: FC = 14 (16进制)
  Byte 1: 请求余项的字节数 (=7 x 组数)
  Byte 2: 第一组的参考值类型 = 适合于 6xxxx 扩展寄存外存储器的06
  Byte 3-6: 第一组的参考数值
  = 适于 6xxxx 外存储器的存储器偏移量
  = 适于 4xxxx 寄存器的32位参考数值
  Byte 7-8: 第一组的指令
  Bytes 9-15: (至于2-8字节,适于第二组)
  . . .
  
   响应
  
  Byte 0: FC = 14 (16进制)
  Byte 1: 响应的全部字节数
  (=组数+ 组的总的字节数)
  Byte 2: 第一组的字节数 (B1=1 + (2 x 指令数))
  Byte 3: 第一组的参考类型
  Byte 4-(B1+2): 第一组的寄存器值
  Byte (B1+3): 第二组的字节数 (B2=1 + (2 x 指令数))
  Byte (B1+4): 第二组的参考类型
  Byte (B1+5)-(B1+B2+2): 第二组的寄存器值
  . . .
  
   异常
  
  Byte 0: FC = 94 (16进制)
  Byte 1: 异常代码 = 01 或 02或03或04
  
   示例
  
  参考值为1时读1扩展寄存器: 2 (在 Modicon 984中外存储器1偏移量2)得到 16进制值1234
  
  14 07 06 00 01 00 02 00 01 => 14 04 03 06 12 34
  
  (将来)
  
  参考值0时读1寄存器返回16进制值1234,参考值5时读2寄存器返回16进制值5678和9abc。
  
  14 0E 04 00 00 00 00 00 01 04 00 00 00 05 00 02 => 14 0A 03 04 12 34 05 04 56 78 9A BC
  
  注意传输尺寸限制很难用数学公式精确定义。概括说来,由于缓冲的大小的限制以及考虑到每个请求和响应数据帧的总长度请求和响应的消息尺寸均限于256个字节。如果从站由于响应太大而拒绝发送此消息将产生异常类型04。
  
   5.3.3 写一般参考值(FC 21)
  
   请求
  
  Byte 0: FC = 15 (16进制)
  Byte 1: 请求余额的字节数
  Byte 2: 第一组的参考值类型= 6xxxx 扩展寄存器存储器的06
  Byte 3-6: 第一组的参考数值
  = 适于 6xxxx 外存储器的存储器偏移量
  = 用于 4xxxx 寄存器的32 位的参考数值
  Byte 7-8: 第一组的指令数 (W1)
  Byte 9-(8 + 2 x W1): 第一组的寄存器数据
  
  (从字节2开始为其它组复制组的数据帧)
  . . .
  
   响应
  
  响应是对询问的直接回应
  
  Byte 0: FC = 15 (16进制)
  Byte 1: 请求余额的字节数
  Byte 2: 第一组的参考值类型 = 6xxxx 扩展寄存器存储器的06
  Byte 3-6: 第一组的参考数值
  = 6xxxx 外存储器的存储器偏移量
  =用于 4xxxx 寄存器的32 位的参考数值
  Byte 7-8: 第一组的指令数 (W1)
  Byte 9-(8 + 2 x W1): 第一组的寄存器数据
  
  (从字节2开始为其它组复制组的数据帧)
  . . .
  
   异常
  
  Byte 0: FC = 95 (16进制)
  Byte 1: 异常代码= 01 或 02或03或04
  
   示例
  
  参考值为1时写1扩展寄存器: 2 (在 Modicon 984中外存储器1偏移量2)得到 16进制值1234
  
  15 09 06 00 01 00 02 00 01 12 34
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开放型 MODBUS-TCP规范(中文版)2 的相关文章

  • 从 8 位转换为 1 字节

    我有一个 8 位的字符串 我想将其转换为 1 个字节 我不确定为什么我的功能无法正常工作 我将 8 位存储到 8 个无符号字符的数组中 到目前为止 这是我的方法 unsigned int bitsToBytes unsigned char
  • 如何在字节数组中搜索“StringA”?

    使用 FreePascal 如果没有 FP 示例 则使用 Delphi 给定一个作为 字节数组 的 2048 字节缓冲区 我如何在缓冲区中搜索 StringA var Buffer array 1 2048 of byte repeat i
  • Java 中的有符号字节类型和按位运算符?

    引用自甲骨文网站 http docs oracle com javase tutorial java nutsandbolts datatypes html byte 字节数据类型是8位带符号的二进制补码整数 最小值为 128 最大值为12
  • Ruby 如何处理字节/二进制?

    我正在尝试通过套接字发送一系列二进制字节 以满足我公司使用的特定标准 我公司中没有人以前使用过 Ruby 来实现这一点 但在其他语言中 他们一次发送一个字节的数据 通常使用某种 打包 方法 无论如何 我找不到动态创建二进制文件 或者根本无法
  • 撇号打印为 â\x80\x99

    import requests from bs4 import BeautifulSoup import re source url requests get http www nytimes com pages business inde
  • read() 函数的返回值是什么类型?

    我想从二进制文件中读取前 188 个字节 并检查第一个字符是否为0x47 代码如下 import os fp open try ts rb for i in range 100 buf fp read 188 if buf 0 x47 pr
  • 使用 python 连接字节列表

    我正在尝试开发一个工具来读取二进制文件 进行一些更改并保存它 我想做的是列出文件中的每一行 处理几行 然后再次加入该列表 这是我尝试过的 file open myFile exe r b aList for line in f aList
  • 如果 xmlcharrefreplace 和 backslashreplace 不起作用,我应该如何解码字节(使用 ASCII)而不丢失任何“垃圾”字节?

    我有一个网络资源 它返回给我的数据 根据规范 应该是 ASCII 编码的字符串 但在极少数情况下 我会收到垃圾数据 例如返回一种资源b xd3PS 90AC 而另一个资源 对于相同的键返回b PS 90AC 第一个值包含非 ASCII 字符
  • 使用 Java 将十六进制转储的字符串表示形式转换为字节数组?

    我正在寻找一种将表示十六进制值的长字符串 来自转储 转换为字节数组的方法 我无法比发帖者更好地表达它同样的问题在这里 http www experts exchange com Programming Programming Languag
  • Golang - ToUpper() 在单个字节上?

    我有一个 byte b 我想选择一个字节 b pos 并将其更改为大写 然后小写 bytestype 有一个方法叫做ToUpper 我如何将其用于单个字节 Calling ToUpper在单字节上 OneOfOne 给出了最有效的 调用数千
  • Java NIO ByteBuffer,翻转后写入

    我是 Java ByteBuffers 的新手 想知道翻转后写入 ByteBuffer 的正确方法是什么 在我的用例中 我将一个输出缓冲区写入套接字 outBuffer flip Non blocking SocketChannel int
  • Java 中最好的可调整大小的循环字节缓冲区是什么?

    我需要 Java 中的字节缓冲区类以供单线程使用 我应该能够在缓冲区后面插入数据并在前面读取数据 摊销成本为 O 1 缓冲区在满时应该调整大小 而不是抛出异常或其他东西 我可以自己写一个 但如果标准 Java 包中尚不存在这个 我会感到非常
  • 将一组字符串转换为 byte[] 数组

    我正在尝试将一组字符串转换为 byte 数组 首先 我执行以下操作将字节数组转换为字符串 public String convertByte byte msg String str for int i 0 i lt msg length i
  • 为什么java没有byte类型后缀? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Cp500 编码陌生事物(LF 和 NEL)

    最近 在从字节转换为字符串 然后再从字符串转换为字节的过程中 我遇到了 Cp500 EBCDIC 编码的奇怪问题 问题在于一个特定的角色就是在这个转变过程中 被转变为这个角色 下面的代码验证了这一点 byte b25 0x25 byte b
  • 在 Swift 中将 bytes/UInt8 数组转换为 Int

    如何将4字节数组转换为对应的Int let array UInt8 gt let value Int Example Input 0 0 0 x0e Output 14 我在互联网上找到的一些代码不起作用 let data NSData b
  • boto3 S3 对象解析

    我正在尝试编写一个 Python 脚本来处理存储在 S3 上的音频数据 我有一个 S3 对象 我正在使用它调用 def grabAudio filename directory obj s3client get object Bucket
  • 快速字符串到 byte[] 的转换

    目前我正在使用此代码将字符串转换为字节数组 var tempByte System Text Encoding UTF8 GetBytes tempText 我在我的应用程序中经常调用这一行 并且我真的很想使用更快的 如何比默认的 GetB
  • 如何使用 System.out.println 以十六进制打印字节?

    我已经声明了一个字节数组 我使用的是 Java byte test new byte 3 test 0 0x0A test 1 0xFF test 2 0x01 如何打印数组中存储的不同值 如果我使用 System out println
  • 设置字节中的特定位

    我正在尝试设置 Java 字节变量中的位 它确实提供了适当的方法 例如 setBit i 有谁知道我如何才能实现这一点 我可以按位迭代给定的字节 if my byte 1 lt lt i 0 但是我不能将此位置设置为 1 或 0 可以吗 使

随机推荐

  • Ado.net总结-Command(指挥官)

    Command 概述 在 System Data SqlClient 命名空间下 对应的 Command 类为 SqlCommand 在创建 SqlCommand 实例前必须已经创建了与数据库的连接 SqlCommand 类中常用的构造方法
  • js ajax callback全局,我如何在全局javascript变量中获取Ajax内容

    pastebin代码已经做到了 我猜您实际上面临的问题是存在的 因为您的ajax调用是 异步的 这意味着您正在 异步 发出ajax请求 并立即尝试访问全局变量中的值 但它尚未尚未设定 解决方案是在onReadyStateChange回调中执
  • 如何在EXCEL中运行ChatGPT,从此不再需要记函数

    文章目录 目录 文章目录 序言 如果你可以直接使用chatGPT 如果你不可以直接使用chatGPT 序言 Excel是处理大量数据非常有用的工具 然而 找到并实施正确的公式有时可能是一个复杂和令人沮丧的经历 幸运的是 ChatGPT可以成
  • Linux服务器chattr文件被黑问题解决方法

    木马攻击问题由来阐述 我买了三年的阿里云服务器 在阿里云官网买的 已经使用了一年多了 平时拿来搭建网站 有时也拿来学习技术和开发测试 一直使用很稳定 直到近期我服务器上安装了docker并部署了springboot mysql nginx项
  • 多线程的调度机制

    假设只有一个 CPU 在任意时刻只能执行一条机器指令 每个线程只有获取 CPU 的使用权才能执行指令 多线程并发运行在宏观上看是同时运行 实际上是各个线程轮流获取 CPU 使用权才能执行指令 所谓线 程的调度就是按照特定的机制为多个线程分配
  • MySQL5.7开启通用日志功能

    起因 因项目数据库占用异常 查询数据库有哪些IP地址连接使用 Windows环境下 操作步骤 1 修改MySQL服务的my ini 文件 开启通用查询日志 general log 1 log output FILE general log
  • git format-patch详解

    git format patch详解 打包最近的一个patch git format patch HEAD 有几个 就打包几个patch的内容 或git format patch n 打包版本n1与n2之间的patch git format
  • 【Mysql高频面试题整理 一】

    Mysql高频面试题 持续手机更新ing Mysql 常用的数据库之一 面试一般会问哪些相关的问题呢 今天带大家整理一波 后面持续更新 一点浅见 欢迎各位大佬莅临指导 Mysql面试高频题有哪些呢 1 Mysql的存储引擎有哪些 有什么区别
  • 如何使用Vue实现自定义双向数据绑定?

    目录 理解Vue的双向数据绑定 sync修饰符实现双向数据绑定 自定义组件实现双向数据绑定 总结 理解Vue的双向数据绑定 在 Vue 中 双向数据绑定是一项非常强大的功能 它能够使数据和视图之间保持同步 让开发者更加方便的操作数据 在本文
  • Linux文件编程常用函数详解——read()和write()函数

    read 函数 include
  • 使用pandas把计算数据写入excel的指定单元格

    要使用 pandas 将计算数据写入 Excel 的指定单元格 您可以使用 pandas DataFrame to excel 方法 首先 您需要使用 pandas read excel 方法将 Excel 文件读入一个 pandas Da
  • Stable Diffusion使用方法

    SD的本地安装教程有很多我就不重复了 这里主要是记录我在使用SD Webui的过程中遇到的问题 总结的一些提升出图效率 出好图概率的经验 先搞几张看看效果 二次元妹妹 高达 Ok 以上只是一小部分成品 属于是抛砖引玉之作 我当时设置的参数出
  • word打不开提示安装Genko.msi该怎办

    word打不开提示安装Genko msi该怎办 今天有同学给我说电脑有问题了 启动WORD后让安装Genko msi 正好解决了顺便写一个经验吧 方法一 1 错误提示是这样的 2 首先在开始菜单打开 运行 win7直接开始菜单输入就行 然后
  • webpack5后台管理

    1 系统基于panjiachen后台管理系统模板 升级webpack5 2 github地址 https chengmanxiang webpack5 vue2 admin 3 线上地址 webpack5 vue2
  • Java实战-基于JDK的LRU算法实现、优雅的实现代码耗时统计(Spring AOP、AutoCloseable方式)

    场景 Java中基于JDK的LRU算法实现 LRU算法 缓存淘汰算法 Least recently used 最近最少使用算法 根据数据的历史访问记录来进行淘汰数据 其核心思想是 如果有数据最近被访问过 那么将来被访问的几率也更高 在Jav
  • TS2550: Property ‘entries‘ does not exist on type ‘ObjectConstructor‘.

    TS2550 Property entries does not exist on type ObjectConstructor Do you need to change your target library Try changing
  • requests请求

    请求方式 requests get 发送get请求 通过params传递参数 requests post 发送post请求 通过json data 传递参数 data 数据报文 dict字典类型 默认情况下请求头为applilcation
  • Unity学习总结(学几个月C++,找到了用Unity和C#的活)

    一 主人物控制 通过调整Main Camera位置和角度 可以确定合适的游戏视角 可以建立playController脚本 里面存放对主人物进行控制的代码 transform translate 可以设置当前组件的坐标 transform
  • 【STM32学习笔记】(1)—— STM32详解

    什么是STM32 STM32的字面含义 1 ST 代表着意法半导体公司 即由什么公司生产 意法半导体公司是一家SOC厂商 所谓SOC System on a Chip 根据它的中文意思可以知道 把系统都做在一个芯片上 如果在PC时代我们说一
  • 开放型 MODBUS-TCP规范(中文版)2

    导读 5 3 等级2指令详述 5 3 1 强制多点线圈 FC 15 请求 Byte 0 FC 0F 16进制 Byte 1 2 参考数值 Byte 3 4 比特数 1 800 Byte 5 字节数 B 比特数 7 8 Byte 6 B 5