4diac运行时opcua使用了open62541开源库,可以从Team · open62541下载opcua源码,通过cmake进行编译,我这里用的是windows版本的运行时。所有opcua编译的是windows版本的。要想4diac运行时支持opcua在进行forte源码编译时要进行以下配置:
把FORTE_COM_OPC_UA勾选上,设置FORTE_COM_OPC_UA_INCLUDE_DIR的路径,就是open62541头文件路径。FORTE_COM_OPC_UA_LIB设置open62541库文件名称,设置FORTE_COM_OPC_UA_LIB_DIR的路径。
Forte编译好后,要把运行时和open62541动态库放在一起,启动forte.exe,默认的opcua服务端口是4840,后面的文章我会讲解怎么修改forte源码来改变这个默认端口。
启动4diac-ide.exe,新建一个工程。OPCUA功能块用的是SUBSCRIBE和PUBLISIH功能块。
PUBLISH和SUBSCRIBE后面跟的数字表示此功能块支持几个变量。SUBSCRIBE功能块更多用于OPCUA客户端向4diac opcua服务端写数据,PUBLISH功能块更多用于OPCUA客户端向4diac opcua服务端读数据。
比如SUBSCRIBE的ID可以配置为这样的字符串:"opc_ua[READ;/Objects/1:v3]"
表示可以读写变量v3.
比如PUBLISH的ID可以配置为这样的字符串:
"opc_ua[WRITE;/Objects/1:fankui]"
表示可以只读变量fnkui
以下是实现的一个例子:
有QI的功能块一定要把QI设置为1,表示使能此功能块。有INIT的功能块一定要触发INIT事件让功能块初始化。这样才能保证整个应用正常工作。比如上面截图的应用实现的功能是通过OPCUA客户端写入三个整形变量,再转换成bool通过OPCUA输出给opcua客户端。
我们可以使用UaExpert连接到OPCUA服务端:
这样就完成了4diac运行时支持opcua功能。