手头有威伦51ip的屏幕,打算吃30kpa量程的风压变送器。风压变送器用rs485通信;已经事先在电脑上sscom测试使用没有问题,如下图

必须先发风压变送器的指令,它才会返回数据。
发数据解释:01h 代表从机地址,现在是1,03h功能码,00 04h2位u16代表读取压强,00 01h2位u16代表传输压强的数据位数。后面c5 cb是crc校验
收数据解释:前2个u16与发数据一样(如果接收了的话),02h代表数据位数是2位,00 00h压差为00.00kpa。b8 44也是crc校验
好,硬件都没有问题,如何让屏幕自己发收数据呢?
我自己给屏的宏指令是
short data[6] = {0x00,0x04,0x00,0x01,0xc5,0xcb}
GetDataEx(data[0],"MODBUS RTU",4x,1,6)
SetDataEx(data[0],"Local HMI",RW,80,6)
考虑到威伦官方给的手册会把从机地址,从机功能码自己加上,所以我写了如上的代码。然而没有反应。下面给出手册截图

也就是说用4x的地址,屏幕应当是自己先给了01h 03h这样的开头,然后再附带data数组的六个数据组成01 03 00 04 00 01 c5 cb发出去给风压变送器,然后自己接收一串数据,存到data里,再写到RW区。
以上想法也许是错的,所以接着试验:如果威伦自己不带01 03开头如何?
short data1[8] = {0x01,0x03,0x00,0x04,0x00,0x01,0xc5,0xcb}
SetDataEx(data1[0],"MODBUS RTU",4x,1,8)
DELAY(1)
GetDataEx(data1[0],"MODBUS RTU",4x,1,8)
SetDataEx(data1[0],"Local HMI",RW,80,8)
失败了,我还试验了种种setdata和getdata,以及data数据内容的排列组合,我现在已经疯了。
现在目的就是这个屏幕到底怎么输出到modbus rtu去的,到底输出了什么导致没有反应?
我的导师说可以读,我不太确认,他也在忙别的事情,我不好打扰
最后附上系统参数设置

我还怀疑是设备类型的问题,应当用哪一个modbus呢?







