Python SDK 概述
开发 PROFINET IO Device 应用的 Python 包。代码里 from darra_pns import PnSService。
安装
从 PyPI 安装:
pip install darra-profinet-slave
也可从下载页下载 whl,或用安装目录 SDK\SDK_Python\ 里的副本。
分发名与导入名
PyPI 分发名为 darra-profinet-slave(pip install 用此名),代码内导入名为 darra_pns。两者独立(PEP 427),不要混用。
环境
- Windows 10 / 11 x64
- Python 3.9+
- 已装 Darra Profinet Slave
快速开始
Start 之后把 I / Q 映射一次成结构体,然后一直用这个变量读写字段。结构体映射在过程映像上,源头变字段自己变;read_struct / write_struct 是快照,拷出来的实例不会自己变。写 I 不支持。
总线周期由内核完成,不必自写周期循环,任意线程可同时用。
import ctypes
from darra_pns import PnSService, PnSErr
class FromPlc(ctypes.BigEndianStructure): # I:控制器 → 设备
_pack_ = 1
_fields_ = [("present", ctypes.c_uint8),
("recipe", ctypes.c_int16)]
class ToPlc(ctypes.BigEndianStructure): # Q:设备 → 控制器
_pack_ = 1
_fields_ = [("ready", ctypes.c_uint8),
("busy", ctypes.c_uint8)]
with PnSService() as svc:
rc = svc.start()
if rc != PnSErr.OK:
print(svc.last_service_error)
else:
# 映射一次
inp = svc.process_data.inputs_mapping(FromPlc)
outp = svc.process_data.outputs_mapping(ToPlc)
while running:
if not svc.connected:
continue
present = inp.present # 读 I:总线刷新后自己变
outp.ready = 1 # 写 Q:直落过程映像
svc.stop()
结构体要求 _pack_ = 1,多字节字段用 ctypes.BigEndianStructure(PROFINET 网络序)。