点击【 大 中 小 】放大字体.
问:modbus代表存储器(应为保持寄存器>的地址是40001~4xxxx,请求帧的16进制数地址应该怎么写呢?S7-1200书上的例7-6将数据16#AA55写入DB3的数组元素Aray[4]中,对应的modbus地址是16#0004,modbus的存储器地址不是40001~4xxxx吗?为什么这里储存器的地址是16#0004,就算转化为10进制也不是4XXXX啊? WWW_PL※CJS_COM-PLC-技.术_网
回答:WWW_PLC※JS_COM-PmLC-技.术_网
Modbus地址为包含数据类型和偏移量的6个字符的数值。左边两个字符决定数据类型,右边四个字符是该数据类型中的序号。使用Modbus地址时应注意下述问题:plcjs.技.术_网
1)你说的40001~4xxxx是美国Modicon公司和GE公司PLC使用的Modbus地址,它是基于1的地址,即同类元件的首地址为1。西门子PLC的Modbus地址是基于0的地址。W1WW_P4LCJS_COM-PLC-技.术_网
2)美国的Modbus地址左起第2位用来表示元件的类型,例如I0.0的Modbus地址为010001。因为数据类型已经包含在功能码中了,西门子的I0.0的Modbus地址实际上为000000,I2.0的Modbus地址为000016(或十六进制数16#0010),而不是010017。 WWW_PLC※JS_COM-PmLC-技.术_网
例7-6的例程OB1中的MB_SLAVE指令的输入参数MB_HOLD_REG设置的保持寄存器的起始地址为P#DB3.DBX0.0,例7-6的DB3中的数组为Array[0..9]of WORD,数组的字元素Aray[4]在DB3中的寄存器字的编号为4(第1个寄存器字Aray[0]的编号为0),因此Aray[4]的Modbus地址为4。
载入中...