Esempio n. 1
0
 /// <summary>
 /// 根据提供的nodeID读取相应的OPC节点值
 /// </summary>
 /// <param name="nodeId"></param>
 /// <returns></returns>
 public string ReadDataFromOpcServer(string nodeId)
 {
     try
     {
         NodeId    node = new NodeId(nodeId);
         DataValue dv   = opcUaClient.ReadNode(node);
         return(dv.WrappedValue.Value.ToString());
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogFile.Trace, ex.Message);
     }
     return("0");
 }
 /// <summary>
 /// 根据提供的nodeID读取相应的OPC节点值
 /// </summary>
 /// <param name="nodeID"></param>
 /// <returns></returns>
 public string ReadDataFromOpcServer(string nodeID)
 {
     try
     {
         string    ret     = "";
         NodeId    mNodeID = new NodeId(nodeID, 2);
         DataValue dv      = opcUaClient.ReadNode(mNodeID);
         ret = dv.WrappedValue.Value.ToString();
         return(ret);
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogFile.Trace, ex.Message);
         return("ReadFail:" + ex.Message);
     }
 }
Esempio n. 3
0
        // ns=2;s=Robots/RobotA/RobotMode
        // ns=2;s=Robots/RobotA/UserFloat

        private void button3_Click(object sender, EventArgs e)
        {
            Opc.Ua.DataValue value = opcUaClient.ReadNode("ns=2;s=Robots/RobotA/RobotMode");
            // 一个数据的类型是不是数组由 value.WrappedValue.TypeInfo.ValueRank 来决定的
            // -1 说明是一个数值
            // 1  说明是一维数组,如果类型BuiltInType是Int32,那么实际是int[]
            // 2  说明是二维数组,如果类型BuiltInType是Int32,那么实际是int[,]
            if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.Int32)
            {
                if (value.WrappedValue.TypeInfo.ValueRank == Opc.Ua.ValueRanks.Scalar)
                {
                    int temp = (int)value.WrappedValue.Value;               // 最终值
                }
                else if (value.WrappedValue.TypeInfo.ValueRank == Opc.Ua.ValueRanks.OneDimension)
                {
                    int[] temp = (int[])value.WrappedValue.Value;           // 最终值
                }
                else if (value.WrappedValue.TypeInfo.ValueRank == Opc.Ua.ValueRanks.TwoDimensions)
                {
                    int[,] temp = (int[, ])value.WrappedValue.Value;         // 最终值
                }
            }
            else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.UInt32)
            {
                uint temp = (uint)value.WrappedValue.Value;                 // 数组的情况参照上面的例子
            }
            else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.Float)
            {
                float temp = (float)value.WrappedValue.Value;               // 数组的情况参照上面的例子
            }
            else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.String)
            {
                string temp = (string)value.WrappedValue.Value;             // 数组的情况参照上面的例子
            }
            else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.DateTime)
            {
                DateTime temp = (DateTime)value.WrappedValue.Value;         // 数组的情况参照上面的例子
            }
        }