OPC DA 服务端
将转发组范围内的网关变量发布为 OPC DA 2.05a / 3.0 数据项,供外部客户端浏览、读取、订阅,并在权限允许时写入。同一目标还提供 OPC AE 1.10 报警与事件服务,支持报警条件浏览、订阅、刷新和确认;DA 与 AE 使用同一 COM 程序标识。该插件属于专业版数据转发插件,仅支持 Windows 非 AOT 宿主。需要从其它服务端采集时,使用 OPC DA 客户端或 OPC AE 客户端。
配置入口与准备
- 使用本插件前,必须在网关及客户端安装所需位数的 OPC Core Components(OPC Core),提供标准 OPC COM 代理;使用服务枚举时还需 OPCEnum。32 位客户端需要对应的 32 位组件。
- 确认网关具有专业版插件授权,源变量已采集到有效值。
- 登录 WEB 配置页,进入“开发配置 → 数据转发”,新建或选择转发组,保存需要公开的变量范围。
- 点击“新增目标”,插件选择“OPC DA 服务端”,填写目标名称,然后打开“插件属性”。
创建服务端目标
为目标指定唯一且稳定的“COM 程序标识”,保持“启动时注册”开启。本机演示可以使用当前用户自动注册;需要在组件服务中查看、通过 OPCEnum 枚举或远程连接时,开启“本机范围注册”,并确保网关运行账户具有本机登记写入权限。

身份与注册
| 参数 | 说明 |
|---|---|
| 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。

| 参数 | 说明 |
|---|---|
| 数据项标识 | 默认空,使用 设备名.变量名。填写明确的 ItemID 可保持外部地址稳定;点号划分浏览层级,同一目标不能重复。 |
| 数据类型 | 默认 Object,沿用源变量类型;数组维度沿用源变量配置。选择其它类型后,客户端应按该类型读写。 |
| 允许 RPC 写入 | 默认开启,为当前映射的写入开关。目标总开关及源变量权限仍需同时允许。 |
| 工程下限、工程上限 | 默认空。需要百分比死区时同时填写,且上限大于下限;用于连续数值变量。 |
启动与客户端验证
- 保存并启用转发组和目标,打开“详细信息”,确认运行状态为“在线”、生命周期状态为“健康”,并核对转发变量数量。
- 在 OPC DA 客户端选择网关所在计算机,使用配置的 ProgID 连接。本机当前用户登记适合相同账户直接连接;通过 OPCEnum 查找时使用本机登记。
- 浏览地址空间,找到
Demo.Counter或实际 ItemID,新建激活的组和数据项,读取数值、质量和源时间,与网关源变量比较。 - 建立数据变化订阅后改变测试源值,确认收到新值、质量和源时间。初始通知只能证明订阅已建立,还需验证后续变化。

读取返回实际采样值与源时间。在线且已有初值时质量为 0xC0,离线为 0x18,等待初值为 0x20。设备读取会刷新当前网关变量快照,不直接绕过采集驱动访问 PLC。
验证写入
使用允许写入的测试点,同时开启目标“允许 RPC 写入”、映射“允许 RPC 写入”及源变量 RPC 写入权限,确认源变量不是只读。客户端写入后核对请求结果、源端执行和网关采集回读;写成功不代表采样值已经更新。
分别关闭其中一层权限再次写入,应收到权限拒绝。源变量为只写时不能读取;DA 3 VQT 写入仅接受值,指定质量或时间将被拒绝,采集质量和时间由网关维护。
配置 AE 报警与事件
- 在源变量的报警配置中启用所需类型并保存,再确认该变量已加入本目标所属转发组。AE 条件目录随变量报警配置更新;未启用的报警条件不会出现在目录中。
- 打开服务端目标的“插件属性”,配置“报警与事件”和“权限控制”。只接收变量报警时保留“接收无变量自定义报警”为关闭。
- 在 OPC AE 客户端选择与 DA 相同的计算机和 COM 程序标识,浏览区域、事件源及条件,建立事件订阅。
- 触发一个测试报警,将客户端的报警文本、严重度、当前值、质量和时间与网关实时报警比较;恢复源值后检查恢复通知。

