本文介绍如何使用Arduino利用OPC DA来控制LED开关照明。需要安装ARduinoOPCServer作为OPC Server,OPCClient作为OPC客户端。相关软件可登录网信智汇(wangxinzhihui.com)下载。
1、运行Arduino IDE,点击“工具/管理库”,弹出库管理器,搜索opc,加载opc库。这个OPC库并非OPC Client开发库,也不是OPC Server开发库。它需要配合ArduinoOPCServer使用,与ArduinoOPCServer建立TCP通讯连接,为ArduinoOPCServer提供数据源。
2、创建项目,输入以下代码:
//引入相关库文件
#include <OPC.h>
#include <Bridge.h>
#include <Ethernet.h>
#include <SPI.h>
//定义OPC对象,并非OPC DA Client
OPCEthernet aOPCEthernet;
//采用PIN8输出,控制LED
int ledPin = 8;
//定义网卡地址
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xAD, 0x8D };
//设置网络
IPAddress ip(192, 168, 1, 179);
IPAddress gateway(192,168,1,1);
IPAddress dns_server(192,168,1,1);
IPAddress subnet(255,255,255,0);
//端口,用于ArduinoOPCServer连接
const int listen_port = 80;
//创建 OPCItem回调
bool callback(const char *itemID, const opcOperation opcOP, const bool value){
static bool ledValue = false;
// OPC DA Client写操作
if (opcOP == opc_opwrite) {
ledValue = value;
if (ledValue)
digitalWrite(ledPin, HIGH);
else
digitalWrite(ledPin, LOW);
}
else
//返回数据给OPC DA Client
return ledValue;
}
//主程序
void setup() {
//启动串口用于打印输出调试:
Serial.begin(9600);
//定义IO
pinMode(ledPin, OUTPUT);
//OPC对象初始化
aOPCEthernet.setup(listen_port,mac,ip);
//增加1个OPCItem
aOPCEthernet.addItem("led",opc_readwrite, opc_bool, callback);
}
//主循环
void loop() {
//OPC指令令处理
aOPCEthernet.processOPCCommands();
}
3、编译,下载
4、登录网信智汇(wangxinzhihui)下载ArduinoOPCServer。运行ArduinoOPCServer,切换至Configuration选项卡,点击Arduino Ethernet,输入对应的Arduino设备的IP地址及端口号。点击Save Configuration。
5、点击ArduinoOPCServer目录中新生成的register.bat注册OPC Server,取消注册的点击unregister.bat。
6、打开OPCClient.exe,连接“ArduinoOPCServer.2”。
7、添加“led”Item,获取到LED的状态,修改该值为1或0,控制LED亮或灭。
通过本案例,可以初步掌握Arduino OPC DA开发的基本知识,通过扩展,可开发出更丰富的功能。更多通讯资源请登录登录网信智汇(wangxinzhihui.com)。