首页 威纶通(we. 正文

回复

威伦kp6051ip和奥伯赛德风压变送器传输信息的问题

威纶通(weinview)HMI 浏览:937 回复:6 收藏

小白不大黑  2022-04-15 14:49

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

image.png

必须先发风压变送器的指令,它才会返回数据。

发数据解释: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)


考虑到威伦官方给的手册会把从机地址,从机功能码自己加上,所以我写了如上的代码。然而没有反应。下面给出手册截图

image.png

也就是说用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去的,到底输出了什么导致没有反应?

我的导师说可以读,我不太确认,他也在忙别的事情,我不好打扰

最后附上系统参数设置

image.png

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

image.png


1分不嫌少!
已有1人打赏
我知道了