跳到主要内容

OPC DA 服务端

将转发组范围内的网关变量发布为 OPC DA 2.05a / 3.0 数据项,供外部客户端浏览、读取、订阅,并在权限允许时写入。同一目标还提供 OPC AE 1.10 报警与事件服务,支持报警条件浏览、订阅、刷新和确认;DA 与 AE 使用同一 COM 程序标识。该插件属于专业版数据转发插件,仅支持 Windows 非 AOT 宿主。需要从其它服务端采集时,使用 OPC DA 客户端或 OPC AE 客户端。

配置入口与准备​

  1. 使用本插件前,必须在网关及客户端安装所需位数的 OPC Core Components(OPC Core),提供标准 OPC COM 代理;使用服务枚举时还需 OPCEnum。32 位客户端需要对应的 32 位组件。
  2. 确认网关具有专业版插件授权,源变量已采集到有效值。
  3. 登录 WEB 配置页,进入“开发配置 → 数据转发”,新建或选择转发组,保存需要公开的变量范围。
  4. 点击“新增目标”,插件选择“OPC DA 服务端”,填写目标名称,然后打开“插件属性”。

创建服务端目标​

为目标指定唯一且稳定的“COM 程序标识”,保持“启动时注册”开启。本机演示可以使用当前用户自动注册;需要在组件服务中查看、通过 OPCEnum 枚举或远程连接时,开启“本机范围注册”,并确保网关运行账户具有本机登记写入权限。

OPC DA 目标的服务身份与注册配置

身份与注册​

参数说明
COM 程序标识默认 TGateway.OpcDaServer,最多 39 个字符。每个目标使用不同的 ProgID;客户端按此名称或对应 CLSID 连接。修改后需要同步修改客户端。
服务端名称默认 TGateway OPC DA Server,向客户端显示服务说明。
启动时注册默认开启。目标启动时登记身份,停止、禁用、删除目标或正常退出网关时注销本次自动登记。关闭后可在专属调试页手动注册、注销;手动登记在目标停止后保留。
本机范围注册默认关闭,仅登记网关运行账户。开启后使用本机范围,需要管理员写入权限;OPCEnum 服务和远程连接使用本机登记。
本地启动命令默认空,自动使用当前网关宿主命令。手工填写时使用正式部署路径,可执行文件路径加双引号,并保留必要的启动参数。
Windows 服务名称默认空。使用已安装的 Windows 服务时填写真实服务名,仅本机登记有效;此项不会安装服务。

未启用 OPC DA 目标时,加载插件不会初始化 OPC DA 的 COM 安全或登记服务身份。首次启动目标才初始化进程级 COM 安全和运行中的 COM 类工厂;进程级安全设置保留至网关进程退出。注册操作不修改 DCOM 权限或防火墙。

订阅、资源与写入​

参数说明
最小更新周期(毫秒)默认 50,范围 10~60000。限制组更新和数据项采样的最小周期;客户端应使用服务端返回的修订周期。
操作超时(毫秒)默认 10000,范围 100~300000。限制数据源操作及客户端回调等待。
每连接最大组数默认 128,范围 1~10000。
每组最大数据项数默认 10000,范围 1~100000。
每组最大异步事务数默认 128,范围 1~10000,限制尚未完成的异步请求。
每项缓冲容量默认 256,范围 1~10000,用于启用采样缓冲的数据项。
允许 RPC 写入默认关闭,为目标总写入开关。还需映射及源变量同时允许写入。

设置变量地址​

保存目标后,打开“目标变量属性”,点击“新增变量属性”,依次选择源设备和变量名称,设置数据项标识后保存。变量必须已在转发组范围内;添加属性不会扩大公开范围。

下图将内存变量“演示计数”映射为 Demo.Counter,工程量程为 0~100。

OPC DA 变量地址、类型和工程范围配置

