Ejemplo n.º 1
0
        public override IEnumerable <IOTData> GetData()
        {
            List <IOTData> iots = new List <IOTData>();

            foreach (DLData data in Commands)
            {
                byte[] Bt1 = new byte[200];
                serialPort.Write(data.Command, 0, data.Command.Length);
                System.Threading.Thread.Sleep(500);
                int bytesRead = serialPort.Read(Bt1, 0, 200);
                if (bytesRead > 0)
                {
                    try
                    {
                        //计算结果
                        IOTData _IOTData = new IOTData();
                        _IOTData.DataCode  = data.Address;
                        _IOTData.DataValue = CalcReceive(Bt1, data.Xj);
                        _IOTData.GTime     = DateTime.Now;
                        _IOTData.DriveCode = DriveConfig.DriveCode;
                        _IOTData.DriveType = DriveConfig.DriveType;
                        _IOTData.DataName  = data.Name;
                        _IOTData.Unit      = data.Unit;
                        if (_IOTData.DataValue.Trim().Length > 0)
                        {
                            iots.Add(_IOTData);
                        }
                    }
                    catch
                    {
                    }
                }
            }
            return(iots);
        }
Ejemplo n.º 2
0
        private IEnumerable <IOTData> GetData(byte[] ReplyMsg)
        {
            List <IOTData> Ds = new List <IOTData>();
            //大于0说明有收到数据!没有收到就说明发送出去的结果有异常
            int iNum = ReplyMsg[2];

            if (Commands.Any(n => n.Command[0] == ReplyMsg[0]) == false)
            {
                return(null);
            }
            SDTCommand TCmd = Commands.Single(n => n.Command[0] == ReplyMsg[0]);

            //判断是否是同样的命令功能
            if (ReplyMsg[1] != TCmd.Command[1])
            {
                return(null);
            }
            string strGroup = Guid.NewGuid().ToString("N");

            foreach (Result Rs in TCmd.Results)
            {
                StringBuilder Sb = new StringBuilder();
                Sb.Append(Rs.Expressions);
                int DataCount = ReplyMsg[2];
                //替换公式中的字符
                for (int i = 0; i < DataCount; i++)
                {
                    string strTmp1 = "[D" + i.ToString() + "]";
                    string strTmp2 = ReplyMsg[StartNum + i].ToString();
                    Sb.Replace(strTmp1, strTmp2);
                    strTmp2 = null;
                    strTmp1 = null;
                }
                try
                {
                    IOTData _IOTData = new IOTData();
                    _IOTData.DataCode  = Rs.Address;
                    _IOTData.DataName  = Rs.Name;
                    _IOTData.DataValue = _CustomFormulas.Computing(Sb.ToString());
                    _IOTData.DriveCode = DriveConfig.DriveCode;
                    _IOTData.DriveType = DriveConfig.DriveType;
                    _IOTData.GTime     = DateTime.Now;
                    _IOTData.Unit      = Rs.Unit;
                    if (_IOTData.DataValue.Trim().Length > 0)
                    {
                        Ds.Add(_IOTData);
                    }
                }
                catch
                {
                }
                Sb = null;
            }
            return(Ds);
        }
Ejemplo n.º 3
0
        public override IEnumerable <IOTData> GetData()
        {
            List <IOTData> iOTs = new List <IOTData>();

            foreach (OPCUANode node in DriveConfig.Nodes)
            {
                try
                {
                    IOTData   TmpData = new IOTData();
                    DataValue value   = m_OpcUaClient.ReadNode(node.NodeID);
                    // 一个数据的类型是不是数组由 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 == -1)
                        {
                            TmpData.DataValue = ((int)value.WrappedValue.Value).ToString();               // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 1)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((int[])value.WrappedValue.Value);           // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 2)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((int[, ])value.WrappedValue.Value);         // 最终值
                        }
                    }
                    else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.UInt32)
                    {
                        if (value.WrappedValue.TypeInfo.ValueRank == -1)
                        {
                            TmpData.DataValue = ((uint)value.WrappedValue.Value).ToString();               // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 1)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((uint[])value.WrappedValue.Value);           // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 2)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((uint[, ])value.WrappedValue.Value);         // 最终值
                        }
                    }
                    else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.Float)
                    {
                        if (value.WrappedValue.TypeInfo.ValueRank == -1)
                        {
                            TmpData.DataValue = ((float)value.WrappedValue.Value).ToString(node.Format);               // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 1)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((float[])value.WrappedValue.Value);           // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 2)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((float[, ])value.WrappedValue.Value);         // 最终值
                        }
                    }
                    else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.String)
                    {
                        if (value.WrappedValue.TypeInfo.ValueRank == -1)
                        {
                            TmpData.DataValue = (string)value.WrappedValue.Value;               // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 1)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((string[])value.WrappedValue.Value);           // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 2)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((string[, ])value.WrappedValue.Value);         // 最终值
                        }
                    }
                    else if (value.WrappedValue.TypeInfo.BuiltInType == Opc.Ua.BuiltInType.DateTime)
                    {
                        if (value.WrappedValue.TypeInfo.ValueRank == -1)
                        {
                            TmpData.DataValue = ((DateTime)value.WrappedValue.Value).ToString("yyyy-MM-dd HH:mm:ss");               // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 1)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((DateTime[])value.WrappedValue.Value);           // 最终值
                        }
                        else if (value.WrappedValue.TypeInfo.ValueRank == 2)
                        {
                            TmpData.DataValue = System.Text.Json.JsonSerializer.Serialize((DateTime[, ])value.WrappedValue.Value);         // 最终值
                        }
                    }
                    TmpData.DataCode  = node.Address;
                    TmpData.DataName  = node.Name;
                    TmpData.DriveCode = DriveConfig.DriveCode;
                    TmpData.DriveType = DriveConfig.DriveType;
                    TmpData.GTime     = DateTime.Now;
                    TmpData.Unit      = node.Unit;
                    iOTs.Add(TmpData);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Read Failed", ex);
                }
            }

            return(iOTs);
        }
