DiegoNic Inserito: 23 gennaio 2023 Segnala Share Inserito: 23 gennaio 2023 Buongiorno, volevo condividere un'idea che magari (se dovessi ricevere feedback positivi) potrebbe essere utile a chi si trova ad affrontare una situazione simile. Sto scrivendo un programma per la gestione di un dispositivo e vorrei implentare la logica con una macchina a stati. In passato, programmando in codesys in testo strutturato, ho fatto una cosa del genere con un semplice swich-case. Ogni case era uno "stato" e usavo una variabile numerica, che impostavo di volta in volta all'interno di ogni case a seconda di determinate condizioni, per passare da uno stato ad un altro. Ora, dovendo programmare in KOP, inizialmente avevo pensato di usare più o meno lo stesso metodo, usando una variabile INT da aggiornare di volta in volta alla fine dell'FC e di mettere all'inizio di ogni segmento un blocchetto CMP==I con gli opportuni numeri interi che mi facesse da condizione di esecuzione o meno del segmento. Così facendo però il PLC deve effettuare un sacco di CMP inutilmente, per tutti quei segmenti che in uno specifico ciclo non dovranno essere eseguiti... quindi mi è venuto in mente che potrei usare i JMP e le Label, facendo una cosa del genere: Uso delle Label al posto dei CASE e al posto della variabile per lo switch uso dei Jump. Ho allegato una bozza su carta. Quello che mi chiedo... è una buona idea o sarebbe meglio usare un'altra tecnica? Grazie in anticipo Buona giornata Diego Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 23 gennaio 2023 Segnala Share Inserita: 23 gennaio 2023 (modificato) Quindi l'istruzione SPL... vedi qui Modificato: 23 gennaio 2023 da drn5 Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 23 gennaio 2023 Segnala Share Inserita: 23 gennaio 2023 Se non ho problemi di tempo ciclo, in KOP questi salti non mi piacciono, avere delle parti di programma che in alcuni casi non vengono eseguiti può portare ad errori, esempio se metti una bobina per portare a 1 un bit, se poi non esegui quel ramo il bit resta congelato in quello stato. Dato che considero il kop una programmazione plastica, fluida, oltre ad essere più ingombrante e quindi un jmp potrebbe essere qualche segmento sopra e quindi non visibile, preferisco evitare salti ed avere sempre tutto il programma eseguito. Cosa differente è se programmo in SCL o in AWL, dove i salti sono imprescindibili, ma sono linguaggi più ragionati, meno automatici, è normale tenere in considerazione le parti di programma non eseguiti. Ovviamente è una mia considerazione personale, comunque mi è capitato spesso di vedere programmi fatti da altri e nel kop sono rarissime le volte in cui ho trovato dei salti. Link al commento Condividi su altri siti More sharing options...
DiegoNic Inserita: 23 gennaio 2023 Autore Segnala Share Inserita: 23 gennaio 2023 (modificato) 2 ore fa, drn5 ha scritto: Quindi l'istruzione SPL... vedi qui Grazie @drn5, gli do un'occhiata. Ciao Diego Modificato: 23 gennaio 2023 da DiegoNic Link al commento Condividi su altri siti More sharing options...
DiegoNic Inserita: 23 gennaio 2023 Autore Segnala Share Inserita: 23 gennaio 2023 Ciao @acquamangrazie per il tuo feedback. In effetti l'unica mia perplessità era proprio questa, i possibili errori legati a qualche salto non pensato bene, quando si salta da una parte all'altra di un codice bisogna stare molto attenti perché la mente può fare qualche passaggio logico "in background" (passami l'espressione) che il PLC ovviamente non fa. Però (non volendo passare per facilone o per spaccone) se costruisco tutti i flussi logici per bene, facendo attenzione a non tralasciare nulla e a rendere le condizioni di salto mutuamente esclusive, insomma un codice regionato e non scritto di getto, non dovrei avere problemi. In quel caso sarebbe una pura scelta di stile, sei d'accordo? Grazie Ciao Diego Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 23 gennaio 2023 Segnala Share Inserita: 23 gennaio 2023 2 minuti fa, DiegoNic ha scritto: In quel caso sarebbe una pura scelta di stile, sei d'accordo? Assolutamente si, come dicevo quando vado in kop non ho la mentalità del ragionamento con i salti, con altri linguaggi si. Tieni presente che oltre allo sviluppo c'è la parte più importante che è la messa in servizio, dove spesso ha fretta e la pressione ti porta a ragionare meno e a fare le modifiche più di getto, ed è li che spesso si sottovalutano le situazioni, ed è per quello che evito di procurarmi problemi evitando di implementare logiche di salto. Link al commento Condividi su altri siti More sharing options...
DiegoNic Inserita: 23 gennaio 2023 Autore Segnala Share Inserita: 23 gennaio 2023 3 minuti fa, acquaman ha scritto: Assolutamente si, come dicevo quando vado in kop non ho la mentalità del ragionamento con i salti, con altri linguaggi si. Tieni presente che oltre allo sviluppo c'è la parte più importante che è la messa in servizio, dove spesso ha fretta e la pressione ti porta a ragionare meno e a fare le modifiche più di getto, ed è li che spesso si sottovalutano le situazioni, ed è per quello che evito di procurarmi problemi evitando di implementare logiche di salto. Grazie @acquamanquesto è un consiglio d'oro... da chi ha fronteggiato sia la fase di puro sviluppo che la messa in servizio. Grazie mille, lo terrò a mente. Buona giornata Diego Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora