Controllo di temperatura di un liquido in una vasca tramite PID implementato su PLC
 

 

 

 

Nel PLC sono stati definiti i seguenti:

moduli di importazione dalla rete
Master F -> Slave F (8 bit Master Flag 0 -> Slave Flag 0)
•Scrive tramite LookOut i flag 0-7 (comandi manuali)

Master R -> Slave R (1 registro Master Reg 204-> Slave Reg 204)
•Scrive tramite LookOut i flag 0-7 (comandi manuali)

Master R -> Slave R (4 registro Master Reg 206-> Slave Reg 206)
•Scrive tramite LookOut il registro 206 (Fattore proporzionale, integrale derivativo e banda morta del PID)

Master R -> Slave R (1 registro Master Reg 3-> Slave Reg 3)
•Scrive tramite LookOut il registro 3 (Valore desiderato per la potenza della resistenza impostata in modalità manuale)

moduli di esportazione verso la rete.
Slave F -> Master F (16 bit Slave Flag 8 -> Master Flag 8)
• Legge i flag 8-23 dal LookOut (stato del sistema modalità manuale/automatica, immagine degli ingressi e delle uscite)

Slave R -> Master R (1 registro Slave Reg 0 -> Master Reg 0)
• Legge il registro 0 dal LookOut (valore di potenza imposto alla resistenza)

Slave R -> Master R (1 registro Slave Reg 202 -> Master Reg 202)
• Leggere il registro 202 dal LookOut (valore misurato della temperatura del liquido)

È stata definita una tabella di polling sulla scheda Applicom tramite il tool PCCYC in modo da memorizzare i dati importati/esportati sul Database della scheda del master, dove potranno essere letti dallo SCADA:
{FUNCTION_1}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = WRITE_OUTPUT_BIT_PACKED
DB_DATA = BIT
PERIODE = 0
DATA_NUMBER = 8
EQUIPMENT_ADDR = 0
DB_ADDR = 0
STATUS_ADDR = 65535
{}
{FUNCTION_2}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = WRITE_OUTPUT_WORD
DB_DATA = WORD
PERIODE = 0
DATA_NUMBER = 2
EQUIPMENT_ADDR = 1
DB_ADDR = 4
STATUS_ADDR = 65535
{}
{FUNCTION_3}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = WRITE_OUTPUT_WORD
DB_DATA = WORD
PERIODE = 0
DATA_NUMBER = 8
EQUIPMENT_ADDR = 5
DB_ADDR = 6
STATUS_ADDR = 65535
{}
{FUNCTION_4}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = WRITE_OUTPUT_WORD
DB_DATA = WORD
PERIODE = 0
DATA_NUMBER = 2
EQUIPMENT_ADDR = 21
DB_ADDR = 14
STATUS_ADDR = 65535
{}
. {FUNCTION_5}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = READ_INPUT_BIT_PACKED
DB_DATA = BIT
PERIODE = 0
DATA_NUMBER = 16
EQUIPMENT_ADDR = 0
DB_ADDR = 8
STATUS_ADDR = 65535
{}
{FUNCTION_6}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = READ_INPUT_WORD
DB_DATA = WORD
PERIODE = 0
DATA_NUMBER = 1
EQUIPMENT_ADDR = 2
DB_ADDR = 0
STATUS_ADDR = 65535
{}
{FUNCTION_7}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = READ_INPUT_WORD
DB_DATA = WORD
PERIODE = 0
DATA_NUMBER = 1
EQUIPMENT_ADDR = 4
DB_ADDR = 1
STATUS_ADDR = 65535
{}
{FUNCTION_8}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = READ_INPUT_WORD
DB_DATA = WORD
PERIODE = 0
DATA_NUMBER = 1
EQUIPMENT_ADDR = 6
DB_ADDR = 2
STATUS_ADDR = 65535
{}
{FUNCTION_9}
EQUIPMENT = 10
ACTIVE = 1
FUNCTION_TYPE = READ_INPUT_WORD
DB_DATA = WORD
PERIODE = 0
DATA_NUMBER = 1
EQUIPMENT_ADDR = 8
DB_ADDR = 3
STATUS_ADDR = 65535
{}

Osservazione: le funzioni 8 e 9 (così come le 6 e 7) potevano essere riunite in una sola trasferendo contemporaneamente 2 word (vedi funzione 5), ma nonostante le diverse prove non è stato possibile realizzare correttamente la comunicazione con una configurazione diversa da quella riportata.
Le tabelle riportate di seguito illustrano come vengono mappati i dati trasferiti tramite la rete e come vengono allocati nel database della scheda Applicom. In grassetto sono indicati gli indirizzi da usare per accedere ai dati.

 
SOFTWARE