Пример #1
0
        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)
            {
            }
        }
Пример #2
0
 private void btnRestart_Click(object sender, EventArgs e)
 {
     foreach (Control ctrl in tabs.Controls)
     {
         SingleController sc = (SingleController)ctrl.Controls[0];
         sc.Restart();
     }
 }
Пример #3
0
        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();
            }
        }
Пример #4
0
 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;
 }
Пример #5
0
 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;
     }
 }
Пример #6
0
        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);
        }