Ejemplo n.º 4
0
        public override IEnumerable <IOTData> GetData()
        {
            List <string>  response = readData("Q100");
            List <IOTData> Ds       = new List <IOTData>();
            string         strGroup = Guid.NewGuid().ToString("N");

            Ds.Add(new IOTData
            {
                DataCode  = "Avail",
                DataValue = ((response != null && response.Count > 1)? "AVAILABLE" : "UNAVAILABLE"),
                GTime     = DateTime.Now,
                DriveType = DriveConfig.DriveType,
                DriveCode = DriveConfig.DriveCode,
                Unit      = "-",
                DataName  = "Avail"
            });
            response = readData("Q104");
            if (response != null && response.Count > 1)
            {
                var tmpdata = new IOTData
                {
                    DataCode  = "Mode",
                    GTime     = DateTime.Now,
                    DriveType = DriveConfig.DriveType,
                    DriveCode = DriveConfig.DriveCode,
                    Unit      = "-",
                    DataName  = "模式"
                };
                switch (response[1])
                {
                case "(MDI)": tmpdata.DataValue = "MANUAL_DATA_INPUT"; break;

                case "(JOG)": tmpdata.DataValue = "MANUAL"; break;

                case "(ZERO RET)": tmpdata.DataValue = "MANUAL"; break;

                default: tmpdata.DataValue = "AUTOMATIC"; break;
                }
                Ds.Add(tmpdata);
                var tmpZeroRet = new IOTData
                {
                    DataCode  = "ZeroRet",
                    GTime     = DateTime.Now,
                    DriveType = DriveConfig.DriveType,
                    DriveCode = DriveConfig.DriveCode,
                    Unit      = "-",
                    DataName  = "ZeroRet"
                };
                switch (response[1])
                {
                case "(ZERO RET)": tmpZeroRet.DataValue = "NO ZERO X"; break;

                default: tmpZeroRet.DataValue = "NORMAL"; break;
                }
                Ds.Add(tmpZeroRet);
                response = readData("Q500");
                if (response != null && response.Count > 1)
                {
                    if (response[0] == "PROGRAM")
                    {
                        if (response[1] != "MDI")
                        {
                            Ds.Add(new IOTData
                            {
                                DataCode  = "Program",
                                DataValue = response[1],
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "程序"
                            });
                        }

                        if (response[2] == "IDLE")
                        {
                            Ds.Add(new IOTData
                            {
                                DataCode  = "Execution",
                                DataValue = "READY",
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "运行状态"
                            });
                        }
                        else if (response[2] == "FEED HOLD")
                        {
                            Ds.Add(new IOTData
                            {
                                DataCode  = "Execution",
                                DataValue = "INTERRUPTED",
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "运行状态"
                            });
                        }

                        if (response[2] == "ALARM ON")
                        {
                            Ds.Add(new IOTData
                            {
                                DataCode  = "Execution",
                                DataValue = "STOPPED",
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "运行状态"
                            });
                            Ds.Add(new IOTData
                            {
                                DataCode  = "System",
                                DataValue = "Alarm on indicator",
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "系统"
                            });
                        }
                        else
                        {
                            Ds.Add(new IOTData
                            {
                                DataCode  = "Estop",
                                DataValue = "ARMED",
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "停止"
                            });
                            Ds.Add(new IOTData
                            {
                                DataCode  = "System",
                                DataValue = "NORMAL",
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "系统"
                            });
                        }
                    }
                    else if (response[0] == "STATUS")
                    {
                        if (response[1] == "BUSY")
                        {
                            Ds.Add(new IOTData
                            {
                                DataCode  = "Execution",
                                DataValue = "ACTIVE",
                                GTime     = DateTime.Now,
                                DriveType = DriveConfig.DriveType,
                                DriveCode = DriveConfig.DriveCode,
                                Unit      = "-",
                                DataName  = "运行状态"
                            });
                        }
                    }
                }
                // Check to make sure the correct variable is returned
                Ds.Add(new IOTData
                {
                    DataCode  = "Xact",
                    DataValue = GetVariable(5041) ?? "",
                    GTime     = DateTime.Now,
                    DriveType = DriveConfig.DriveType,
                    DriveCode = DriveConfig.DriveCode,
                    Unit      = "-",
                    DataName  = "X坐标"
                });
                Ds.Add(new IOTData
                {
                    DataCode  = "Yact",
                    DataValue = GetVariable(5042) ?? "",
                    GTime     = DateTime.Now,
                    DriveType = DriveConfig.DriveType,
                    DriveCode = DriveConfig.DriveCode,
                    Unit      = "-",
                    DataName  = "Y坐标"
                });
                Ds.Add(new IOTData
                {
                    DataCode  = "Zact",
                    DataValue = GetVariable(5043) ?? "",
                    GTime     = DateTime.Now,
                    DriveType = DriveConfig.DriveType,
                    DriveCode = DriveConfig.DriveCode,
                    Unit      = "-",
                    DataName  = "Z坐标"
                });
                Ds.Add(new IOTData
                {
                    DataCode  = "SpindleSpeed",
                    DataValue = GetVariable(3027) ?? "",
                    GTime     = DateTime.Now,
                    DriveType = DriveConfig.DriveType,
                    DriveCode = DriveConfig.DriveCode,
                    Unit      = "-",
                    DataName  = "转速"
                });
            }
            return(Ds);
        }