① Modbus 主从机的地址怎么定啊比如0或者1
Modbus主机的地址不需要设定,从机的地址可设定为1~247。
② modbus的ip与id
modbus的ip与id :Modbus是一种通讯协议,主要应用于电子控制器上的一种通用语言。Modbus支持多种电气接口,如RS232、RS485、TCP/IP等。多数Modbus设备通信是通过串口或TCP/IP进行连接。
通常情况下 Modbus是主从架构,即通信节点是Master,其它使用Modbus协议参与通信的是slave节点(最多247个,地址范围为1-247,0节点是广播地址)。每个slave设备都具有一个唯一的地址。
③ MODBUS协议的地址码在实际工程中是怎样设置的要注意哪几点
1、MODBUS主站不需设置地址码,只有MODBUS从站需要设置地址码,有效地址码范围是1~247。
2、不同的MODBUS从站设备,设置的方法可能有所不同:有的通过拨码开关硬件设置,有的通过配置软件设置。
④ modbus规约,寄存器的地址怎么定义我的pic芯片采集到的电压数据存放在一个数组中,我如何读取这些数据
根据图中数据,设备状态的modbus地址定义为3x5038。从附录一知道,设备状态定义了32种状态(对应序号),这样,你可以依据某种状态对应赋值3x5038=1~32,同时对应赋值状态码3x5045=0x0000~0x2a00,以及是否置故障状态(no/yes)而赋值故障代码3x5050~3x5051。
⑤ Modbus地址是5位还是6位3区和4区哪个用来读模拟量输入
一、Modbus地址其实指的是各类寄存器的设备编号,为5位十进制数,各区的编号从1到9999,即:
● 00001 ~ 09999 :离散量输出继电器编号
● 10001 ~ 19999 :离散量输入继电器编号
● 30001 ~ 39999 :模拟量输入寄存器编号
● 40001 ~ 49999 :保持型输出寄存器编号
二、3区是读模拟量输入寄存器,4区是用于写数据到输出寄存器。
三、Modbus地址虽然是5位十进制数,但由于功能码的定向作用,如功能码01/05/15就只能操作0X区,不会操作其他区,所以编程时只需要后4位数,而且要把它换成16进制地址(地址从0开始),即:
通讯帧里的设备地址=(4位十进制设备编号-1)转换成16进制
如用功能码02读取1区中编号为10012的输入继电器的状态,通讯帧里的设备地址就要转换成:
0012-1=(0011)十进制 =(000B)十六进制
⑥ MODBUS规定的内容,具体是什么意思
起始符+设备地址+功能代码+数据+效 验码+结束字符为MODBUS协议中ASCLL的一帧,这种格式称之为:帧格式。

⑦ modbusserver的地址是多少位的
Modbus协议定义的寄存器地址是5位十进制地址,即:
线圈(DO)地址:00001~09999。
触点(DI)地址:10001~19999。
输入寄存器(AI)地址:30001~39999。
输出寄存器(AO)地址:40001~49999。
由于上述各类地址是唯一对应的,因此有些资料就以其第一个数字区分各类地址,即:0x代表线圈(DO)类地址,1x代表触点(DI)类地址、3x代表输入寄存器(AI)类地址、4x代表输出寄存器(AO)类地址。
在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。
⑧ modbus 单片机开关量起始地址怎么确定
MODBUS是一个完整的协议,与51单片机完全不相干。明白了这点,暂时把51单片机这个因素排除,回到MODBUS的方式来讨论问题。
有8个“线圈”需要控制,上位机与下位机约定这8个“线圈”的地址是多少,假设是19到27。MODBUS主机发指令,19号线圈吸合,从机接收到指令,具体怎么执行19号线圈吸合再说,只要能够返回响应(或者异常),从MODBUS协议的层面来看,这件事情就已经完事了。
下面说具体执行19号线圈吸合,这个事情MODBUS是不去管的,由下位机自己看着办。你愿意接一个LED亮一下,或者接一个继电器动作都行。或者你什么也不做,只是记录下这个动作都行。总之,这个具体的行为是具体设备自己定义的。
⑨ modbus 协议中,操作数01(读线圈状态)对应的地址是怎么定义的是位地址还是寄存器地址
功能码01(读线圈状态)对应的地址是线圈的地址(即位地址),若要求其所在的寄存器地址,计算如下:
线圈的位地址/16=整数商(即寄存器地址)+余数(即位偏移地址)
⑩ modbus规约,寄存器的地址怎么定义我的pic芯片采集到的电压数据存放在一个数组中,我如何读取这些数据
你设定一个起始地址(自己定义,不大于65535),将这个地址和你的数组的第0个元素对应。假设地址从6000开始,你的数组是a=[ 0,1,2,3,4,5,6,7,8,9],则6000对应0,6001对应1,以此类推。上位机软给个命令想获取从6000地址开始的后面2个字,格式如下:
01 03 17 6F 00 02 CRCL CRCH (假设地址为01,使用CRC16效验)
你只需要从你的数组中从0位置开始取2个字,4个字节返回就行了,格式如下;
01 03 04 00 00 00 01 CRCL CRCH