// 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"; })); } }
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(); } }