Sistemi di controllo

Innoviamo

Consideriamo la possibilità di mettere a frutto strumenti più standard e competenze più comuni tra i progettisti S/W, e di utilizzare metodi e strumenti non necessariamente ristretti al settore specifico.

I nodi di un approccio di questo genere sono:

  • Formalismi per la descrizione del sistema;
  • Sistemi operativi;
  • Ambienti di sviluppo S/W;
  • Linguaggi di programmazione;
  • Protocolli di comunicazione;
  • Dispositivi H/W.

Nel proseguo, affrontiamo questi punti.


Formalismi

Sono quelli che permettono di descrivere la struttura e il funzionamento del sistema, e alcuni di essi, più orientati agli aspetti funzionali, sono anche indicati per condividere le specifiche del sistema con il committente.

Personalmente, attingo volentieri all'armamentario di UML, con diagrammi di flusso dei dati, diagrammi a stati, diagrammi di sequenza, diagrammi a classi, etc.

Per quello che riguarda in particolare la logica di controllo di un sistema, i diagrammi a stati sono uno strumento che coniuga due esigenze apparentemente contrapposte:

  • Descrivere in modo comprensibile il comportamento della logica di controllo;
  • Dare una rappresentazione precisa e non ambigua, tale da essere utilizzabile direttamente come guida durante la fase di codifica del S/W.

Eccone un esempio:

Crossing_sm


Sistemi operativi

Come ambiente di sviluppo e test, si può usare la macchina che si preferisce; personalmente utilizzo un PC con Windows, dove eseguo localmente tutte le parti del sistema, fino alla loro completa messa a punto.

Come ambiente di esercizio, sia per la parte centralizzata del sistema che per i dispositivi sul campo, conviene utilizzare server o dispositivi con sistema operativo Linux. È una piattaforma su cui è disponibile una tale varietà di strumenti e componenti S/W da avere difficilmente rivali.

Solo per citarne alcuni, si possono installare database, web server, sistemi di comunicazione, ed è ricca anche la dotazione relativa alla sicurezza, con firewall, protocolli sicuri, VPN, e quant'altro.


Ambienti di sviluppo S/W

Anche in questo caso le scelte possibili sono molteplici, ma siamo comunque nell'ambito degli strumenti orientati alla programmazione in linguaggi standard, non dedicati.

Personalmente utilizzo Visual Studio per lo sviluppo di applicazioni con alcuni linguaggi, e VS Code per lo sviluppo con altri. Entrambi offrono potenti strumenti per dare ausilio sia alla codifica che al test.

Per quanto riguarda la codifica, ci si può avvalere, se si vuole, dell'ausilio di agenti di intelligenza artificiale. Inoltre sono disponibili funzionalità che semplificano la ri-fattorizzazione del codice, l'installazione e utilizzo di librerie, il versionamento della base di codice, eventualmente la collaborazione tra sviluppatori.

Per quanto riguarda il test, vi sono ausili per il test automatico di regressione, utili in particolar modo per quelle parti del S/W che sono riutilizzabili, e organizzate come librerie di componenti S/W.


Linguaggi di programmazione

Consideriamo l'utilizzo di linguaggi di programmazione general purpose.

È presente su questo stesso sito tutta una serie di articoli sull'argomento, che invito a leggere. Inoltre, più avanti, sono riportati vari esempi di codice sorgente, in più di un linguaggio, dove viene mostrato come si può procedere nella realizzazione di varie parti di un sistema di controllo esemplificativo.


Protocolli di comunicazione

Ci rivolgiamo a protocolli standard e di utilizzo generale, se possibile abbandonando la tecnica del polling, e l'indirizzamento diretto delle variabili dei dispositivi (p. es Modbus).

Per la comunicazione non in tempo reale tra dispositivi periferici e server, consideriamo in primis il protocollo di rete HTTP, e in particolare le interfacce RESTful, con codifica JSON dei contenuti.

Per la comunicazione in tempo reale tra parti del sistema, privilegiamo il protocollo MQTT, con codifica JSON del contenuto dei messaggi. In caso di comunicazioni tra web app e server, si userà la connessione via websocket.

Sono tutte tecnologie estremamente diffuse, ben standardizzate e consolidate, assolutamente affidabili, efficienti, e ampiamente note agli sviluppatori S/W. E di ognuna esiste la versione sicura, basata su tecnologia SSL.


Dispositivi H/W

Per quanto riguarda i dispositivi sul campo, che devono leggere input e pilotare output, vi sono varie opzioni, ma di seguito verranno considerati in particolare prodotti basati su H/W standard, sistema operativo Linux, integrati in modo da avere caratteristiche funzionali e di robustezza adatte all'utilizzo nei contesti di nostro interesse.

In particolare:

  • Involucro di tipo industriale, installabile su guida DIN, con terminali di I/O di tipo industriale;
  • Alimentazione a 24 V;
  • Orologio/datario di sistema, non volatile;
  • Interfacce di rete e USB;
  • Un buon numero di input analogici e digitali, protetti da sovratensioni;
  • Un buon numero di output analogici, digitali e a relè, protetti da sovratensioni e sovracorrenti;
  • Memoria di massa.

Giorgio Barchiesi
Albo degli Ingegneri Sez. A, N. 4027 della Prov. di Trento
P.IVA 02370260222, C.F. BRC GRG 58L26 C794R

Copyright © 2015-2024 Giorgio Barchiesi - Tutti i diritti riservati