Exemplo n.º 1
0
 // Event handler koji se poziva kad PLC postane online ili offline (Ethernet kabel se spoji ili odspoji).
 private void PLCInterface_PLCOnlineChanged(object sender, OnlineMarkerEventArgs e)
 {
     if (e.OnlineMark)
     {
         mwHandle.onlineFlag.Dispatcher.BeginInvoke((Action)(() => { mwHandle.onlineFlag.Fill = new LinearGradientBrush(Colors.Green, Colors.White, 0.0); }));
         mwHandle.t_connectionStatus.Dispatcher.BeginInvoke((Action)(() => { mwHandle.t_connectionStatus.Text = "PLC Status: Online"; }));
     }
     else
     {
         mwHandle.onlineFlag.Dispatcher.BeginInvoke((Action)(() => { mwHandle.onlineFlag.Fill = new LinearGradientBrush((Color)ColorConverter.ConvertFromString("#FF979797"), Colors.White, 0.0); }));
         mwHandle.t_connectionStatus.Dispatcher.BeginInvoke((Action)(() => { mwHandle.t_connectionStatus.Text = "PLC Status: Offline"; }));
     }
 }
Exemplo n.º 2
0
        private void onClockWatchdogTick(Object source, System.Timers.ElapsedEventArgs e)
        {
            lock (TimerLock)
            {
                int result = -99;
                Array.Clear(WatchdogBuffer, 0, WatchdogBuffer.Length);
                switch (activeScreen)
                {
                case 0:
                    break;

                case 1:
                    S7.SetBitAt(ref WatchdogBuffer, 0, 3, true);
                    break;

                case 2:
                    S7.SetBitAt(ref WatchdogBuffer, 0, 4, true);
                    break;

                case 3:
                    S7.SetBitAt(ref WatchdogBuffer, 0, 5, true);
                    break;

                case 4:
                    S7.SetBitAt(ref WatchdogBuffer, 0, 6, true);
                    break;

                case 5:
                    S7.SetBitAt(ref WatchdogBuffer, 0, 7, true);
                    break;

                case 6:
                    S7.SetBitAt(ref WatchdogBuffer, 1, 0, true);
                    break;

                case 7:
                    S7.SetBitAt(ref WatchdogBuffer, 1, 1, true);
                    break;

                case 8:
                    S7.SetBitAt(ref WatchdogBuffer, 1, 2, true);
                    break;
                }

                S7.SetBitAt(ref WatchdogBuffer, 0, 1, true);
                result = Client.DBWrite(10, 0, 2, WatchdogBuffer);
                if (result == 0)
                {
                    Errorcode = Client.DBRead(12, 0, 1, WatchdogBuffer);
                }
                else
                {
                    OnlineMark = false;
                }

                if (Errorcode == 0)
                {
                    OnlineMark = S7.GetBitAt(WatchdogBuffer, 0, 0);
                }
                else
                {
                    OnlineMark = false;
                }
            }

            OnlineMarkerEventArgs p = new OnlineMarkerEventArgs();

            p.OnlineMark = OnlineMark;
            if (Update_Online_Flag != null)
            {
                Update_Online_Flag(this, p);
            }
            if (OnlineMark)
            {
                WatchDogTimer.Start();
            }
            else
            {
                Errorcode = Errorcode + 0;
                RestartInterface();
            }
        }