Lasciatemi dire che il sistema a logica combinatoria tipo PLC (magari evoluti) è molto, molto, molto più assai semplice di quanto non sia fare certe cose con linguaggi informatici più o meno evoluti.
Non pensatee al solito "immane rompiball" ma di solito si fanno programmi decisamente molto complessi, che ovviamente si possono anche fare in verilog o anche in assembler Z80 in C++ o in semplice C, in modo più che altro intellegibile per tutti (coloro che si sono imparati come funziona).
Più che altro se si è elettronici si riesce a leggere il diagramma in modo veloce e determinare con i pochi neuroni rimasti cosa significa.
Il punto, è che non ci sono jump if (cond), call if (cond)... test... ecc... Ma il risultato del test di un bit sia di input che di output che un bit di ram proveniente da qualche parte si riflette su di un bit virtuale che è il risultato dell'operazione logica effettuata. Alla fine quel risultato va ad influire sui dati di output di i/o o di memoria che siano.
Lo stesso si può fare con i byte, le word le longword i float ecc... Per esempio:
CPT: Log (FILIPPO) + Sin(GIOVANNI)- SQR(ANTONIO) DEST: (RESULT)
CPT: È l'operazione di "COMPUTE"
Log: è il logaritmo naturale di:
FILIPPO: è il nome di una variabile che può essere anche una word a 16 bit integer
+: indica la somma del:
Sin: Seno del valore contenuto nella variabile "GIOVANNI" e può essere anche un float in formato ISO.
-" indica la differenza di:
SQR: indica la radice quadrata di:
ANTONIO: che potrebbe essere una variabile a 32 bit di un intero.
DEST: È dove va a finire il risultato che è la variabile "RESULT" che a sua volta può essere un floating point in formati ISO.
La CPU in questo caso riesce a gestire l'apparente incongruenza tra il formato dei numeri impigati senza produrre errori.
Le variabili vengono gestite a seconda dei processori in FILES, o proprio come variabili definite in un elenco. Nei nuovi processori tutte
le variabili sono a 32 bit sia che siano dichiaratamente BIT, INT, CHAR, FLOAT. Questo perchè ormai non ha molto senso cercare di risparmiare
memoria o velocizzare l'esecuzione del programma quando il minimo gestibile è un numero a 32Bit con un tempo di accesso ad ogni livello di
ram di 1 stato. Il nome della variabile può essere quello che ti pare ed includere anche un indirizzo di rete o di ciò che vi pare dal BIT fino al FLOAT.
Ci vuole un attimo a imparare come funziona, ma se sapete programmare, sapete come funziona il vostro siste e cosa vi serve, in un paio di giorni,
una settimana per i più tardi, e imparate. Una volta imparato i vantaggi sono tanti, ma veramente tanti, tra i quali capire velocemente cosa si è programmato
come si è strutturato il programma e perchè. Cosa che invece con i sistemi di programmazione tipo C prettamente informatici ci perdete la testa solo a
capire perchè si fa lo shift di qualcosa perchè gli si somma un numero poi si sottrae ecc... E se dovete usare un PID ve lo dovete saper gestire.
Senza considerare che in tempo reale, mentre il software gira potete vedere le variabili che "variano" il valore ed il risultato delle operazioni. Ma
anche poter variare p.es. il tempo di integrazione o di derivazione, o la costante di amplificazione e vedere che accade al processo. Per non parlare del
fatto che è disponibile (in alcune CPU) l'oscilloscopio integrato dove nella sua finestra potete vedere l'andamento di quelle variabili che avete scelto di monitorare.
Non c'è paragone, tra un Contrllogix e l'ultimo PC di commercio, anche tra quelli in esecuzione industriale. È come paragonare un bel Lamborghini con un F22A Raptor
senza considerare l'armamento...