| 参数 | 说明 |
|---|---|
| 每连接最大 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 对象,原组句柄和订阅不能继续使用。客户端应启用自动重连,并在服务恢复后完成以下步骤:
- 释放旧连接、组和回调,重新激活相同 ProgID 或 CLSID。
- 重新创建组、添加数据项并建立订阅回调。
- 核对当前值、质量和源时间,再等待一次实际数据变化。
自动注册模式在停止和重新启动之间存在登记间隙,此时客户端可能收到“类未注册”,应间隔重试至目标在线。手动持久登记保留枚举身份和启动信息,仍需等待网关及目标就绪。配置网关随系统启动,或将已安装的 Windows 服务设为自动启动,使目标恢复运行。客户端是否自动重建连接和订阅取决于其重连功能,不能只反复读取旧句柄。
登记模式与 Windows 服务
登记由插件随目标启停管理,无需额外运行程序:
- 保持“启动时注册”开启;启用目标后,由插件登记 ProgID、CLSID、AppID 和启动信息。
- 需要组件服务、OPCEnum 或远程连接时,开启“本机范围注册”,以具有本机注册表写入权限的账户运行网关。
- 以 Windows 服务部署时,先安装网关服务,再在“Windows 服务名称”中填写实际服务名,同时开启“本机范围注册”。将该服务设为自动启动,并确认服务账户具有配置、数据库和端口的正常运行权限。
- 保存并启动目标后,验证客户端连接。停止、禁用或删除目标时,插件撤销本次自动登记;移除部署前先正常停止目标或网关。
自动模式下,正常停止会清除自动登记及该 AppID 下的配置。网关恢复运行并启动目标后重新登记;需要保留登记和 AppID 权限时使用下述手动模式。
桌面运行的网关使用本机登记时,未另行指定运行身份的 AppID 默认使用“交互式用户”,客户端连接复用已运行的网关。网关以管理员权限运行时,客户端仍可使用普通权限连接。需要在无人登录时持续提供服务,应安装 Windows 服务并填写实际服务名。已有的显式 DCOM 运行身份和权限不会被重复登记覆盖。
在专属调试页手动注册、注销
- 在目标“插件属性”中关闭“启动时注册”,确认 ProgID、登记范围、正式启动命令和 Windows 服务名称,保存并重启目标。
- 打开目标“详细信息 → 调试”,进入 OPC DA / AE 服务端专属页,选择“COM 登记”。需要调试查询权限才能读取状态,注册和注销还需高危调试操作权限。
- 核对当前身份、范围及 32/64 位登记状态。点击“手动注册”,确认后等待各视图显示“已登记”。本机范围登记需要网关运行账户具有相应注册表写入权限。
- 手动登记在目标正常停止和网关重启后保留,可在组件服务中配置 AppID 的启动、激活权限。保留目标为启用状态,客户端才能在 COM 激活启动网关后等待该目标提供服务。
- 移除部署时,在目标仍在线时点击“手动注销”并确认,再停止或删除目标。注销清理本插件拥有的登记及 AppID 配置,已有连接继续运行,新客户端可能无法发现或激活该身份。

自动模式下,两个手动按钮不可执行。修改“启动时注册”后必须保存并重启目标,使当前实例切换登记模式。已停止的目标需先启动,才能通过专属页注销手动登记。页面显示“登记不完整”或“被其他组件占用”时,应核对 ProgID 和运行账户,不要将残留键当作完整服务。
手动模式下需要修改 ProgID 或登记范围时,先在原目标在线时手动注销旧登记,再修改配置并保存、重启,避免留下不再使用的身份。
手动注册会同步刷新当前服务的激活身份,完成后可直接重新连接;已有连接、组和订阅继续运行。
异常杀进程或掉电可能留下自动登记。恢复相同 ProgID、相同注册范围的目标后,可通过正常自动启停清理,或切换为手动模式后在专属页注销。每台主机上同一 ProgID 只对应一个目标,避免并行网关争用身份。
远程 DCOM 配置
先完成本机连接验证,再按现场账户策略配置远程连接:
- 使用本机范围登记,在组件服务中找到对应 AppID,为实际运行账户配置本地及远程启动、激活权限,确认进程或服务身份。
- 打开“组件服务 → 计算机 → 我的电脑 → 属性 → COM 安全”,在“访问权限”中编辑默认值,授予实际账户所需的本地及远程访问权限;系统访问限制也须允许该账户。
- 两端使用可相互验证的 Windows 账户,客户端满足 Windows DCOM 加固要求的包完整性认证。
- 放行 TCP 135 及实际 RPC 通信规则。订阅需要反向回调,客户端也须允许服务器账户回调并配置对应防火墙规则。
- 从远端重新连接,分别验证浏览、读取、数据变化订阅;再重启目标,确认客户端能恢复读取和订阅。
同一网关进程内的 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 订阅失效或缓冲溢出 | 检查客户端消费速度和事件缓冲容量,重新建立订阅并刷新当前条件。 |
相关操作
- 数据转发:转发组范围、目标启停和日志。
- OPC DA 客户端:将其它 OPC DA 服务端的数据采集到网关。
- 插件手册:查找其它采集和转发插件。