首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

modbus通讯协议解析

ModBus 通讯协议分为 RTU(远方数据终端) 协议和 ASCII 协议: 当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个字节作为两个ASCII...这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。...功能码:通讯传送的第二个字节。ModBus通讯规约定义功能号为1到127。本仪表只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。...作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。   ...从机响应的命令格式是从机地址、功能码、数据区及CRC码。数据区中的寄存器数据都是每两个字节字节在前。 4.功能码06,单点保存   主机利用这条命令把单点数据保存到仪表的存储器。

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

Redis网络通信协议说明

Integers 这种回复类型只是用CRLF结尾字符串来表示整型,用一个字节的“:”作为前缀。例如:“:0\r\n”,或者“:1000\r\n”是整型回复。...C: GET mykey S: $6\r\nfoobar\r\n 服务器发送第一行响应,该行以“$”开始后面跟随实际要发送的字节数,随后是CRLF,然后发送实际数据,随后是2个字节的额外数据用于最后的CRLF...服务器发送的准确序列如下: "$6\r\nfoobar\r\n" 如果请求的值不存在,批量响应将使用特殊的值-1来作为数据长度,例如: C: GET nonexistingkey S: $-1 当请求的对象不存在时...,客户端库API不会返回空字符串,而会返回空对象。...这种命令用最后参数作为字节计数器”,然后发送批量数据(因为服务器知道读取多少个字节,所以是二进制安全的)。

73310

【RL-TCPnet网络教程】第40章 RL-TCPnet之TFTP客户端(精简版)

本章配套的例子是将开发板作为TFTP客户端,使用开发板上面的SD卡作为客户端的存储介质。所以测试本章节的例子,务必要准备一个SD卡。  ...第3个参数是要读取出来的数据大小,单位字节。 返回值,返回从文件中实际读出的字节数。 使用这个函数要注意以下问题: 设置读取函数时,必须设置指定大小的字节数。...第3个参数是要写入的数据大小,单位字节。 返回值,返回实际写入文件的字节数。 使用这个函数要注意以下问题: 设置写函数时,必须设置指定大小的字节数。...main_TcpNet() == __TRUE); } } 40.3 TFTP服务器端软件和板子的操作步骤 本章节的测试稍麻烦些,需要大家配置工程,并且在电脑端建立一个TFTP服务器,而开发板是作为客户端...,并且采用SD卡作为存储介质(测试前要准备好一个SD卡插到开发板上面),所以大家测试本章节配套的例子前,务必将这里的操作步骤全部看完才可以做测试!

2.5K10

Java Code Review 指南

不要会null数组/集合。使用Collection.emptyList()等静态方法返回空集合。 不要有反思维的系统设计。使用大多数人容易理解的逻辑处理问题。如果有通用的算法模型除外。...对内提供的RPC接口统一使用Response类和RespCode响应码。 和业务结合的算法,要明确注释清楚。...普通索引使用idx_作为前缀,后面根据索引顺序用下划线( _ )连接各个字段名,字段名使用驼峰格式。如idx_patientName_areaId等。...唯一索引使用uni_作为前缀,后面根据索引顺序用下划线( _ )连接各个字段名,字段名使用驼峰格式。如uni_patientName_areaId等。...---- 提交说明 提交的message英石解释两个方面,做了什么和为什么要做。 提交标题总结本次提交都做了什么,提交细则详细描述为什么要这么做。

1.7K50

【RL-TCPnet网络教程】第17章 RL-TCPnet之UDP通信

UDP接口函数通过UDP Socket做数据传输,主要用于不把数据可靠传输作为首选的场合。因为UDP没有确认机制,会有丢包问题。...如果这两个选项都不使用的话,设置此参数为0即可,这样一定程度上可以加快系统响应时间。 3、第3个参数是回调函数,用于事件监听。...对于RL-TCPnet V4.60及其以上版本,如果用户将此函数的形参与0x8000进行或操作,即最高位设置为1,那么此函数申请失败的话会返回空指针,即数值0,并触发函数sys_error的调用。...(2)Memory Pool size 参数范围1536-262144字节。 内存池大小配置,单位字节。...通过变量iCount设置要发送的字节数,这里是发送1024字节数据。 通过变量iCount设置要发送的字节数,这里是发送5MB数据。

2.8K30

【RL-TCPnet网络教程】第37章 RL-TCPnet之FTP客户端