参数说明
数据项标识默认空,使用 设备名.变量名。填写明确的 ItemID 可保持外部地址稳定;点号划分浏览层级,同一目标不能重复。
数据类型默认 Object,沿用源变量类型;数组维度沿用源变量配置。选择其它类型后,客户端应按该类型读写。
允许 RPC 写入默认开启,为当前映射的写入开关。目标总开关及源变量权限仍需同时允许。
工程下限、工程上限默认空。需要百分比死区时同时填写,且上限大于下限;用于连续数值变量。

启动与客户端验证​

  1. 保存并启用转发组和目标,打开“详细信息”,确认运行状态为“在线”、生命周期状态为“健康”,并核对转发变量数量。
  2. 在 OPC DA 客户端选择网关所在计算机,使用配置的 ProgID 连接。本机当前用户登记适合相同账户直接连接;通过 OPCEnum 查找时使用本机登记。
  3. 浏览地址空间,找到 Demo.Counter 或实际 ItemID,新建激活的组和数据项,读取数值、质量和源时间,与网关源变量比较。
  4. 建立数据变化订阅后改变测试源值,确认收到新值、质量和源时间。初始通知只能证明订阅已建立,还需验证后续变化。

OPC DA 转发目标在线、健康且包含一个变量

读取返回实际采样值与源时间。在线且已有初值时质量为 0xC0,离线为 0x18,等待初值为 0x20。设备读取会刷新当前网关变量快照,不直接绕过采集驱动访问 PLC。

验证写入​

使用允许写入的测试点,同时开启目标“允许 RPC 写入”、映射“允许 RPC 写入”及源变量 RPC 写入权限,确认源变量不是只读。客户端写入后核对请求结果、源端执行和网关采集回读;写成功不代表采样值已经更新。

分别关闭其中一层权限再次写入,应收到权限拒绝。源变量为只写时不能读取;DA 3 VQT 写入仅接受值,指定质量或时间将被拒绝,采集质量和时间由网关维护。

配置 AE 报警与事件​

  1. 在源变量的报警配置中启用所需类型并保存,再确认该变量已加入本目标所属转发组。AE 条件目录随变量报警配置更新;未启用的报警条件不会出现在目录中。
  2. 打开服务端目标的“插件属性”,配置“报警与事件”和“权限控制”。只接收变量报警时保留“接收无变量自定义报警”为关闭。
  3. 在 OPC AE 客户端选择与 DA 相同的计算机和 COM 程序标识,浏览区域、事件源及条件,建立事件订阅。
  4. 触发一个测试报警,将客户端的报警文本、严重度、当前值、质量和时间与网关实时报警比较;恢复源值后检查恢复通知。

OPC AE 订阅容量、无变量报警与确认权限配置

参数说明
每连接最大 AE 订阅数默认 64,范围 1~10000。限制单个客户端可持有的报警订阅数量。
AE 事件缓冲容量默认 4096,范围 1~100000。每个订阅的待发送事件上限;积压超限会撤销该订阅并记录错误,客户端应重新订阅并刷新条件。
接收无变量自定义报警默认关闭。开启后额外接收未绑定现存变量的业务报警;其它变量报警仍受本转发组范围限制。
允许 AE 报警确认默认关闭。开启后客户端可以确认本目标范围内的报警,确认结果写入网关实际报警状态;不受“允许 RPC 写入”开关控制。

报警类型与当前值​

变量报警配置AE 条件名称
开报警、关报警Open、Close
高高报警、高报警、低报警、低低报警HH、H、L、LL
自定义报警Custom
状态报警State,以启用的状态值作为子条件

网关等级 0~10 对应 AE 严重度 1~1000。订阅可按事件类型、类别、严重度、区域或事件源过滤,并选择返回当前值、数据类型、报警类型、生命周期、报警标识、阈值、设备及确认信息等属性。插件事件作为简单事件发布,确认操作产生跟踪事件。

报警当前值支持网关全部 13 种类型及其数组:Object、String、Boolean、Byte、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float、Double、Decimal。整型及 Decimal 保留精度;复杂对象以 JSON 文本表达,日期作为自动化日期返回。只写变量不返回当前值,运行中撤销读取权限也会作用于已有条件。

确认、刷新与恢复连接​

