Ejemplo n.º 1
0
        public async Task <bool> ReadValues()
        {
            string[] valuesToRead = new string[signals.Length];
            for (int i = 0; i < signals.Length; i++)
            {
                valuesToRead[i] = signals[i].Key;
            }

            DataValue[] values = (await OPC.ReadVar(node, valuesToRead));
            if (values == null)
            {
                return(false);
            }
            for (int i = 0; i < values.Length; i++)
            {
                if (signals[i].Type == "bool")
                {
                    signals[i].boolValue = values[i].GetValueOrDefault <bool>();
                }
                else if (signals[i].Type == "string")
                {
                    signals[i].stringValue = values[i].GetValueOrDefault <string>();
                }
                else if (signals[i].Type == "ushort")
                {
                    signals[i].numValue = values[i].GetValueOrDefault <ushort>();
                }
                else if (signals[i].Type == "int")
                {
                    signals[i].intValue = values[i].GetValueOrDefault <int>();
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
 public Form1()
 {
     InitializeComponent();
     tempSensor = new AnalogSensor(1, 0, 40);
     opc        = new OPC(@"\\localhost\ProcessData\Temperature\Configured Aliases\Temperature");
     timer1.Start();
 }
Ejemplo n.º 3
0
        public async Task <IActionResult> SetStringValue(string variableName, string value)
        {
            await OPC.WriteVar(node, new KeyValuePair <string, object>[] { new KeyValuePair <string, object>(variableName, value) });

            await ReadValues();

            return(RedirectToAction("Index", "Home"));
        }
Ejemplo n.º 4
0
        public FUJIPID(string OPCTag, string NIDAQConnect_U, string NIDAQConnect_PV) //Constructor with overloading for different simulator/real process
        {
            OPC_U = new OPC(OPCTag + "_U", true);
            OPC_R = new OPC(OPCTag + "_R");

            NI_U  = new NIDAQ(NIDAQConnect_U);
            NI_PV = new NIDAQ(NIDAQConnect_PV);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> RestartOPC()
        {
            await OPC.StartOPC();

            await ReadValues();

            return(RedirectToAction("Index", "Home"));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> SetValues(string[] variableNames, string[] values, string[] types)
        {
            int submitCount        = values.Count(h => h == "submit");
            int submitsEncountered = 0;

            KeyValuePair <string, object>[] submitSignals = null;
            KeyValuePair <string, object>[] valuesToSet   = new KeyValuePair <string, object> [variableNames.Length - submitCount];
            for (int i = 0; i < variableNames.Length; i++)
            {
                switch (types[i])
                {
                case "bool":
                    valuesToSet[i - submitsEncountered] = new KeyValuePair <string, object>(variableNames[i], bool.Parse(values[i]));
                    break;

                case "string":
                    valuesToSet[i - submitsEncountered] = new KeyValuePair <string, object>(variableNames[i], (string)values[i]);
                    break;

                case "ushort":
                    valuesToSet[i - submitsEncountered] = new KeyValuePair <string, object>(variableNames[i], ushort.Parse(values[i]));
                    break;

                case "int":
                    valuesToSet[i - submitsEncountered] = new KeyValuePair <string, object>(variableNames[i], int.Parse(values[i]));
                    break;

                case "submit":
                    if (submitSignals == null)
                    {
                        submitSignals    = new KeyValuePair <string, object> [1];
                        submitSignals[0] = new KeyValuePair <string, object>(variableNames[i], true);
                    }
                    else
                    {
                        submitSignals = submitSignals.Append(new KeyValuePair <string, object>(variableNames[i], true)).ToArray();
                    }

                    submitsEncountered++;
                    break;

                default:
                    valuesToSet[i - submitsEncountered] = new KeyValuePair <string, object>(variableNames[i], values[i]);
                    break;
                }
            }
            await OPC.WriteVar(node, valuesToSet);

            if (submitSignals != null)
            {
                await OPC.WriteVar(node, submitSignals);
            }
            await ReadValues();

            return(RedirectToAction("Index", "Home"));
        }
Ejemplo n.º 7
0
 public Form1()
 {
     InitializeComponent();
     TT01            = new AnalogTransmitter("TT01");
     Airheater       = new Simulator(0.1);
     trmTick.Enabled = true;
     PI    = new PIController(1);
     OPC_r = new OPC("r");
     OPC_u = new OPC("u", true);
 }
Ejemplo n.º 8
0
        public AnalogLog(string TransmitterTAG, string DatabaseConnectionString)
        {
            Tag = TransmitterTAG;
            DatabaseConnection = DatabaseConnectionString;
            OPC_PV             = new OPC(Tag + "_PV");


            Alarm = new OPC[Alarms.Length];
            for (int i = 0; i < Alarms.Length; i++)
            {
                Alarm[i] = new OPC(Tag + "_" + Alarms[i]);
            }
        }
Ejemplo n.º 9
0
        public AnalogTransmitter(string TagID, double Timestep)//Different constructors depending on the use of simulator/real process and Fuji PID/Software PID
        {
            TAG      = TagID;
            OPC_PV   = new OPC(TagID + "_PV", true);
            Alarm    = new OPC[Alarms.Length];
            AlarmLim = new OPC[Alarms.Length];
            Filter   = new LowPassFilter(Timestep);

            for (int i = 0; i < Alarms.Length; i++)//Initializing Reading Limits and writing the alarms to the OPC server
            {
                Alarm[i]    = new OPC(TAG + "_" + Alarms[i], true);
                AlarmLim[i] = new OPC(TAG + "_" + Alarms[i] + "_Lim");
            }
        }
Ejemplo n.º 10
0
        public async Task <bool> ToggleValue(string variableName)
        {
            DataValue value    = (await OPC.ReadVar(node, new string[] { variableName })).FirstOrDefault();
            bool      variable = value.GetValueOrDefault <bool>();

            if (variable == false)
            {
                OPC.WriteVar(node, new KeyValuePair <string, object>[] { new KeyValuePair <string, object>(variableName, true) });
            }
            else
            {
                OPC.WriteVar(node, new KeyValuePair <string, object>[] { new KeyValuePair <string, object>(variableName, false) });
            }
            return(true);
        }
Ejemplo n.º 11
0
        public AnalogHMI(string SensorTag, string ControllerTag)
        {
            AllAlarms = new OPC[alarms.Length];

            AnalogPopup = new AnalogHMIpopup(SensorTag, ControllerTag);
            AnalogPopup.Hide();

            #region Initialize OPC communication
            for (int i = 0; i < alarms.Length; i++)
            {
                AllAlarms[i] = new OPC(SensorTag + alarms[i]);//0=HH,1=H,2=L,3=LL
            }
            OPC_PV = new OPC(SensorTag + "_PV");

            #endregion
        }
Ejemplo n.º 12
0
        public AnalogLog(string TransmitterTAG, string DatabaseConnectionString, string ControllerTAG)
        {
            Tag = TransmitterTAG;
            DatabaseConnection = DatabaseConnectionString;
            OPC_PV             = new OPC(Tag + "_PV");
            OPC_R = new OPC(ControllerTAG + "_R");
            OPC_U = new OPC(ControllerTAG + "_U");

            Alarm = new OPC[Alarms.Length];
            for (int i = 0; i < Alarms.Length; i++)
            {
                Alarm[i] = new OPC(Tag + "_" + Alarms[i]);
            }

            withPID = true;
        }
Ejemplo n.º 13
0
 public AnalogHMIpopup(string SensorTag, string ControllerTAG)
 {
     InitializeComponent();
     TagID = SensorTag;
     InitializeCharts();
     this.Text   = SensorTag;
     Alarm       = new OPC[Alarms.Length];
     AlarmLimits = new OPC[Alarms.Length];
     for (int i = 0; i < Alarms.Length; i++)
     {
         Alarm[i]       = new OPC(TagID + "_" + Alarms[i]);
         AlarmLimits[i] = new OPC(TagID + "_" + Alarms[i] + "_Lim", true);
     }
     OPC_PV = new OPC(TagID + "_PV");
     OPC_R  = new OPC(ControllerTAG + "_R");
     OPC_U  = new OPC(ControllerTAG + "_U");
 }
Ejemplo n.º 14
0
 public Communication()
 {
     //加载错误日志记录帮助,20170924
     Log.LogSys.Info("启动时间:" + DateTime.Now.ToString("g"));
     CommLst = new List <CommExamine>();
     UITime  = new SysTime();
     //初始地址字典,对应炉号的各生产时间
     Room        = new CokeRoom();
     PushPlan    = new TPushPlan();
     StokingPlan = new MStokingPlan();
     //开启TCP/IP通讯;20180115 服务器端不用开启
     if (!Setting.IsServer)
     {
         CommHelper = new SocketHelper();
         CommHelper.StartListening();
     }
     OPCInfo = new OPC();
     //初始化8辆车
     InitCars();
     IniTogetherInfo();
     //得到工作车的联锁信息
     GetCarTogetherInfo(JobCarTogetherInfo, true);
     GetMTogetherInfo(MJobCarTogetherInfo, true);
     //得到非工作车的联锁信息********
     GetCarTogetherInfo(NonJobCarTogetherInfo, false);
     GetMTogetherInfo(MNonJobCarTogetherInfo, false);
     DataWrite  = new DataWrite();
     CommStatus = new List <CommStatus>();
     IniTimer();
     if (Setting.IsServer)
     {
         PushAndStokingPlan();                  //20180115 服务器端处理计划推焦和计划装煤炉号
     }
     //测试用方法 正式编译前应注释掉 20171021
     //_BindingTest();
 }
Ejemplo n.º 15
0
        public IActionResult SaveSignals(string fileContent)
        {
            System.IO.File.WriteAllText("signals.json", fileContent);

            try
            {
                var config = new ConfigurationBuilder()
                             .SetBasePath(Directory.GetCurrentDirectory())
                             .AddJsonFile("signals.json").Build();

                var signals = config.GetSection("PLCSignals").GetChildren().ToArray();

                HomeController.signals = new Models.Signal[signals.Count()];
                for (int i = 0; i < signals.Count(); i++)
                {
                    Models.Signal signal = new Models.Signal();
                    signal.Key      = signals[i].Key;
                    signal.Name     = (string)signals[i].GetValue(typeof(string), "Name");
                    signal.Type     = (string)signals[i].GetValue(typeof(string), "Type");
                    signal.Controll = (string)signals[i].GetValue(typeof(string), "Controll");
                    signal.Sequence = (int)signals[i].GetValue(typeof(int), "Sequence");
                    try { signal.Devider = (bool)signals[i].GetValue(typeof(bool), "Devider"); }
                    catch { signal.Devider = false; }
                    try { signal.Label = (string)signals[i].GetValue(typeof(string), "Label"); }
                    catch { signal.Label = null; }
                    try { signal.signalGroup = (int)signals[i].GetValue(typeof(int), "SignalGroup"); }
                    catch { signal.signalGroup = -1; }
                    try { signal.Size = (int)signals[i].GetValue(typeof(int), "Size"); }
                    catch { signal.Size = -1; }
                    try
                    {
                        var allowedValues = signals[i].GetSection("AllowedValues").GetChildren();
                        if (allowedValues == null || allowedValues.Count() <= 0)
                        {
                            signal.AllowedValues = null;
                        }
                        else
                        {
                            signal.AllowedValues = new List <KeyValuePair <string, string> >();
                            signal.AllowedValues.Add(new KeyValuePair <string, string>("", ""));
                            foreach (var allowedValue in allowedValues)
                            {
                                signal.AllowedValues.Add(new KeyValuePair <string, string>(allowedValue.Key, allowedValue.Value));
                            }
                        }
                    }
                    catch { signal.AllowedValues = null; }


                    HomeController.signals[i] = signal;
                }

                HomeController.signals = HomeController.signals.OrderBy(h => h.Sequence).ToArray();

                var    plcSettings = config.GetSection("PLCSettings");
                string path        = "opc.tcp://" + (string)plcSettings.GetValue(typeof(string), "ip");
                path += ":" + (string)plcSettings.GetValue(typeof(string), "port");
                OPC.SetPath(path);
                HomeController.node = (int)plcSettings.GetValue(typeof(int), "node");
            }
            catch (Exception e)
            {
                Models.Signal signal = new Models.Signal();
                signal.Label = "Invalid signal configuration !!!!!";
                HMI.Controllers.HomeController.signals    = new Models.Signal[2];
                HMI.Controllers.HomeController.signals[0] = signal;
                signal       = new Models.Signal();
                signal.Label = e.Message;
                HMI.Controllers.HomeController.signals[1] = signal;
            }

            return(RedirectToAction("Index", "Home"));
        }
Ejemplo n.º 16
0
 public PIDhmi(string PIDtag)
 {
     opcR = new OPC(PIDtag + "_R", true);
     opcU = new OPC(PIDtag + "_U");
 }
Ejemplo n.º 17
0
        internal ServiceConfig()
        {
            for (int i = 8; i < 13; i++)
            {
                var reader = new Reader
                {
                    Comment    = $"\n        Readers should be of format[Reader #] and TAG should be [Readers.Read_Tag_#]\n        i.e.Reader {i} \u21d4 Readers.Read_Tag_{i}\n      ",
                    Address    = IPAddress.Loopback.ToString(),
                    PortNum    = 6000,
                    ReaderName = $"Reader {i}",
                    Tags       = new Reader.ReaderTags()
                    {
                        ReaderTag = new Reader.ReaderTags.ReadTags()
                        {
                            ReadTag = $":RFID Readers.Readers.ReadTags.Read_Tag_{i}",
                            Note    = "Required, Type BOOLEAN"
                        },

                        WriterTag = new Reader.ReaderTags.WriteTags()
                        {
                            Note     = "Optional, Type BOOLEAN",
                            WriteTag = $"2:RFID Readers.Readers.WriteTags.Write_Tag_{i}"
                        },

                        UuidTag = new Reader.ReaderTags.UidTags()
                        {
                            Note    = "Required, Type STRING, Tag of unique ID of RFID Tag",
                            UuidTag = $"2:RFID Readers.Readers.UuidTags.Uuid_Tag_{i}"
                        },
                        ErrorTag = new Reader.ReaderTags.ErrorTags()
                        {
                            Note        = "Required, Used for Alarms and Events. Type BOOLEAN,STRING",
                            ErrorBool   = $"2:RFID Readers.Readers.AE.Error_B_Station_{i}",
                            ErrorString = $"2:RFID Readers.Readers.AE.Error_S_Station_{i}"
                        }
                    },
                    TimeOut = 10,
                    Uuid    = new Reader.Uid()
                    {
                        UidGuid = Guid.NewGuid(),
                        UidNote = "LEAVE THIS BLANK"
                    },
                    Active = false
                };
                Readers.Add(reader);
            }

            var opc = new OPC()
            {
                ServerAddress = IPAddress.Loopback.ToString(),
                ServerPort    = 49320,
                Auth          = new OPC.LogonAuth()
                {
                    Username       = "******",
                    Password       = "******",
                    AnonymousLogin = false,
                    Note           = "Provide either Username and Password OR AnonymousLogin as true"
                }
            };

            Server.Add(opc);
        }
Ejemplo n.º 18
0
 /*---- Start Code Migration ----*/
 public void CheckNotifications()
 {
     // Check if we need to call BeginInvoke.
     if (this.InvokeRequired)
     {
         // Pass the same function to BeginInvoke,
         // but the call would come on the correct
         // thread and InvokeRequired will be false.
         this.BeginInvoke(new Action(CheckNotifications));
         return;
     }
     Thread.Sleep(50);  //Delay 50ms.
     // --------------------------------------------
     if (OPC.GetNotificationReceived("RequestVerify"))
     {
         var mac            = this.machine;
         var _requestVerify = OPC.GetNotifiedBOOL("RequestVerify");
         if (_requestVerify)
         {
             mac.RequestVerifyCode = true;
             this.machine          = mac;
             VerityCode(this.machine, null);
         }
         else if (!_requestVerify)
         {
             mac.RequestVerifyCode = false;
             this.machine          = mac;
             ResetVerify(this.machine, null);
         }
     }
     // --------------------------------------------
     if (OPC.GetNotificationReceived("MachineStatus"))
     {
         var mac = this.machine;
         mac.OnlineFlag = OPC.GetNotifiedSINT("MachineStatus");
         this.machine   = mac;
     }
     // --------------------------------------------
     if (OPC.GetNotificationReceived("RequestLogging"))
     {
         var mac          = this.machine;
         var _requestFlag = OPC.GetNotifiedBOOL("RequestLogging");
         if (_requestFlag)
         {
             mac.RequestLogging = true;
             this.machine       = mac;
             KeepLogging(this.machine, null);
         }
         else if (!_requestFlag)
         {
             mac.RequestLogging = false;
             this.machine       = mac;
             ResetComplete(this.machine, null);
         }
     }
     //------------------------------------------------
     if (OPC.GetNotificationReceived("TraceabilityRdy"))
     {
         if (OPC.GetNotifiedBOOL("TraceabilityRdy"))
         {
             this.systemReady = true;
         }
         else
         {
             this.systemReady = false;
         }
     }
     // --------------------------------------------
     if (OPC.GetNotificationReceived("LoggingApp"))
     {
         var mac = this.machine;
         mac.CompletedLogging = OPC.GetNotifiedSINT("LoggingApp");
         this.machine         = mac;
     }
 }
Ejemplo n.º 19
0
 public PIController(double TimeStep, string OPCTag)//KP, Ti, Max/MinU could be inputs to the constructor, but thats for another time
 {
     Ts    = TimeStep;
     OPC_R = new OPC(OPCTag + "_R");
     OPC_U = new OPC(OPCTag + "_U", true);
 }