首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用OPC UA写入变量

用OPC UA写入变量
EN

Stack Overflow用户
提问于 2022-01-20 14:43:29
回答 2查看 1.3K关注 0票数 1

最近,我试图与西门子S7-1200 plc通信,我使用OPC UA协议,我能够连接和读取所有变量,但当我试图在变量中写入值时会出现问题,这是错误消息:

代码语言:javascript
复制
File "c:\Users\User\Documents\Python\OpcUa\Client_PLC.py", line 18, in <module>
Plc.set_values(var_2,val)
File "C:\Python310\lib\site-packages\opcua\client\client.py", line 670, in set_values
nodeids = [node.nodeid for node in nodes]
TypeError: 'Node' object is not iterable

这就是我正在尝试的密码。

代码语言:javascript
复制
from opcua import Client
import time
   
url = "tcp.upc://192.168.0.1:4840"

val = 2

Plc = Client(url)

Plc.connect()


while True  :
    var = Plc.get_node("ns=4;i=2")
    print ("The value is : {}".format(var.get_value()))
    var_2 = Plc.get_node("ns=4;i=3")
    print(var_2)
    Plc.set_values(var_2,val)
    time.sleep(2)

更新:

我尝试过使用set_value命令,但是我得到了以下错误代码:

provided."(BadWriteNotSupported):“服务器不支持编写值、状态和时间戳provided.”(BadWriteNotSupported)的组合。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-21 06:53:24

您可以使用函数set_values,它需要一个节点列表。试一试:

代码语言:javascript
复制
val.set_value(var_2)

如果plc返回一个错误集,则只返回以下值:

代码语言:javascript
复制
val.set_value(DataValue(var_2))
票数 0
EN

Stack Overflow用户

发布于 2022-01-22 01:11:11

我尝试使用set_value命令,但我得到了以下错误代码: opcua.ua.uaerrors._auto.BadWriteNotSupported:“服务器不支持编写所提供的值、状态和时间戳的组合。”(BadWriteNotSupported)

虽然该服务器可能表示它根本不支持对此节点的写入,但最常见的是,我发现它意味着服务器不支持编写StatusCode和/或时间戳以及客户端发送的DataValue内的值。

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

https://stackoverflow.com/questions/70788200

复制
相关文章

相似问题

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