public void Start() { if (TabellaComandi == null) { Console.WriteLine("La tabella dei comandi è vuota"); } //Lettura stati da plc while (true) { Thread.Sleep(200); if (true)//<- azione richiesta dal plc { //_robot.WriteCommand(Azioni.Prelievo, Pinza.Pinza_2, Stazioni.Carico, PosizioneSchedaForRobot.Posizione_2); //_robot.WriteCommand(Azioni.Prelievo, Pinza.Pinza_2, Stazioni.Carico, PosizioneSchedaForRobot.Posizione_2); //_robot.WriteCommand(Azioni.Deposito, Pinza.Pinza_2, Stazioni.Compact_2, PosizioneSchedaForRobot.Posizione_1); //_robot.WriteCommand(Azioni.Deposito, Pinza.Pinza_2, Stazioni.Compact_2, PosizioneSchedaForRobot.Posizione_4); //_robot.WriteCommand(Azioni.Prelievo, Pinza.Pinza_1, Stazioni.Home, PosizioneSchedaForRobot.Posizione_1); // _robot.WriteCommand(Azioni.Prelievo,Pinza.Pinza_2, Stazioni.Carico, PosizioneSchedaForRobot.Posizione_2); // _robot.WriteCommand(Azioni.Deposito, Pinza.Pinza_1, Stazioni.Compact_2, PosizioneSchedaForRobot.Posizione_3); // _robot.WriteCommand(Azioni.Deposito, Pinza.Pinza_2, Stazioni.Compact_2, PosizioneSchedaForRobot.Posizione_4); int stazione = 1; //<- lettura da plc, stazione interessata int[] stato = { 4, 0, 0 }; // <- lettura stato stazione if (stato.SequenceEqual(new int[] { 4, 0, 0 })) { _compact_2.GetTestResoultFromPLC(); } Azione a = TabellaComandi.FirstOrDefault(i => i.Key.SequenceEqual(stato)); if (a == null) { Console.WriteLine($"Attenzione, nessun azione corrisponde alla sequenza {stato[0]}{stato[1]}{stato[2]}"); } //passare come parametro la compact giusta CommandExecuter(a, Stazioni.Compact_2, _compact_2); } } }
public Ciclo(Robot robot) { _robot = robot; _compact_1 = new Compact(Stazioni.Compact_1); _compact_2 = new Compact(Stazioni.Compact_2); #region Comando tutto vuoto stazione test 1 TabellaComandi.Add(new Azione { Comment = "Postazione test completamente vuota." + "Verranno prese 4 schede dalla stazione di carico, e posate all interno della macchina di test.", Key = new int[] { 0, 0, 0 }, Comandi = new List <TableCommand>() { new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.In }, new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.In }, new TableCommand() { Azione = AzioneTabella.Place, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.None }, new TableCommand() { Azione = AzioneTabella.Place, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.None }, new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.In }, new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.In }, new TableCommand() { Azione = AzioneTabella.Place, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.None }, new TableCommand() { Azione = AzioneTabella.Place, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.None }, } }); TabellaComandi.Add(new Azione { Comment = "La macchina di test ha completato il suo lavoro, e restituisce un informazione di 'Tutti Ok'," + "ovvero tutte le schede possono essere prese e depositate nella zona di scarico Good.", Key = new int[] { 4, 0, 0 }, Comandi = new List <TableCommand>() { new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.G }, new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.G }, new TableCommand() { Azione = AzioneTabella.Good, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.None }, new TableCommand() { Azione = AzioneTabella.Good, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.None }, new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.G }, new TableCommand() { Azione = AzioneTabella.Pick, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.G }, new TableCommand() { Azione = AzioneTabella.Good, Pinza = Pinza.Pinza_1, Parametro = ParametriTabella.None }, new TableCommand() { Azione = AzioneTabella.Good, Pinza = Pinza.Pinza_2, Parametro = ParametriTabella.None }, } }); #endregion XmlSerialize(); }