我有一台Kepware OPC服务器,我可以连接我的客户端(OPC Foundation UA lib)。我在Kepware中创建了一个设备,并在里面创建了一个组。我想从数据库中读取opc标签并动态创建它们。
如何动态地在PLC中创建带地址的项目?
答案 0 :(得分:2)
在凯谱软件配置中,只有某些驱动程序能够动态创建标记。例如,大多数Allen-Bradley套件都可以动态添加标签,而像Modbus这样的低级驱动程序则不能。所以它总是取决于Kepware中使用的设备驱动程序。要查找每个驱动程序的各个配置手册,请在此处搜索:
https://www.kepware.com/en-us/products/kepserverex/product-search/
答案 1 :(得分:1)
我建议你看看KepServerEX Configuration API。基本上,它为您提供对所有KEPServerEX实例的完全远程管理和配置控制。在您的情况下,您可以在从数据库中读取所需信息(例如标记名称,标记地址,标记数据类型)后,通过设备级别的简单RESTful API调用动态生成标记。
有关更多信息,请参阅this guide以启用和测试Configuration API。
我还从Kepware的示例项目中复制了以下代码,以便给出一个想法:
function createTag(inputServer, inputChannel, inputDevice, inputTag, inputTagAddr) {
console.log("Creating " + inputTag + " with address " + inputTagAddr);
$.ajax({
type: 'POST',
url: 'http://' + inputServer + '/config/v1/project/channels/' + inputChannel + '/devices/' + inputDevice + '/tags',
data: '{"common.ALLTYPES_NAME":"' + inputTag + '","servermain.TAG_ADDRESS":"' + inputTagAddr + '","servermain.TAG_DATA_TYPE":' + inputTagType + '}',
contentType: 'application/json',
xhrFields: {
withCredentials: false
},
headers: {
'Authorization': 'Basic ' + encodeAuth
},
success: function(JSON, status, xhr) {
console.log(inputTag + " created under " + inputDevice);
},
error: function(JSON, status, xhr) {
console.log("Creation of " + inputTag + " failed!");
}
});
}