请教各位关于Modbus ASCII通讯协议的问题

我用sscom32向MD204L通过Modbus ASCII 协议发送数据500,命令用03,格式3A 30 31 30 33 30 32 30 31 46 34 30 35 0D 0A ,由于没有指定寄存器地址,发送一次会在第一个寄存器内显示500,再次点击会在第二个里面显示500,请问有没有其他命令或者格式能指定寄存器的地址,只向指定的寄存器发送数据,不影响其他寄存器?

这个很简单啊。这个的话就是协议的问题了。
比如寄存器先定义好了对应的编号,比如1号、2号、3号.......
然后发送的数据的格式为:31 ....(后面紧跟数据),比如:
31 3A 30 31 30 33 30 32 30 31 46 34 30 35 0D 0A (代表发给1号寄存器的数据)
发送
3A ......代表发给10号寄存器的数据。依次类推。主要是在单片机那边对数据的处理。
总之一个原则,在单片机能存储大小、处理的范围内定义好协议就是了。追问

3A 30 31 30 33 30 32 30 31 46 34 30 35 0D 0A 是ASCII形式的,转化成十六进制就是 ":01030201 F405"

" : "表示起始位,01是分机地址,03是功能命令, 02是数据字节数,01F4就是500这个数据,05是LRC校验,请问寄存器的地址加在哪里?

追答

哦。大概明白了。
按你的意思的话,寄存器应该是在编程里设置的。声明我不会汇编、C那些的。我只做上位机这块的。那么寄存器应该是只能容得下限制的数量的数据吧?要么就是可以设置寄存器存储哪些范围的数据。寄存器应该是在收到数据后用来“调用”的吧。既然你这里都有“分机地址”,那么肯定可以设置哪些范围的“分机地址”就调用对应的寄存器不就行了吗。PS:对寄存器实在是不了解

追问

寄存器是MD204L里面用来存放十进制或者十六进制数据的,类似于文本框,我说的“分机地址”应该是与MD204L连接的那个设备的地址,这个我不懂,我遇到的问题应该跟协议有关,能指定寄存器地址的协议

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
无其他回答

modbus ascII是不是两个字符才发送一个8bit数据
MODBUS协议定义了两种传输模式,RTU与ASCII。在RTU模式下,每发送一个8位数据,实际只用了一个字节。相反,在ASCII模式中,同样的8位数据会通过两个ASCII字符发送。选择模式时,通常考虑数据量大小和数据类型。若数据量较小且主要是文本信息,ASCII模式更合适。然而,当通信数据量大且主要是二进制数值时,...

Modbus通讯协议 通讯格式及模式区别的疑问
回答第一个问题:ASCII协议的起始和结束有固定字符表示,比如收到":"就认为报文开始,收到回车就认为报文结束。其报文均为ASCII码可见字符,因此较16进制字节使用效率较低。RTU协议使用数据传输的间隔表示数据的起始和结束,报文前有大于3.5个字节的空闲那么认为报文开始,报文后有3.5以上个字节的间隔就...

Modbus通讯协议中的ASCII传输,每个字节都作为一个ASCII码(两个十六...
实际上在ASCII模式下,所有的通讯数据都是ASCII码,包括帧结束用的也是ASCII码里的回车、换行。每个字节都作为一个ASCII码,这里说的有点歧义。应该说是两个ASCII码。比如要传送一个字节,字节内容是0x23,则实际传送的是两个ASCII码,即字符2(0x32)和字符3(0x33)。这种编码的好处是所有的字符都...

Modbus协议的ASCII模式和RTU模式有什么不同?(总结)
Modbus协议的ASCII模式与RTU模式的主要区别在于数据传输格式和冗余校验方式。在ASCII模式下,消息帧以英文冒号开始,以回车和换号结束,字符集为十六进制的0-9和A-F。每个8位的字节被拆分成两个ASCII字符进行发送,允许的传输时间长达1秒。ASCII模式采用纵向冗余校验(LRC)进行错误检测。相反,RTU模式下,...

一分钟了解!Modbus RTU与Modbus ASCII有什么区别
Modbus协议主要工作在主从模式下,包含ASCII和RTU两种传输模式。其中,ASCII表示美国国家信息交换标准编码,RTU代表远程终端设备。Modbus工作原理依托主从通信模式,主设备负责初始传输,从设备根据主设备请求进行响应。主设备和从设备间通信包括单播与广播。单播下,指定设备接收并反馈数据;广播下,主设备向多个...

关于.net请求ModBus-Ascii问题
现在我们分析设备回复的信息,0x83,即表示通讯出现异常,因为Modbus协议规定,回复信息中,功能码最高位置高,即说明通讯出错。而数据0x76就是错误代码。所以要找到你错误的原因,问题的关键在你的错误代码0x76。但是参阅Modbus协议标准,你会发现0x76不是一个标准的错误码,协议中根本没有提到,所以这个...

MODBUS协议中的以ASCII方式传输数据是不是要把数据转换成ASCII码才能...
没错,是这样的。ASCII方式主要是把数据域的每个字节的十六进制数据,换成2个字节的ASCII码,再加上前缀、后缀符号的ASCII码即可。

您好,想给你请教下关于modbus的格式中,奇偶校验和LRC校验之间的区别,MOD...
是这样的:在Modbus ASCII中,咱们可以定义A B C D E 为一帧数据。这里面A,B,C,D是咱们要实现目的的内容,就是比如这里面的ABCD就是发出一个访问2个连续地址的内容的这个功能。这里面的E就是LRC校验码,它存在的意义就是让通讯的双方都能确定这个ABCD就是我需要发出的内容,而不是什么ABCF...

工控-对ModBus通讯协议的理解
Modbus协议主要分为两种接口:ASCII和RTU。ASCII接口使用ASCII字符编码,RTU接口采用二进制编码并结合CRC(循环冗余校验)进行错误检测。由于ASCII和RTU接口的编码方式不同,配置为ASCII的设备与配置为RTU的设备无法直接通信。RTU设备通常通过RS-232、RS-485或RS-422接口进行通信,其中RS-485接口因通信距离远、...

...ASCII通讯协议,但好像不是标准的MODBUS ASCII,怎么解析,下图中数 ...
这属于字符串直接指令,与MODBUS ASCII不相干,MODBUS ASCII中每个ASCII都用双字节十六进制来发送。Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。

相似回答