这里写自定义目录标题
前言
在两台计算机之间使用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 Endian
和Little 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地址映射表的示例。
- 选定"Item"列,然后选定按升序排序。排序时要注意选中"扩展选定区域"
- 重新对"Id"列进行编号,编号从
0
开始 - 重新对"Offset"列进行排号。"Offset"列从
0
开始,第二行的"Offset"值为前一行的Offset+Size
,随后各行以此类推。 - 最后别忘记保存。
重新启动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-pull
和OPCDA-Proxy
不同,导致截图图片上看到的数据时不完全一致的。