确认前先开启“允许 AE 报警确认”。客户端按收到的条件触发时间和确认凭据提交确认,完成后核对网关实时报警状态及确认文本。已恢复但尚未确认的报警仍可确认;旧一轮报警的凭据不能确认新一轮报警。客户端填写的操作员名称仅用于记录,连接和调用权限由 Windows DCOM 控制。

新建或重建订阅后执行“刷新”,取得当前活动或未确认的条件;等待最后刷新标记,再继续处理实时通知。刷新只返回当前条件快照,不回放历史事件。同一回调连接只能执行一次刷新,可取消正在执行的刷新。AE 客户端禁用区域或事件源只影响该服务端的条件通知,不停用网关报警引擎。

停止目标会断开 AE 订阅。恢复后重新激活同一身份、创建订阅、设置过滤与返回属性,并刷新当前条件。客户端消费过慢造成缓冲溢出时也按此流程恢复;普通事件和跟踪事件没有历史补发。

重启与自动重连​

保持 ProgID、注册范围和变量 ItemID 不变,重启后服务身份保持一致。重启会断开旧 COM 对象,原组句柄和订阅不能继续使用。客户端应启用自动重连,并在服务恢复后完成以下步骤:

  1. 释放旧连接、组和回调,重新激活相同 ProgID 或 CLSID。
  2. 重新创建组、添加数据项并建立订阅回调。
  3. 核对当前值、质量和源时间,再等待一次实际数据变化。

自动注册模式在停止和重新启动之间存在登记间隙,此时客户端可能收到“类未注册”,应间隔重试至目标在线。手动持久登记保留枚举身份和启动信息,仍需等待网关及目标就绪。配置网关随系统启动,或将已安装的 Windows 服务设为自动启动,使目标恢复运行。客户端是否自动重建连接和订阅取决于其重连功能,不能只反复读取旧句柄。

登记模式与 Windows 服务​

登记由插件随目标启停管理,无需额外运行程序:

  1. 保持“启动时注册”开启;启用目标后,由插件登记 ProgID、CLSID、AppID 和启动信息。
  2. 需要组件服务、OPCEnum 或远程连接时,开启“本机范围注册”,以具有本机注册表写入权限的账户运行网关。
  3. 以 Windows 服务部署时,先安装网关服务,再在“Windows 服务名称”中填写实际服务名,同时开启“本机范围注册”。将该服务设为自动启动,并确认服务账户具有配置、数据库和端口的正常运行权限。
  4. 保存并启动目标后,验证客户端连接。停止、禁用或删除目标时,插件撤销本次自动登记;移除部署前先正常停止目标或网关。

自动模式下,正常停止会清除自动登记及该 AppID 下的配置。网关恢复运行并启动目标后重新登记;需要保留登记和 AppID 权限时使用下述手动模式。

桌面运行的网关使用本机登记时,未另行指定运行身份的 AppID 默认使用“交互式用户”,客户端连接复用已运行的网关。网关以管理员权限运行时,客户端仍可使用普通权限连接。需要在无人登录时持续提供服务,应安装 Windows 服务并填写实际服务名。已有的显式 DCOM 运行身份和权限不会被重复登记覆盖。

在专属调试页手动注册、注销​

  1. 在目标“插件属性”中关闭“启动时注册”,确认 ProgID、登记范围、正式启动命令和 Windows 服务名称,保存并重启目标。
  2. 打开目标“详细信息 → 调试”,进入 OPC DA / AE 服务端专属页,选择“COM 登记”。需要调试查询权限才能读取状态,注册和注销还需高危调试操作权限。
  3. 核对当前身份、范围及 32/64 位登记状态。点击“手动注册”,确认后等待各视图显示“已登记”。本机范围登记需要网关运行账户具有相应注册表写入权限。
  4. 手动登记在目标正常停止和网关重启后保留,可在组件服务中配置 AppID 的启动、激活权限。保留目标为启用状态,客户端才能在 COM 激活启动网关后等待该目标提供服务。
  5. 移除部署时,在目标仍在线时点击“手动注销”并确认,再停止或删除目标。注销清理本插件拥有的登记及 AppID 配置,已有连接继续运行,新客户端可能无法发现或激活该身份。

