西门子200的MBUS-MSG指令的问题

48193是该变频器说明书里的频率地址,194是电流,195是电压之类的这样,如果和变频器通讯,如果在ADDr填48193,count那里填5,DATAptr填VB0
读取变频器数据是不是就会读取48193,48194,48195,48196,48197五个参数然后由VB0,VB2,VB4,VB6,VB8分别存储,是这样吗

最佳答案

&VB0 对应的地址是一个字,也就是对应VW0,你一次读五笔,这五笔就是这样对应。&VB0=VW0,   &VB1=VW2,  &VB2=VW4,  &VB3=VW6,  &VB4=VW8
你可以参考下面的说明:
参数Count指定在此次请求中要读取或写入的数据元素数。对于位数据类型,Count将是位数;而对
于字数据类型,它指的则是字数。
 地址0xxxx Count是要读取或写入的位数
 地址1xxxx Count是要读取的位数
 地址3xxxx Count是要读取的输入寄存器字的个数
 地址4xxxx Count是要读取或写入的保持寄存器字的个数
MBUS_MSG指令将读取或写入最大120个字或1920个位(240字节的数据)。Count值的实际限制取
决于Modbus从站设备中的限制。
参数DataPtr是一个间接地址指针,它指向S7-200 CPU中与读取或写入请求相关的数据所在的V存
储器。对于读取请求,DataPtr应该指向用于存储从Modbus从站读取的数据的第一个CPU存储器位
置。而对于写请求,DataPtr应该指向要发送到Modbus从站的数据的第一个CPU存储器位置。
DataPtr值作为一个间接地址指针,传送到MBUS_MSG中。例如,如果要写入到Modbus从站设备
的数据在S7-200 CPU中的起始地址为VW200,那么DataPtr的值就应该是&VB200(VB200的地
址)。指针的类型必须始终为VB,即使它指向的是字数据。
表12--9 MBUS_MSG指令的参数。
参数数据类型操作数
First BOOL I、Q、M、S、SM、T、C、V、L(上升沿检测单元所要求的功率
流)
Slave BYTE VB、IB、QB、MB、SB、SMB、LB、AC、常数、*VD、*AC、*LD
RW BYTE VB、IB、QB、MB、SB、SMB、LB、AC、常数、*VD、*AC、*LD
ADDR DWORD VD、ID、QD、MD、SD、SMD、LD、AC、常数、*VD、*AC、
*LD
Count INT VW、IW、QW、MW、SW、SMW、LW、AC、常数、*VD、*AC、
*LD
DataPtr DWORD &VB
Done BOOL I、Q、M、S、SM、T、C、V、L
Error BYTE VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD
保持寄存器(地址4xxxx)和输入寄存器(地址3xxxx)是字值(2字节或16位)。S7-200 CPU字格
式与Modbus寄存器的完全相同。较低编号的V存储器地址是寄存器的最高有效字节。较高编号的V存
储器地址则是寄存器的最低有效字节。下表说明了S7-200字节和字编址是如何与Modbus寄存器格式
相对应的。
表12--10 Modbus保持寄存器
S7-200 CPU存储器
字节地址
S7-200 CPU存储器
字地址
Modbus
保持寄存器地址
V存储器地址十六进制数据V存储器地址十六进制数据V存储器地址十六进制数据
VB200 12 VW200 12 34 4001 12 34
VB201 34
VB202 56 VW202 56 78 4002 56 78
VB203 78
VB204 9A VW204 9A BC 4003 9A BC
VB205 BC
位数据(地址0xxxx和1xxxx)区作为打包的字节读/写,也就是说,8个数据位打包成一个字节的数
据。第一个数据字节的最低有效位是寻址的位号(参数Addr)。如果只写入单个位,则该位必须在
DataPtr所指向的字节的最低有效位中。

提问者对于答案的评价:
是这个意思就行,大概了解了

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc132116.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年5月31日
下一篇 2017年5月31日

相关推荐