本章配套的例子是将开发板作为FTP客户端,使用开发板上面的SD卡作为客户端的存储介质。所以测试本章节的例子,务必要准备一个SD卡。  ...第3个参数是要读取出来的数据大小,单位字节。   返回值,返回从文件中实际读出的字节数。 使用这个函数要注意以下问题: 设置读取函数时,必须设置指定大小的字节数。...第3个参数是要写入的数据大小,单位字节。 返回值,返回实际写入文件的字节数。 使用这个函数要注意以下问题: 设置写函数时,必须设置指定大小的字节数。...FTP Client FTP 配置,打上对勾就使能了此项功能 (1)  Response Timeout in seconds FTP客户端等待FTP服务器响应时间,如果溢出,客户端将终止操作。...37.5 FTP服务器的建立方法和板子的操作步骤 本章节的测试稍麻烦些,需要大家配置工程,并且在电脑端建立一个FTP服务器,而开发板是作为客户端,并且采用SD卡作为存储介质(测试前要准备好一个SD卡插到开发板上面

1.5K20

电力-ModBus_RTU通讯规约1

作为主机请求发送,通过功能码告诉从机应执行什么动作。作为从机响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。...PDM响应的命令格式是从机地址、功能码、数据区及CRC码。数据区的数据都是两个字节,并且高位在前(电能量除外)。...:从机响应字节数返回的信息备 注从机地址101来自从机01功能码102读开关量输入状态数据长度1011个字节(8个BIT位)DI状态数据10BDI寄存器内容CRC码2E04F由从机计算得到CRC码3.2...保存数据221388数据地址002DCRC码2FC63由主机计算得到的CRC码 从机(PDM)响应返回的报文格式:从机响应字节字节数举 例从机地址101来自从机01功能码110写多路寄存器起始地址2002C...PDM送的错误码的格式如下(CRC码除外): 地址码1字节功能码1字节(最高位为1)错误码1字节CRC码2字节 PDM响应回送如下错误码: 81非法的功能码接收到的功能码PDM表示不支持82非法的数据位置指定的数据位置超出

14410

网络协议之:memcached text protocol详解

作为客户端和服务器端的模型,两者的通讯肯定是有特定的协议的,适用于memcached的协议就叫做memcached protocol。...首先是get和gets的区别,get 用于获取key的value值,若key不存在,返回空。支持多个key。gets 用于获取key的带有CAS令牌值的value值,若key不存在,返回空。...为什么这些命令被叫做第三类命令呢?这是因为这些命令只需要一个命令行即可,并不需要向服务器端传入额外的数据块。...在UDP中帧头长8个字节,其中0-1个字节表示的是请求ID,请求ID是由客户端生成的一个单调递增的值。服务器端将会使用这个ID来标记是对哪个请求的响应。特别是在有服务器端有多个响应的情况下。...2-3个字节表示的是序列号,它的取值范围是0到n-1,其中n是消息中总的报文个数,也就是4-5个字节所表示的。 最后的6-7字节是保留字节,以备将来使用,现在设置为0。

32920

python文件操作二

pf.read(2) print content 结果: 读取:ab fileObject.readline( [size] ) 一行,如果给定了size,有可能返回的只是一行的一部分,以字符串的形式...pf: content = pf.readline(15) print content 结果: 大学之道, fileObject.readlines( [size] ) 把文件每一行作为一个...: 0 读取一行后文件操作标记位置为: 23 fileObject.seek( offset[, from ] ) tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后...Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0(默认值),这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。...如果出错,则返回空列表。

71720

一篇特殊的redis工具类 -- 独此一家

,但是有很多信息又是存在数据库当中的,每次查询数据库就是一次IO操作;请求响应时间等于网络响应时间和服务器响应时间;网络我们控制不了,服务器响应时间包括CPU计算时间和磁盘IO时间,其中CPU计算时间这个有硬件资源决定的...所以我们想到了(redis)缓存,作为一个key / value 存在,很多开发者自然的使用set/get 方式来使用 redis ,实际上这并不是最优化的使用方法。...假如一个key-value单元需要最小占用512字节,即使只存一个字节也占了512字节(比如set/get,一个key-value对应一条数据)。...这时候就有一个设计模式,可以把key复用,几个key-value作为一个大的value,大的value再作为一个value,set存入一个key中。这样同样512字节就会存放10-100倍的容量。...大多数的情况就是如此,但是在我实际的开发中传入的是个和业务有关的对象,给我的却是一个object对象(和业务没有半毛钱关系)。我想要让返回的对象和业务有关,还得强转一下!

48840

网络协议之:memcached text protocol详解

作为客户端和服务器端的模型,两者的通讯肯定是有特定的协议的,适用于memcached的协议就叫做memcached protocol。...首先是get和gets的区别,get 用于获取key的value值,若key不存在,返回空。支持多个key。 gets 用于获取key的带有CAS令牌值的value值,若key不存在,返回空。...为什么这些命令被叫做第三类命令呢?这是因为这些命令只需要一个命令行即可,并不需要向服务器端传入额外的数据块。...在UDP中帧头长8个字节,其中0-1个字节表示的是请求ID,请求ID是由客户端生成的一个单调递增的值。服务器端将会使用这个ID来标记是对哪个请求的响应。特别是在有服务器端有多个响应的情况下。...2-3个字节表示的是序列号,它的取值范围是0到n-1,其中n是消息中总的报文个数,也就是4-5个字节所表示的。 最后的6-7字节是保留字节,以备将来使用,现在设置为0。

34910

Redis协议规范(译文)

RESP在Redis中用作请求 - 响应协议的方式如下: 客户端将命令作为字符串数组发送到Redis服务器。 服务器根据命令实现回复一种RESP类型数据。...在 RESP 中, 一些数据的类型通过它的第一个字节进行判断: 单行回复:回复的第一个字节是 "+" 错误信息:回复的第一个字节是 "-" 整形数字:回复的第一个字节是 ":" 多行字符串:回复的第一个字节是...在这种特殊格式中,长度为-1,并且没有数据,因此Null表示为: "$-1\r\n" 当服务器使用Null 多行字符串回复时,客户端库API不应返回空字符串,而应返回nil对象。...RESP数组使用以下格式发送: *字符作为第一个字节,后跟数组中的元素数作为十进制数,后跟CRLF。 数组的每个元素的附加RESP类型。...例如,当BLPOP命令超时时,它返回一个计数为-1的Null数组,如下例所示: "*-1\r\n" 当Redis使用Null数组回复时,客户端库API应返回空对象而不是空数组。

98930

【第3版emWin教程】第28章 emWin6.x的C文件格式的汉字生成和实现(Unicode编码)

28.5 生成的是Unicode编码字体,而使用时为什么是UTF-8 初学者容易有这样的疑问,FontCvt软件生成的是Unicode编码的汉字,为什么emWin使用的时候不直接使用,还要多一次转换,即我们操作的时候是用的...Unicode有两种编码UCS-2和UCS-4,其中UCS-2用两个字节编码,UCS-4用4个字节编码。...App Task MspPro任务 :8192字节。 App Task UserIF 任务 :2048字节。 App Task COM 任务 :2048字节。...#define EX_SRAM 0 表示使用内部SRAM作为emWin动态内存,大小100KB。 默认情况下,本教程配套的所有emWin例子都是用外部SDRAM作为emWin动态内存。...#define EX_SRAM 0 表示使用内部SRAM作为emWin动态内存,大小100KB。 默认情况下,本教程配套的所有emWin例子都是用外部SDRAM作为emWin动态内存。

1K30

【RL-TCPnet网络教程】第14章 RL-TCPnet之TCP客户端

2、TCP接口函数通过TCP Socket做数据传输,主要用于数据安全作为首选的场合。TCP Socket发送完毕数据后会等待应答,任何数据包失败都会重传。...通过变量iCount设置要发送的字节数,这里是发送1024字节数据。 通过变量iCount设置要发送的字节数,这里是发送5MB数据。...通过变量iCount设置要发送的字节数,这里是发送1024字节数据。 通过变量iCount设置要发送的字节数,这里是发送5MB数据。...也许有读者会问,这里的响应时间为什么不是小于1ms的?...这是因为我们还没有让板子跟电脑端的服务器建立连接,客户端一直在发SYN包尝试建立连接,所以占用了不少时间,从而导致响应时间不是小于1ms的,建立了连接后就好了。

3.3K10

【C进阶】——动态内存管理详解 及 经典笔试题解析

1.为什么存在动态内存分配 我们先来想一下,我们现在掌握的开辟内存的方式是什么: 是不是就是直接创建一个变量或者数组,然后操作系统给我们分配空间: int main() { int val =...但是,calloc 会把申请的空间的每个字节都初始化为0。 就拿上面那段代码,我们来调式看一下: 和malloc 一样,calloc 函数如果开辟内存块失败,则返回空指针void*。...我们看到上面代码中我们扩容后返回的指针赋给指针变量ptr ,那为什么不直接给p呢? 因为,realloc开辟空间也有可能会失败的,它失败同样返回空指针。...因为malloc有可能返回空指针,所以像上面这样不做判断,直接对malloc返回的指针,解引用,就可能会导致问题出现。...,那p 作为1个整型指针,加1跳过4个字节,那我们循环10次,是不是就越界访问了啊。

13110
领券