使用OPCDA-Proxy将OPC DA代理为Modbus-TCP示例

前言

在两台计算机之间使用OPC-DA通信时,DCOM配置的问题经常会成为一大拦路虎,相信很多做OPC-DA通信的小伙伴都被DCOM搞的头皮发炸过。
为了跳过DCOM的坑,我们专门编写了这款小工具软件OPCDA-Proxy。他可以将OPC-DA代理为Web API服务接口和Modbus-TCP接口。WebAPI接口提供给熟悉网络编程的小伙伴使用,Modbus-TCP接口提供给熟悉工业协议的工控打工人使用。
在这里插入图片描述

  • 在WebAPI接口中,用户可以通过接口访问所有类型的变量。
  • 在Modbus-TCP接口中,由于需要固定没给变量占用的寄存器数,因此只为BOOL类型和其他数字类型的变量提供了代理映射,对于可变长度的字符串变量、枚举类型变量、时间类型变量等没有提供代理映射。

软件下载和安装

OPCDA-Proxy软件的下载和安装请参考《安装和卸载OPCDA-Proxy》

注意:由于OPCDA-Proxy要与OPC-DA服务器通讯,因此OPCDA-Proxy应安装在OPC-DA服务器所在的计算机上。只有这样才能避免繁琐的DCOM配置。

链接OPC数据源

查找OPC-DA Serve的名称

OPCDA-Proxy程序文件夹下的Tools文件夹中的OPCClient.exe程序可以帮助查找OPC服务器上的OPC-DA服务的名称。
如下面动图中所展示的,Graybox.Simulator.1就是一个可用的OPC-DA Server的名称。
在这里插入图片描述

将OPC-DA Serve的名称填写到配置文件中

用文本编辑器打开OPCDA-Proxy程序文件夹下的conf/opcproxy.conf文件,在[opc]项目下填写server的内容,如下图所示。

在这里插入图片描述

配置Modbus-TCP的信息

配置Modbus-TCP访问地址和端口

通过配置文件./conf/opcproxy.conf文件中的[app]项目下的mbaddr参数来配置Modbus-TCP的访问地址和端口号。
默认的配置为0.0.0.0:502。如果想要仅本机内部访问该地址,则请将该参数设置为127.0.0.1:502或者localhost:502; 如果想要仅允许某个指定网卡访问该地址和端口,请将该参数设置为192.168.3.41:502(假设该网卡的IP地址为192.168.3.41)。

配置Modbus字节的存储顺序

通过配置文件./conf/opcproxy.conf文件中的[app]项目下的bigendian参数来配置Modbus的字节存储顺序。有关Big EndianLittle Endian的问题,请参考《Big Endian 和 Little Endian 详解》

Modbus地址空间刷新周期

通过配置文件./conf/opcproxy.conf文件中的[app]项目下的refresh_period参数来配置Modbus地址空间的刷新周期。该参数的代为为毫秒。建议该参数的配置范围为100~1000毫秒。

启动OPCDA-Proxy,自动生成Modbus地址映射表

双击opcdaproxy.exe可执行程序,启动OPCDA-Proxy的首次运行。运行画面如下图所示。

在这里插入图片描述

首次运行后,OPCDA-Proxy会在程序文件夹下生成两个新的文件:

  • machine_code.txt:机器码文件,需要完全版授权时请将此文件发送给作者。
  • modbus_map.csv:Modbus地址映射表文件,OPC-DA变量与Modbus的地址空间映射关系由此表定义。

自定义编辑Modbus地址映射表

如果想要按照自己的规则生成Modbus地址映射表,则可以自行对modbus_map.csv文件进行编辑。下面展示的是对OPC变量名称按照升序排列生成Modbus地址映射表的示例。
在这里插入图片描述

  1. 选定"Item"列,然后选定按升序排序。排序时要注意选中"扩展选定区域"
  2. 重新对"Id"列进行编号,编号从0开始
  3. 重新对"Offset"列进行排号。"Offset"列从0开始,第二行的"Offset"值为前一行的Offset+Size,随后各行以此类推。
  4. 最后别忘记保存。

重新启动OPCDA-Proxy

重新启动OPCDA-Proxy后,OPCDA-Proxy将加载modbus_map.csv中定义的Modbus地址映射表,并自动将OPC服务器中相应变量的值写入到Modbus服务器的相应内存地址中。

使用Modbus-pull链接Modbus-TCP测试

用Modbus-pull连接OPCDA-Proxy的Modbus端口,用OPCClient连接OPC Server,可以对比观察相关变量。

在这里插入图片描述

注意:由于OPCClient的刷新周期与Modbus-pullOPCDA-Proxy不同,导致截图图片上看到的数据时不完全一致的。

OPCDA-Proxy详情

OPCDA-Proxy的详情请参考此链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值