请问有两个变频器,每个变频器作为一个MODBUS的从站,每个变频器要读写的数据有当前频率、增益值,那么在使用MBUS_MSG这个指令时,对一个变频器要使用两次MBUS_MSG指令分别对目前频率和增益值进行读或写?这两个MBUS_MSG指令的从站地址是一样的?
Addr读写从站的数据地址,这个是地址是随意的吗?两个变频器的参数分别是当前频率和增益值,那么这两个变频器作为两个从站,每个变频器用两个MBUS_MSG指令,这两组指令分别对应两个变频器的当前频率和增益值,请问1号变频器用于读取当前频率MBUS_MSG的Addr可以和2号变频器用于读取当前频率MBUS_MSG的Addr相同吗?1号变频器用于写入增益值MBUS_MSG的Addr可以和2号变频器用于写入增益值MBUS_MSG的Addr相同吗?为什么?
COUNT定义的通讯个数是由什么决定的呢?读或写一个参数就是1吗?
要是对一个数字量或模拟量模块进行MBUS_MSG的读或写,COUNT的数量是由模块的输入输出数量决定吗?
请举例说明一下,谢谢各位前辈!
最佳答案
以下回答基于两台变频器是同一型号的。
1、
请问有两个变频器,每个变频器作为一个MODBUS的从站,每个变频器要读写的数据有当前频率、增益值,那么在使用MBUS_MSG这个指令时,对一个变频器要使用两次MBUS_MSG指令分别对目前频率和增益值进行读或写?这两个MBUS_MSG指令的从站地址是一样的?
答:
当对一台变频,一个参数时写、另一个参数是读时,必须用两个 MBUS_MSG指令,这两个MBUS_MSG指令的 SLAVE 脚填同一个变频器的地址,ADDR 脚则是不同的表示对变频器的哪一个参数进行读写。
当对一台变频,两参数都是读时,且两个参数连续,或者地址比较近,则用一个指令读写是可以的,只是中间有多读的,增加了通讯负担;若两个参数地址离的比较远则要分开且两个指令读;
当对一台变频的两个参数都是写时,且两个参数连续,则且一个指令时可以进行写操作的。
但如果参数是分开的,那最后用两个指令分别写。
若用两个 MBUS_MSG指令对同一变频操作,这两个MBUS_MSG指令的 SLAVE 脚填同一个变频器的地址,ADDR 脚则是不同的表示对变频器的哪一个参数进行读写。
是读还是写是由 RW脚决定的,0 = 读, 1 = 写
2、
请问1号变频器用于读取当前频率MBUS_MSG的Addr可以和2号变频器用于读取当前频率MBUS_MSG的Addr相同吗?1号变频器用于写入增益值MBUS_MSG的Addr可以和2号变频器用于写入增益值MBUS_MSG的Addr相同吗?为什么?
读写 1、2号变频器的同一个参数,调用两次 MBUS_MSG 指令,其 ADDR 地址是相同的,COUNT 也是相同的,但是两个MBUS_MSG 指令的 Slave 脚写的是两台变频器的地址,从这个地址上面区分读写的是哪一台变频器。
3、
COUNT 是由你一次读写的保持寄存器个数以及数据类型决定的,这个要看变频器的说明书。比如增益一般是浮点数,那浮点数是4个字节,那 COUNT 就是 2。
4、变频率器的数字量模拟量都有保持寄存器地址;
5、手册中保持寄存器一般提供的是16进制地址,要将其转化为十进制,再加1,然后在最前面加上数字4,形成一个5位的MODBUS RTU 保持寄存器地址,中间不够的位数补0;
比如 1000H 转换完就是 4096,则保持寄存器地址就是 44097,这个换算后的地址就是 ADDR 脚要写的值。
6、请仔细阅下面的资料,并结合变频器的说明书
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/SmartSMS/020.html
提问者对于答案的评价:
谢谢您!
请问您说的“手册中保持寄存器一般提供的是16进制地址,要将其转化为十进制,再加1,然后在最前面加上数字4,形成一个5位的MODBUS RTU 保持寄存器地址,中间不够的位数补0;”这里说的手册是指什么手册?您说的这个方法在哪里有介绍?
最佳答案作者回复:
变频器手册
可以看看MODBUS RTU 协议
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc343813.html