首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用open62541将值写入PLC标签

用open62541将值写入PLC标签
EN

Stack Overflow用户
提问于 2019-10-22 15:10:15
回答 1查看 1.1K关注 0票数 1

我试图用作为客户端,在 S7-1512 PLC上将布尔值写入PLC标签(打开或关闭继电器)。客户端必须用c/c++实现

我已经尝试了几个不同的GUI客户端没有问题。

此外,我还尝试过Python,包括freeopcua。我有一些小问题,但是在写请求中设置了一个属性之后,我能够写值。但是使用open62541,我找不到任何解决方案(状态代码很好,但是值没有改变,我可以读取值):

Python工作请求:

node.set_attribute(ua.AttributeIds.Value, ua.DataValue(not node.get_value()))

C以下不工作请求代码:

代码语言:javascript
复制
    UA_WriteRequest request;
    UA_WriteRequest_init(&request);


    request.nodesToWrite = UA_WriteValue_new();
    request.nodesToWriteSize = 1;

    request.nodesToWrite[0].nodeId = UA_NODEID_STRING_ALLOC(3, "\"VALUE\"");
    request.nodesToWrite[0].attributeId = UA_ATTRIBUTEID_VALUE;
    request.nodesToWrite[0].value.hasValue = true;
    request.nodesToWrite[0].value.value.type = &UA_TYPES[UA_TYPES_BOOLEAN];
    request.nodesToWrite[0].value.value.storageType = UA_VARIANT_DATA_NODELETE;
    request.nodesToWrite[0].value.hasServerTimestamp = true;
    request.nodesToWrite[0].value.hasSourceTimestamp = true;
    request.nodesToWrite[0].value.sourceTimestamp = UA_DateTime_now();
    request.nodesToWrite[0].value.value.data = val;

    request.requestHeader.timestamp = UA_DateTime_now();
    request.requestHeader.authenticationToken = UA_NODEID_NUMERIC(0, UA_NS0ID_SESSIONAUTHENTICATIONTOKEN);

    //write to client service
    UA_WriteResponse wResp = UA_Client_Service_write(client, request);

我希望PLC标记的值被更改为相反的值,或者提供给我为什么它不能工作的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-23 07:22:07

最好使用客户端高级api:

代码语言:javascript
复制
UA_NodeId nodeid = UA_NODEID_STRING_ALLOC(3, "\"VALUE\"");
UA_Boolean value = true;
UA_Variant *var= UA_Variant_new();
UA_Variant_setScalarCopy(var, &value, &UA_TYPES[UA_TYPES_BOOLEAN]);
UA_StatusCode ret = UA_Client_writeValueAttribute(client, nodeid, var);
....
UA_Variant_delete(var);

它被拒绝的原因是,您尝试在写请求中设置时间戳。大多数服务器都拒绝这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58507300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档