当前位置: 主页 > PLC控制

请问1200PLC和其他设备通过以太网通讯,该如何根据对方的协议写MB_client块呢?

请问用1200上的以太网口控制其他公司的带以太网口的驱动器,使用MB_client块,但是对方的通讯协议我看不懂。比如说,我想要读取寄存器地址512H:故障状态信息,517H:直流母线电压Ua(V)
518H:直流母线电流Idc(A),请问在MB_Client里我该如何做啊?如果让REQ为1,DISCONNECT为0,CONNECT_ID为1,IP_PORT为512,MB_MODE为1,MB_DATA_ADDR为40001,DATA_LEN为7,MB_DATA_PTR为P#DB9.DBX0.0WORD7,请问这样对吗?

这是对方给的协议:
"03读多个寄存器
"
查询QUERYFieldNameExample(Hex32bit)
SlaveAddress从机地址00000001
Function功能代码00000003
STartingAddress开始地址00000000
NoofRegister查询寄存器个数00000005
ErrorCheck(CRC32)(非MODBUS-TCP时使用)

响应RESPONSEFieldNameExample(Hex32bit)
SlaveAddress从机地址00000001
Function功能代码00000003
Noofbity查询寄存器数量(NoofRegister)00000005
Data100000004
Data210005000
Data320002555
ErrorCheck(CRC32)(非MODBUS-TCP时使用)

"03读多个寄存器
"
查询QUERYFieldNameExample(Hex32bit)
SlaveAddress从机地址00000001
Function功能代码00000003
StartingAddress开始地址00000000
NoofRegister查询寄存器个数00000005
ErrorCheck(CRC32)(非MODBUS-TCP时使用)

响应RESPONSEFieldNameExample(Hex32bit)
SlaveAddress从机地址00000001
Function功能代码00000003
NoofBity查询寄存器数量(NoofRegister)00000005
Data100000004
Data210005000
Data320002555
ErrorCheck(CRC32)(非MODBUS-TCP时使用)

1、本规约以以太网为主,兼容SCI通信。本身协议不区分LAN、SCI,硬件不同,通过硬件抽象层修改、调整,独立应用协议本身
2、本规约不做数据结构内部预留,可以在地址任意部位插入新的数据,被查地址被占用,后续地址重新排位。
3、在以太网时每帧数据前加入16个字节的GUID帧标志。
地址:0x00000200-0x000002FF(寄存器数量256,支持功能码03)
寄存器地址H数据类型(32位)数据格式数据范围功能说明
512Uint32见注释0见注释0故障状态信息
513floatx0无效数据/1停机/2待机/3运行运行状态信息
514floatx0无效数据/1实验停止/2实验中实验状态信息
515float见注释1见注释1未用
516floatxx.xxxxx0-100电源内阻(Ω)
517floatxxxx.xx0-10000直流母线电压Ua(V)
518floatxxxx.xx0-10000直流母线电流Idc(A)
519floatxxxx.xx0-10000输出电压直流部分(V)
520floatxxxx.xx0-10000输出电压谐波部分(V)
521floatxxxx.xx0-10000输出电流直流部分(A)
522floatxxxx.xx0-10000输出电流谐波部分(A)
523floatxxxx.xx0-10000输出功率(kW)


还有,刚才用博途编了一段1200程序,编译后出现一般警告:所组态的硬件中没有所用到的输入或输出,请问这是什么错误,怎么来的,会不会影响程序运行啊?

最佳答案

1、读取连续保持寄存器地址,MB_MODE应为“0”,如果“1”则为写了。
2、寄存器地址为512H,转十进制为1298。功能码为03,则MODBUS地址应为41298,在1200PLC中MB_DATA_ADDR起始地址应为41299;

提问者对于答案的评价:
谢谢

专家置评

已阅,最佳答案正确。

  • 关注微信

猜你喜欢

微信公众号