亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何添加具有子屬性的節點并為其設置值?

如何添加具有子屬性的節點并為其設置值?

C#
Cats萌萌 2023-05-14 16:14:40
我從 OPCFoundation 示例構建了一個 OPC UA 服務器 - https://github.com/OPCFoundation/UA-.NETStandard還編譯了我自己的模型 - https://github.com/Pro/UA-ModelCompiler/tree/eebf9988940a789a4f36cbef8c5bd6340f1b2f42在示例中,他們將生成的文件放在文件夾中,然后為 NodeManger、State 等定制類。我已成功加載生成的 .uanodes 文件,其中包含一些示例節點。但是我無法通過服務器端的代碼創建這些節點。測試時,我在函數中進行 - LoadPredefinedNodes(ISystemContext context)。我的結構應該是對象下面的一個節點,稱為“標簽”,在該節點中,我想在服務器運行時動態添加節點并設置它們的屬性。我在測試時使用 Integration Object 的 OPC UA 客戶端。結構看起來正確,例如:Objects => Tags => MyTestTag (Properties: Name, Description, Value)前兩個屬性是從模型文件定義中正確添加的   <!-- ### Object Types ###-->    <!-- BaseType -->    <ObjectType SymbolicName="TAG:TagType" BaseType="ua:BaseObjectType" IsAbstract="true" SupportsEvents="true" AccessLevel="ReadWrite">        <Description>Base type for all tags</Description>        <Children>            <Property SymbolicName="TAG:Name" DataType="ua:String" ValueRank="Scalar" ModellingRule="Mandatory" AccessLevel="ReadWrite">                <Description>Name of the tag</Description>            </Property>            <Property SymbolicName="TAG:Description" DataType="ua:String" ValueRank="Scalar" ModellingRule="Optional" AccessLevel="ReadWrite">                <Description>Description of the tag</Description>            </Property>        </Children>    </ObjectType>    <!-- ### Objects ###-->    <Object SymbolicName="TAG:Tags" TypeDefinition="ua:BaseObjectType">        <Description>Contains all instances of tags</Description>        <References>            <Reference IsInverse="true">                <ReferenceType>ua:Organizes</ReferenceType>                <TargetId>ua:ObjectsFolder</TargetId>            </Reference>        </References>    </Object>第三個是我嘗試從服務器端代碼定義的屬性。我添加了 Value 屬性,但我不知道如何寫它的值。從這段代碼中,一個名為 MyTestTag 的節點被添加到 Tags 節點中。從模型中添加屬性“名稱”和“描述”。并且“Value”屬性是通過代碼添加的。但是,我無法為這些屬性中的任何一個設置值。在客戶端中單擊屬性 MyTestTag.Value 時,會打印錯誤“可為空的對象必須有一個值”。請告訴我我做錯了什么。
查看完整描述

2 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

在我的例子中,問題是 nodeId。我變了


ps.NodeId = new NodeId();

// to

ps.NodeId = new NodeId(Guid.NewGuid(), NamespaceIndex);

然后它確實出現在節點樹中。


查看完整回答
反對 回復 2023-05-14
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

OPC-UA 的例子有更新變量的代碼位,所以我不確定它有什么問題。假設我設置了良好的價值,代碼可能如下所示:


variable.Value = value;

variable.Timestamp = DateTime.UtcNow;

variable.StatusCode = StatusCodes.Good;

variable.ClearChangeMasks(SystemContext, false);


查看完整回答
反對 回復 2023-05-14
  • 2 回答
  • 0 關注
  • 163 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號