gpt4 book ai didi

opc-ua - 问题从 opc ua 西门子服务器 C# 读取 DT(日期和时间)

转载 作者:行者123 更新时间:2023-12-05 05:03:14 69 4
gpt4 key购买 nike

我正在尝试使用 unifiedautomation 的 opc ua DLL 从 Opc ua 服务器(西门子)读取日期和时间 (#DT)。但是我得到了错误的值:

西门子 S7 1500 opc ua 客户端DT#2008-10-25-08:12:34.567 --> 17.09.1142 05:08:27

我正在使用以下代码:

var td = ReadValue(NodeId).ToByteArray();
long temp = BitConverter.ToInt64(td, 0);
DateTime dateTimeVar = new DateTime(temp);

读取值函数:

public Variant ReadValue(string VariableIdentifier)
{
Variant data = new Variant();

List<DataValue> results = read(VariableIdentifier);
if (results.Count > 0)
{
if (StatusCode.IsGood(results[0].StatusCode))
{
data = results[0].WrappedValue;
m_OpcError = "OK";
}
else
{
m_OpcError = results[0].StatusCode.Message;
}
}
else
{
m_OpcError = "ReadValue function: it Couldn't read data from OPC UA Server (empty data)";
}

return data;
}

最佳答案

刚遇到同样的问题。您需要事先将结果拆分为字节数组。

var bytes = new byte[] { 32, 6, 37, 20, 25, 4, 135, 37 };//Test 25.06.2020 14:19:04
//Remove BCD
List<int> vals = new List<int>();
foreach (var bcd in bytes)
{
int high = bcd >> 4;
int low = bcd & 0xF;
int number = 10 * high + low;
vals.Add(number);
}
//Create Datetime
DateTime dt = new DateTime(vals[0] + 2000, vals[1], vals[2], vals[3], vals[4], vals[5]);

关于opc-ua - 问题从 opc ua 西门子服务器 C# 读取 DT(日期和时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61793154/

69 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com