feat: 完成 issue #25 ① 和利时 DCS OPC 接口参数化适配
This commit is contained in:
@@ -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]:
|
||||
|
||||
Reference in New Issue
Block a user