Vai al contenuto
PLC Forum


Generazione sorgenti AWL


ExergyAndrea

Messaggi consigliati

Buongiorno,

sto cercando di generare in sorgente AWL da Excel per la compilazione di un FC dove richiamo una serie di FB (con  DB di istanza).

Il risultato è questo:

-----------------------------------------------------------------------------------------------------------------------------

FUNCTION FC152 : VOID
TITLE =
AUTHOR : PROJECT
VERSION : 0.0

//This FC has been autogenerated via Source file 'FC_TRANSFER_Source.awl'          

BEGIN
NETWORK
TITLE =

NETWORK
TITLE = Buffer Tank 030TNK01  -->  Buffer Tank 030TNK01

  U "Alw_off";
  // = DB150.Alarm

  // U DB150.Alarm
  // = DB150.Interlock

  // RECIPE FUNCTION BLOCK
  // CALL  FB6 , DB250
  // Trasf_Running := DB150.Running
  // Trasf_Idle := DB150.Idle_Step
  // Trasf_Alarmed := DB150.Alarmed
  // Trasf_Suspended := DB150.Suspended
  // Abilita_Range_Orario :=
  // Interlock := DB150.Interlock
  // Alarm :=
  // EN_Recupero_Cicli :=
  // Ciclo_Trasf_Completato :=
  // Trasf_Running_Recipe :=
  // Partenza_Ritardata :=
  // Transf_OP_Mode := DB150.OP_Mode
  // Peso_in_Tonnellate :=
  // Dose_Giornaliera :=
  // Numero_Cicli :=
  // Ora_Attuale :=
  // Minuti_Attuali :=
  // Ora_Start :=
  // Minuti_Start :=
  // Ora_Start_Range :=
  // Ora_Stop_Range :=
  // Porzione_Ciclo := DB150.SP_m3
  // Abilita_Ricetta :=
  // Richiesta_Trasf := DB150.Start_Recipe
  // Ora_Prossimo_Scarico :=
  // Minuti_Prossimo_Scarico:=
  // Tempo_Ciclo :=
  // Cicli_Fatti :=
  // Cicli_da_Fare :=

END_FUNCTION

-----------------------------------------------------------------------------------------------------------------------------

Una volta compilato tolgo i commenti e il risultato è questo:

-----------------------------------------------------------------------------------------------------------------------------

 

      U     M      0.0
      =     DB150.Alarm

      U     DB150.Alarm
      =     DB150.Interlock

// RECIPE FUNCTION BLOCK
      CALL  FB     6 , DB250
       Trasf_Running          :=
       Trasf_Idle             :=
       Trasf_Alarmed          :=
       Trasf_Suspended        :=
       Abilita_Range_Orario   :=
       Interlock              :=
       Alarm                  :=
       EN_Recupero_Cicli      :=
       Ciclo_Trasf_Completato :=
       Trasf_Running_Recipe   :=
       Partenza_Ritardata     :=
       Transf_OP_Mode         :=
       Peso_in_Tonnellate     :=
       Dose_Giornaliera       :=
       Numero_Cicli           :=
       Ora_Attuale            :=
       Minuti_Attuali         :=
       Ora_Start              :=
       Minuti_Start           :=
       Ora_Start_Range        :=
       Ora_Stop_Range         :=
       Porzione_Ciclo         :=
       Abilita_Ricetta        :=
       Richiesta_Trasf        :=
       Ora_Prossimo_Scarico   :=
       Minuti_Prossimo_Scarico:=
       Tempo_Ciclo            :=
       Cicli_Fatti            :=
       Cicli_da_Fare          :=
// Trasf_Running := DB150.Running
// Trasf_Idle := DB150.Idle_Step
// Trasf_Alarmed := DB150.Alarmed
// Trasf_Suspended := DB150.Suspended
// Abilita_Range_Orario :=
// Interlock := DB150.Interlock
// Alarm :=
// EN_Recupero_Cicli :=
// Ciclo_Trasf_Completato :=
// Trasf_Running_Recipe :=
// Partenza_Ritardata :=
// Transf_OP_Mode := DB150.OP_Mode
// Peso_in_Tonnellate :=
// Dose_Giornaliera :=
// Numero_Cicli :=
// Ora_Attuale :=
// Minuti_Attuali :=
// Ora_Start :=
// Minuti_Start :=
// Ora_Start_Range :=
// Ora_Stop_Range :=
// Porzione_Ciclo := DB150.SP_m3
// Abilita_Ricetta :=
// Richiesta_Trasf := DB150.Start_Recipe
// Ora_Prossimo_Scarico :=
// Minuti_Prossimo_Scarico:=
// Tempo_Ciclo :=
// Cicli_Fatti :=
// Cicli_da_Fare :=

-----------------------------------------------------------------------------------------------------------------------------

 

Praticamente non mi compila i parametri ma li duplica. Qualcuno ha già provato un cosa simile e ha per caso una soluzione.

L'alternativa sarebbe generare una sorgente non commentato ma dono trovando la DB di istanza il compilatore mi da una serie di errori.

 

Grazie

 

Link al commento
Condividi su altri siti


Ma non fai prima a scrivere la FC direttamente in Step7?

Trasformare un blocco in sorgente risulta comodo per l'esportazione, ma scrivere direttamente il sorgente, mi pare un po' da masochisti.

 

Nel codice richiami variabili di DB150, con un indirizzamento misto assoluto/simbolico. Perché non generi anche il DB150, gli dai un nome e usi indirizzamento simbolico?

Link al commento
Condividi su altri siti

1 minuto fa, batta scrisse:

Ma non fai prima a scrivere la FC direttamente in Step7?

Trasformare un blocco in sorgente risulta comodo per l'esportazione, ma scrivere direttamente il sorgente, mi pare un po' da masochisti.

 

Nel codice richiami variabili di DB150, con un indirizzamento misto assoluto/simbolico. Perché non generi anche il DB150, gli dai un nome e usi indirizzamento simbolico?

Per rispondere alla prima osservazione ho creato un foglio EXCEL per la configurazione dell'impianto (gli impianti che devo gestire sono abbastanza ripetitivi).

Una volta compilato il foglio EXCEL con delle macro genero tutti i sorgenti per:

1) Simbolico PLC

2) Parti di programma PLC per acquisizione I/O digitali e analogici

3) Parti di programma PLC per la gestione dei Motori e Valvole

4) Variabili SCADA

5) Strutture dati per SCADA

Praticamente già adesso risparmio un sacco di tempo e ho ridotto in modo sensibile eventuali errori di battitura.

Sto cercando di aggiungere a questa parte già perfettamente funzionante una seconda parte per la gestione di alcune sequenze.

 

La seconda osservazione è corretta ma prima di aggiornare il simbolico e le altre DB volevo far funzionare questa parte altrimenti è lavoro inutile, il fatto che non funziona è indipendente da come richiamo le variabili in quanto non funziona neanche con indirizzi di merker assoluti e con parametri non compilati.

 

Grazie.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...