Vai al contenuto

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)

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Autore
    Post
  • #35028
    Sergio Bertana
    Amministratore del forum

    Visto 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.

    #36777
    Sergio Bertana
    Amministratore del forum

    A 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;

    #37306
    Paolo
    Partecipante

    Ho 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 ?

    #37307
    Sergio Bertana
    Amministratore del forum

    Tra 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).

    #39701
    Anonimo
    Inattivo

    Abbiamo 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 ?

    #39702
    Sergio Bertana
    Amministratore del forum

    L’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.

Stai visualizzando 6 post - dal 1 a 6 (di 6 totali)
  • Devi essere connesso per rispondere a questo topic.