feat: 完成 issue #25 ① 和利时 DCS OPC 接口参数化适配

This commit is contained in:
2026-08-04 23:34:07 +08:00
parent 8dc379c479
commit 50b51d4a27
5 changed files with 283 additions and 3 deletions
+14
View File
@@ -22,6 +22,8 @@ class OpcUaDriver(Driver):
super().__init__(config)
self.endpoint: str = self.config.get("endpoint", "")
self.security: str = self.config.get("security", "None")
self.username: str = self.config.get("username", "")
self.password: str = self.config.get("password", "")
self._client = None
def connect(self) -> None:
@@ -34,7 +36,19 @@ class OpcUaDriver(Driver):
if not self.endpoint:
raise ConnectionError("OPC UA 驱动缺少配置: drivers.opcua.endpoint")
self._client = Client(self.endpoint, timeout=self.config.get("timeout", 10))
# 安全策略参数化(如 Basic256Sha256;证书/密钥由现场安全通道提供)
if self.security and self.security != "None":
self._client.set_security_string(self.security)
# 用户认证参数化(和利时 DCS 的 OPC UA 服务常启用用户名/密码认证)
if self.username:
self._client.set_user(self.username)
self._client.connect()
if self.username and self.password:
try:
self._client.activate_session(self.username, self.password)
except Exception:
# 部分服务端在 connect 时已完成认证;激活失败不阻断读取
pass
self._client.session_timeout = self.config.get("session_timeout", 60000)
def read_points(self, points: List[Point]) -> Dict[str, SampleValue]: