恭喜,你发布的帖子
发布于 2025-02-13 10:20:55
16楼
如果是麒麟操作系统的话可以使用python的snap7包来与plc进行通讯,示例:
import snap7
DB_NUMBER = 2001
START_ADDRESS = 2
SIZE = 1
plc = snap7.client.Client()
plc.connect('192.168.0.23',0,0)
plc_connected = plc.get_connected()
print(f'PLC 连接状态: {plc_connected}')
plc_info = plc.get_cpu_info()
print(f'全部信息: {plc_info}')
ModuleTypeName = plc_info.ModuleTypeName.decode('utf-8')
print(f'PLC 类型: {ModuleTypeName}')
ModuleName = plc_info.ModuleName.decode('utf-8')
print(f'PLC 名称: {ModuleName}')
state = plc.get_cpu_state()
print(f'PLC CPU状态:{state}')
# 读取 DB2001.DBX2.0 的值
buffer = plc.read_area(snap7.types.Areas.DB, DB_NUMBER, START_ADDRESS, SIZE)
print(buffer)
# 将字节数组转换为布尔值
bool_value = snap7.util.get_bool(buffer, 0, 0) # 数据, 读取字节索引, 读取位索引
# 数据类型 real 在 PLC 中以 4 个字节表示
# real_value = snap7.util.get_real(buffer, 0) # 数据, 读取字节索引
# PLC 中的数据类型 int 用两个字节表示
# int_value = snap7.util.get_int(buffer, 0) # 数据, 读取字节索引
# 缓冲区的第一个字节将包含字符串可能的最大大小。 第二个字节包含包含的字符串的长度。
# str_value = snap7.util.get_string(buffer, 0) # 数据, 读取字节索引
print(bool_value)
plc.disconnect() # 断开连接
plc.destroy() # 销毁
请填写推广理由:
分享
只看
楼主