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:\Users\Asus\PycharmProjects\PLC-Connection\venv\lib\site-packages\snap7\util.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)发布于 2022-01-14 15:00:29
我认为问题在于阅读数据:
reading = client.db_read(20, i, 1)20是数据库,i是索引,您只读取1字节(第3个参数)。
要检索真实值,需要读出4个字节。
https://stackoverflow.com/questions/70516515
复制相似问题