OPC DA 服务端专属调试页的 COM 状态与手动登记操作

自动模式下,两个手动按钮不可执行。修改“启动时注册”后必须保存并重启目标,使当前实例切换登记模式。已停止的目标需先启动,才能通过专属页注销手动登记。页面显示“登记不完整”或“被其他组件占用”时,应核对 ProgID 和运行账户,不要将残留键当作完整服务。

手动模式下需要修改 ProgID 或登记范围时,先在原目标在线时手动注销旧登记,再修改配置并保存、重启,避免留下不再使用的身份。

手动注册会同步刷新当前服务的激活身份,完成后可直接重新连接;已有连接、组和订阅继续运行。

异常杀进程或掉电可能留下自动登记。恢复相同 ProgID、相同注册范围的目标后,可通过正常自动启停清理,或切换为手动模式后在专属页注销。每台主机上同一 ProgID 只对应一个目标,避免并行网关争用身份。

远程 DCOM 配置​

先完成本机连接验证,再按现场账户策略配置远程连接:

  1. 使用本机范围登记,在组件服务中找到对应 AppID,为实际运行账户配置本地及远程启动、激活权限,确认进程或服务身份。
  2. 打开“组件服务 → 计算机 → 我的电脑 → 属性 → COM 安全”,在“访问权限”中编辑默认值,授予实际账户所需的本地及远程访问权限;系统访问限制也须允许该账户。
  3. 两端使用可相互验证的 Windows 账户,客户端满足 Windows DCOM 加固要求的包完整性认证。
  4. 放行 TCP 135 及实际 RPC 通信规则。订阅需要反向回调,客户端也须允许服务器账户回调并配置对应防火墙规则。
  5. 从远端重新连接,分别验证浏览、读取、数据变化订阅;再重启目标,确认客户端能恢复读取和订阅。

同一网关进程内的 OPC 目标共用进程访问策略,单独设置某个 AppID 的访问权限不会为该目标建立独立访问策略。修改默认访问权限后需重启网关,仅重启目标不会重新加载进程权限;宿主已有独立 COM 访问策略时按该策略配置。

常见问题​

现象检查方法
插件列表中没有 OPC DA 服务端确认专业版授权、Windows 平台、非 AOT 宿主及插件同步状态。
0x80040154 类未注册目标是否在线、是否处于自动注销间隙、ProgID 和注册范围是否一致、客户端位数对应的 OPC Core Components 是否安装。
OPCEnum 找不到服务当前用户登记通常不被系统账户运行的 OPCEnum 看到;改为本机登记,并检查 OPCEnum 服务。
激活超时或服务器执行失败正式启动路径及引号、已安装服务名、运行账户、目标启用状态和网关启动日志。
连接时又启动一个网关进程核对 DCOM 运行身份。桌面部署使用本机登记的“交互式用户”身份;Windows 服务部署填写实际服务名。重新启动目标完成自动登记,或在专属调试页重新手动注册后连接。
0x80070005 拒绝访问本机登记写权限,以及两端账户、DCOM 访问、启动和激活权限。
读取正常但无变化通知组和项是否激活、回调是否建立、源值是否变化、客户端回调权限和防火墙。
重启后持续读失败释放旧 COM 对象并重建连接、组、数据项和订阅;在目标就绪前持续重试。
找不到数据项检查转发组范围、ItemID、大小写、重复地址及映射保存状态。
写入被拒绝检查目标、映射、源变量三层写入权限和只读保护;不要在 VQT 中指定质量或时间。
AE 看不到变量报警检查变量是否在转发组内、对应报警是否启用、订阅是否激活及过滤条件;首次连接后执行刷新。
AE 确认失败检查“允许 AE 报警确认”、条件是否仍在目标范围内、触发时间和确认凭据是否属于当前轮次。
AE 订阅失效或缓冲溢出检查客户端消费速度和事件缓冲容量,重新建立订阅并刷新当前条件。

相关操作​