1:主站,威纶触摸屏MT6070iH 通讯设置 端口 COM1 接口RS485 2W 频率9600 数据位 8位 校验Even 停止位1Bit
2:从站,欧姆龙温控仪表E4EZ通讯采用MODBUS RTU协议,仪表的设置参数和触摸屏保持一致
现要读取温控仪表上的显示值,读取温控表的显示值的MODBUS的地址(温控表上的地址)4字节 为0000 ,2字节为2000 ,用2字节做,指令帧的格式为
01 03 2000 0001 CRC 在威纶触摸屏软件中选择的PLC为Free protcol (应用威纶触摸屏的OUTPORT与INPORT这2个指令只可选Free protocol的PLC不然编译出错),用宏指令编的程序如下
macro_command main()
char command[32], response[32]
short address, checksum
short read_no, return_value, read_data[1]
FILL (command[0],0,32)
FILL (response[0],0,32)
command[0]=0x1
command[1]=0x3
address=2000
HIBYTE (address,command[2])
LOBYTE (address,command[3])
read_no=1
HIBYTE (read_no,command[4]
LOBYTE (read_no,command[5])
CRC (command[0],checksum,6)
LOBYTE (checksum,command[6])
HIBYTE (chrcksumm,command[7])
OUTPORT (command[0],”Free protocol”,8)
INPORT(response[0],”Free protocol”,7,return_value)
if(return_value>0 and response[1]==0x3)then
read_data[0]=response[4]+(response[3]<<8)
SetData(read_data[0],”Local HMI”,LW,0,1)
end if
end macro_command
在编译时,显示编译成功,在做在线模似是,温控表上显示的数字,不能在电脑上显示出来,(在与电脑通讯时用通讯转换器RS232/RS485 ,温控表采用2线传送。
请教各位师父们,我错在那里 |