首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snap7 get_real命令不工作,如何修复?

Snap7 get_real命令不工作,如何修复?
EN

Stack Overflow用户
提问于 2021-12-29 07:47:23
回答 1查看 310关注 0票数 0
代码语言:javascript
复制
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输出的浮动值的数组。但是,当我运行代码时,会收到以下错误消息:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-01-14 15:00:29

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

代码语言:javascript
复制
reading = client.db_read(20, i, 1)

20是数据库,i是索引,您只读取1字节(第3个参数)。

要检索真实值,需要读出4个字节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70516515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档