Snap7 get_real命令不起作用,如何修复



client = snap.client.Client()
client.connect('XXX.XXX.X.XXX', 0, 2)  #IP address, rack, slot
db = client.db_get(20)
print(db)
intDB = []
for i in range(1, 122):
reading = client.db_read(20, i, 1)
realReading = snap.util.get_real(reading, 0)
array = [realReading]
intDB.append(array)
print(intDB)

该代码应该在字节数组中打印一个DB,然后用PLC输出的浮点值打印一个数组。然而,当我运行代码时,我会收到以下错误消息:

Traceback (most recent call last):
File "C:/Users/Asus/PycharmProjects/PLC-Connection/main.py", line 19, in <module>
realReading = snap.util.get_real(reading, 0)
File "C:UsersAsusPycharmProjectsPLC-Connectionvenvlibsite-packagessnap7util.py", line 357, in get_real
real = struct.unpack('>f', struct.pack('4B', *x))[0]
struct.error: pack expected 4 items for packing (got 1)

我认为问题在于读取数据:

reading = client.db_read(20, i, 1)

20是数据块,i是索引,并且只读取1字节(第三个参数(。

为了检索实数,您需要读取4个字节。

最新更新