我两台西门子200PLC做为从站用MODBUS通讯,没有模拟量输入和输入,只有数字量输入和输出,也就是中控读取I点,控制Q点。地址应该怎么写。下面有图请大神给出答案。
问题补充:
00001代表Q0.0,10001代表I0.1这程序中该怎么写,有些不明白。下图是第一张空白图。
图片说明:
最佳答案
1、MODBUS 地址与PLC内部的 I、Q、AI 有固定的对应关系。其对应关系在链接中。
只有 MODBUS 的保持寄存器在 PLC 的 V 区的地址是由 SM0.1调用子程序 MBUS_INIT 进行初始化时,其管脚 HoldStart、MaxHold 来决定哪一块 V 存储区划为了 MODBUS 的保持寄存器区。
比如:MBUS_INIT 的管脚 HoldStart = VB0,MaxHold=1000 时:
规定了 Modbus 保持寄存器区从 VB0 开始(HoldStart = VB0),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB0~VB1999共2000个字节
则 Modbus 保持寄存器区与 V 区有如下对应系:
40001 VW0
40002 VW2
40003 VW4
....
40998 VW1994
40999 VW1996
41000 VW1998
2、主站读或者写 MODBUS 地址,其实就是读写从站的 I、Q、AI、V 区。
3、从站 PLC 的程序中使用 I、Q、AI、V 该怎样用就怎样用,这与工艺控制有关。MODBUS 地址是上位机或MODBUS 主站与这个从站通讯时使用的。
4、通讯程序只要使用 SM0.1 调用 MBUS_INIT 初始化指令,使用 SM0.0 调用MBUS_SLAVE,并指定相应参数就可以了。关于参数的详细说明在链接中。
5、使用链接
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/s7-200/communication/modbus/modbus%20slave/modbus_on_cpu.htm
提问者对于答案的评价:
如你所说40001是VW0,上位置控制40001置1,下位机程序段开点是VW0,后面是个线圈Q0.0。但是VW0不让写在开点上呀。是用VW0转换为V点代替,还是转换为M点代替。应该怎么转换。
最佳答案作者回复:
假如 40001是 VW0,上位置控制40001置1,下位机程序段开点并不是VW0,而是 V1.0。
西门子的整数据格式是“高位低存,低位高存”,什么意思?
就是VW0含 VB0、VB1,VB0的 7-0 位对应 VW0 的 15-8位,VB1的 7-0 位,对应 VW0 的 7-0位
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc362945.html