private void EventTimer_Tick(object sender, EventArgs e) { try { while (server.PickEvent(ref ServerEvent)) { if ((ServerEvent.EvtCode == S7Server.evcDataWrite) && // write event (ServerEvent.EvtRetCode == 0) && // succesfully (ServerEvent.EvtParam1 == S7Server.S7AreaDB)) // it's a DB { foreach (Control ctrl in tabs.Controls) { SingleController sc = (SingleController)ctrl.Controls[0]; sc.UpdatePlcCounter(); if (ServerEvent.EvtParam2 == sc.DbNumber) // right DB { sc.HandleDBEvent(ServerEvent); break; } } } } } catch (Exception) { } }
private void btnRestart_Click(object sender, EventArgs e) { foreach (Control ctrl in tabs.Controls) { SingleController sc = (SingleController)ctrl.Controls[0]; sc.Restart(); } }
private void btnSlower_Click(object sender, EventArgs e) { plcCounterTimer.Enabled = false; if (plcCounterTimer.Interval < 10000) { plcCounterTimer.Interval = plcCounterTimer.Interval * 2; } plcCounterTimer.Enabled = true; foreach (Control ctrl in tabs.Controls) { SingleController sc = (SingleController)ctrl.Controls[0]; sc.Slower(); } }
private void plcCounterTimer_Tick(object sender, EventArgs e) { plcCounterTimer.Enabled = false; for (int i = 0; i < 10; i++) { SetData(i, PlcAddress.Counter, GetData(i, PlcAddress.Counter) + 1); SetData(i, PlcAddress.CounterCheck, GetData(i, PlcAddress.Counter)); } foreach (Control ctrl in tabs.Controls) { SingleController sc = (SingleController)ctrl.Controls[0]; sc.UpdatePlcCounter(); } plcCounterTimer.Enabled = true; }
private void btnPause_Click(object sender, EventArgs e) { if (btnPause.Text != ">") { btnPause.Text = ">"; foreach (Control ctrl in tabs.Controls) { SingleController sc = (SingleController)ctrl.Controls[0]; sc.Pause(); } plcCounterTimer.Enabled = false; } else { btnPause.Text = "| |"; foreach (Control ctrl in tabs.Controls) { SingleController sc = (SingleController)ctrl.Controls[0]; sc.Continue(); } plcCounterTimer.Enabled = true; } }
public Simulator() { InitializeComponent(); server = new S7Server(); ServerEvent = new S7Server.USrvEvent(); Action <string, int, int, int> add_ctrl = (name, db_nr, index, unit_nr) => { var ctrl = new SingleController() { Name = name, DbNumber = db_nr, DBxx = DBxx[index] }; ctrl.Dock = DockStyle.Fill; ctrl.UnitNumber = unit_nr; ctrl.NewLogLine += (s, e) => AddLogLine(e); ctrl.CarrierMoves = (cnr, bridge, xval) => { foreach (Control ctl in tabs.Controls) { SingleController sc = (SingleController)ctl.Controls[0]; sc.NewCarrierPos(cnr, bridge, xval); } }; ctrl.TrolleyMoves = (tnr, trolley, lift, yval, active) => { foreach (Control ctl in tabs.Controls) { SingleController sc = (SingleController)ctl.Controls[0]; sc.NewTrolleyPos(tnr, trolley, lift, yval, active); } }; ctrl.SendMessageToMain = (message, msg, br, tr, li, te) => { foreach (Control ctl in tabs.Controls) { SingleController sc = (SingleController)ctl.Controls[0]; sc.MessageFromOtherUnit(ctrl.Name, message, msg, br, tr, li, te); } }; server.RegisterArea(S7Server.srvAreaDB, db_nr, ref DBxx[index], DBxx[index].Length); TabPage tp = new TabPage() { Text = name }; tp.Controls.Add(ctrl); tabs.Controls.Add(tp); ctrl.Init(); }; add_ctrl("Main cabinet", 159, 9, 10); add_ctrl("Carrier 1", 150, 0, 31); add_ctrl("Carrier 2", 151, 1, 32); add_ctrl("Trolley 1", 152, 2, 21); add_ctrl("Trolley 2", 153, 3, 22); add_ctrl("Trolley 3", 154, 4, 23); add_ctrl("IO table 1", 155, 5, 11); add_ctrl("IO table 2", 156, 6, 12); add_ctrl("IO table 3", 157, 7, 13); EventTimer.Enabled = true; TxtIP.Text = GetDefaultIp(); StartBtn_Click(this, null); btnFaster_Click(this, null); btnFaster_Click(this, null); }