//用MT6070IH连接一个自由通信的设备。
屏发送帧:03 04 2D 01 00 02 28 85
设备应答帧:03 04 04 00 EA 00 1A 78 7B
对应关系:rece[0]=03
rece[1]=04
。。。。。。
。。。。。。
rece[8]=7B
LW4=65514不知为什么是这个值,应该是234才对啊
LW5=26这个是对的
实在是弄不明白了。
macro_command main()
char temp
char send[10],rece[10]
short addr,CRC16
char return_value
short total
addr=11521
send[0]=3//从设备站号
send[1]=0x04//功能码
send[2]=addr/256//地址高位
send[3]=addr%256//地址低位
send[4]=0x00//读取字节数
send[5]=0x02//读取字节数
CRC(send[0], CRC16, 6)//CRC校验
LOBYTE(CRC16, send[6])//取CRC低位
HIBYTE(CRC16, send[7])//取CRC高位
OUTPORT(send[0], "Free Protocol", 8)
INPORT(rece[0], "Free Protocol", 9, return_value)
CRC(rece[0], CRC16, 7)
LOBYTE(CRC16, send[6])
HIBYTE(CRC16, send[7])
if return_value>0 and rece[7]==send[6] and rece[8]==send[7] then
total=rece[3]*256+rece[4]
SetData(total, "Local HMI", LW, 4, 1)//结果存在LW4中
total=rece[5]*256+rece[6]
SetData(total, "Local HMI", LW, 5, 1)//结果存在LW5中
end if
end macro_command |