FB di comunicazione con inverter Aurora Power One (ABB)
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › FB di comunicazione con inverter Aurora Power One (ABB)
- Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 8 anni, 7 mesi fa da
Sergio Bertana.
-
AutorePost
-
Giugno 8, 2011 alle 3:55 pm #35028
Sergio Bertana
Amministratore del forumVisto le richieste che ci pervenivano da numerosi clienti di poter interfacciare i nostri sistemi SlimLine con gli inverter Aurora Power One (ora ABB), abbiamo realizzato una apposita libreria di supporto alla comunicazione con questi inverter.
La libreria ePowerOneLib (Estratto manuale) rende disponibili blocchi funzione per l’acquisizione del valore di variabili da un inverter Aurora. E’ possibile connettere uno SlimLine in rete RS485 con uno o più inverters e tramite queste FB indirizzare sia l’inverter sia la variabile da acquisire, ne verrà ritornato il valore.
Giugno 9, 2011 alle 7:00 am #36777Sergio Bertana
Amministratore del forumA titolo dimostrativo ho scritto un semplice programma in ST che esegue la lettura di tutti i registri da un inverter Aurora e li memorizza in un array di REAL, ecco il sorgente ed programma per il download.
(* Eseguo gestione comunicazione con inverter. *)
RdReg(Enable:=TRUE, Start:=AcqOn, File:=Fp, Address:=1); (* Lettura registro *)
AcqOn:=FALSE; (* Acquisizione attiva *)
IF (RdReg.Done) THEN RegsValue[RegIDx]:=RdReg.Value; END_IF;
(* Gestione comando di acquisizione, si attiva su fine esecuzione lettura. *)IF ((RdReg.Done) OR (RdReg.Fault) OR (SysFirstLoop)) THEN
AcqOn:=TRUE; (* Acquisizione attiva *)
RegIDx:=RegIDx+1; (* Register index *)
IF (RegIDx > 37) THEN RegIDx:=0; END_IF;CASE (RegIDx) OF
0:RdReg.Measure:=1; (* Grid Voltage (For three-phases systems is the mean) *)
1:RdReg.Measure:=2; (* Grid Current (For three-phases systems is the mean) *)
2:RdReg.Measure:=3; (* Grid Power (For three-phases systems is the mean) *)
3:RdReg.Measure:=4; (* Frequency (For three-phases systems is the mean) *)
4:RdReg.Measure:=5; (* Vbulk (For Inverter with more Bulk is the sum) *)
5:RdReg.Measure:=6; (* Ileak (Dc/Dc) *)
6:RdReg.Measure:=7; (* Ileak (Inverter) *)
7:RdReg.Measure:=21; (* Inverter Temperature *)
8:RdReg.Measure:=22; (* Booster Temperature *)
9:RdReg.Measure:=23; (* Input 1 Voltage (Input Voltage for single channel module) *)
10:RdReg.Measure:=25; (* Input 1 Current (Input Current for single channel module) *)
11:RdReg.Measure:=26; (* Input 2 Voltage (Input Voltage for single channel module) *)
12:RdReg.Measure:=27; (* Input 2 Current (Input Current for single channel module) *)
13:RdReg.Measure:=28; (* Grid Voltage (Dc/Dc) *)
14:RdReg.Measure:=29; (* Grid Frequency (Dc/Dc) *)
15:RdReg.Measure:=30; (* Isolation Resistance (Riso) *)
16:RdReg.Measure:=31; (* Vbulk (Dc/Dc) *)
17:RdReg.Measure:=32; (* Average Grid Voltage (VgridAvg) *)
18:RdReg.Measure:=33; (* VbulkMid *)
19:RdReg.Measure:=34; (* Power Peak *)
20:RdReg.Measure:=35; (* Power Peak Today *)
21:RdReg.Measure:=36; (* Grid Voltage neutral *)
22:RdReg.Measure:=37; (* Wind Generator Frequency *)
23:RdReg.Measure:=38; (* Grid Voltage neutral-phase *)
24:RdReg.Measure:=39; (* Grid Current phase r *)
25:RdReg.Measure:=40; (* Grid Current phase s *)
26:RdReg.Measure:=41; (* Grid Current phase t *)
27:RdReg.Measure:=42; (* Frequency phase r *)
28:RdReg.Measure:=43; (* Frequency phase s *)
29:RdReg.Measure:=44; (* Frequency phase t *)
30:RdReg.Measure:=45; (* Vbulk + *)
31:RdReg.Measure:=46; (* Vbulk – *)
32:RdReg.Measure:=47; (* Supervisor Temperature *)
33:RdReg.Measure:=48; (* Alim. Temperature *)
34:RdReg.Measure:=49; (* Heat Sink Temperature *)
35:RdReg.Measure:=61; (* Grid Voltage phase r *)
36:RdReg.Measure:=62; (* Grid Voltage phase s *)
37:RdReg.Measure:=62; (* Grid Voltage phase t *)
END_CASE;
END_IF;Giugno 27, 2012 alle 12:43 pm #37306Paolo
PartecipanteHo fatto un test con il programma di esempio riducendo il numero di variabili a quelle che mi occorrono ed impostando la comunicazione sulla porta “COM2” all’indirizzo modbus “2” che corrisponde al primo dei 6 inverter montati sull’impianto: tutto funziona correttamente.
E’ possibile avere un’esempio per leggere ciclicamente “N” inverter e copiare i dati in “N” array ? E’ possibile scriverlo in LD ?
Giugno 27, 2012 alle 4:57 pm #37307Sergio Bertana
Amministratore del forumTra la mia libreria di programmi ho recuperato un programma che può fare al caso tuo, in pratica come vedi dalla stampa questo programma può eseguire la lettura di un numero programmabile di inverters fino ad un massimo di 16.
I dati dei registri letti sono salvati in array che possono essere facilmenti letti da terminale operatore touch screen. Purtroppo il programma è in linguaggio ST, ma credo sia facilmente comprensibile (Download programma).
Settembre 7, 2016 alle 9:27 am #39701Anonimo
InattivoAbbiamo comprato e usato la funzione su un inverter per eolico. Abbiamo un problema aggiuntivo, vorremmo sapere lo stato dell’inverter, in particolare quando l’inverter ha eseguito tutti i controlli ed è in stato “waiting for wind” (equivalente a “waiting for sun”).
Per l’eolico è solo in questo stato che è consigliabile far funzionare la turbina in potenza. Esiste un altro registro con i flag di stato ? E’ possibile leggerlo ?
Settembre 7, 2016 alle 12:35 pm #39702Sergio Bertana
Amministratore del forumL’inverter Aurora rende disponibile un registro di stato (Ecco l’estratto del manuale) che credo abbia l’informazione di cui tu hai bisogno. Guardando l’estratto del manuale sembra che nel campo Global State si trovi quella informazione (Condizione 30).
Per acquisire da protocollo l’informazione di stato occorre implementare un apposito comando che attualmente non è implementato, in pratica occorre aggiungere nella liberia un nuovo FB realizzato appositamente. E’ una operazione che è fattibile bisogna contattare il nostro ufficio commerciale.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.