现在的问题是40001对应的vd404,40003对应vd414,40005对应vd424,40007对应vd434,40009对应vd444,但是我中间在vb450加了报警点位,那我modbus地址应该怎么读取,豆包说读40012的低位,我有点想不明白,是不是vd450读取不了呀
现在的问题是40001对应的vd404,40003对应vd414,40005对应vd424,40007对应vd434,40009对应vd444,但是我中间在vb450加了报警点位,那我modbus地址应该怎么读取,豆包说读40012的低位,我有点想不明白,是不是vd450读取不了呀
那个品牌的 MODBUS 通讯地址查看

读取的寄存器地址就是40001-40003,读取连续的4个字节或2个字,暂存到某个V区或DB区的寄存器,再从寄存器中取出对应的位即可
看一下是不是低字节高地址,需要转换的
你前面读到了我也很奇怪为什么会读到,从站的起始地址对应着40001,那么后面的地址也应该是连续的,怎么会跨度那么大?40001对应着VW404,那么40003就是VW408,40005就是VW412,40007就是VW416······你这个对应关系我理解不了。
如果你真读到了,说明你的从站起始地址就不是VW404,就是你从站块那里填的&VBxxxx,那就是起始地址,然后你要做的操作就是吧你VD4xx的数据往起始地址的对应位置MOV,这样你的40001,40003······读到的才是你想要的值,如果是这样的话,你只需要把VD450的数据传到缓存地址的对应位置,然后用4xxxx的对应地址去读就可以了。
现在的问题是40001对应的vd404,40003对应vd414,40005对应vd424,40007对应vd434,40009对应vd444,但是我中间在vb450加了报警点位,那我modbus地址应该怎么读取,豆包说读40012的低位,我有点想不明白,是不是vd450读取不了呀
40001应该对应的是一个字,而不是双字
像你说的40001对应VD404,VD404是双字,
回复内容:
对:121111115 你前面读到了我也很奇怪为什么会读到,从站的起始地址对应着40001,那么后面的地址也应该是连续的,怎么会跨度那么大?40001对应着VW404,那么40003就是VW408,40005就是VW412,40007就是VW416······你这个对应关系我理解不了。如果你真读到了,说明你的从站起始地址就不是VW404,就是你从站块那里填的&VBxxxx,那就是起始地址,然后你要做的操作就是吧你VD4xx的数据往起始地址的对应位置MOV,这样你的40001,40003······读到的才是你想要的值,如果是这样的话,你只需要把VD450的数据传到缓存地址的对应位置,然后用4xxxx的对应地址去读就可以了。 内容的回复:是的,指针地址是&400,前面数据是真读到了,后面加了一个450不知道该怎么读
回复内容:
对:请叫我王老湿 看一下是不是低字节高地址,需要转换的 内容的回复:这个不是,就是主机读plc不需要转换,该转换的在plc内部转换了
现在的问题是40001对应的vd404,40003对应vd414,40005对应vd424,40007对应vd434,40009对应vd444,但是我中间在vb450加了报警点位,那我modbus地址应该怎么读取,豆包说读40012的低位,我有点想不明白,是不是vd450读取不了呀
这个都不对,40001 对应vd404(vb404-vb407) 40003应该是vd408(vb408-vb411),40005 —>vd412,40007 —>vd416
40009 —>vd420,
这样应该才是对的