Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumCon il passaggio alla versione XUnified (Vedi articolo) abbiamo modificato i nomi di alcuni oggetti (Funzioni e FB) e di alcune dichiarazioni di tipo, nel tuo caso il FB ModbusMaster che stai utilizzando è quello sviluppato per i sistemi XTarget, mentre probabilmente stai sviluppando su un sistema XUnified. Cosa fare..
a) Puoi inserire nel progetto la libreria eLLabXUnifiedAdjLib che contiene l’adattamento degli oggetti alla nuova libreria.
b) Puoi sostituire il FB ModbusMaster con quello presente nella libreria eLLabObsoleteLib, che è esattamente uguale al precedente ma è stato riscritto per renderlo compatibile con la nuova architettura XUnified.
c) Puoi sostituire il FB ModbusMaster con la nuova versione (Vedi articolo) effettuando le opportune modifiche sui parametri.
E’ ovvio che per sfruttare tutte le caratteristiche della nuova architettura XUnified consiglio di utilizzare l’opzione “c”.
Sergio Bertana
Amministratore del forumCon il passaggio alla versione XUnified (Vedi articolo) abbiamo modificato i nomi di alcuni oggetti (Funzioni e FB) e di alcune dichiarazioni di tipo, nel tuo caso il file pointer da FILEP è diventato eFILEP.
Tu probabilmente stai realizzando un programma per un sistema XTarget12 ma stai utilizzando il FB HWgHTemp485 preso dalla libreria eLLabUtyLib della nuova distribuzione di LogicLab che è già convertita per l’utilizzo su sistemi XUnified.
Abbiamo previsto per questi casi e per tutti i casi in cui si desideri utilizzare gli esempi del manuale on line sui sistemi XTarget12 una libreria apposita, devi inserire nel tuo progetto la libreria eLLabXTargetAdjLib.
Sergio Bertana
Amministratore del forumPer ogni oggetto di libreria funzione o FB se fai riferimento al manuale On-Line, qui ad esempio il FB ByteToBit e qui il BitToByte, vedrai che è indicata la libreria in cui l’oggetto si trova, in questo caso entrambi si trovano nella eLLabUtyLib.
Ora puoi inserire l’intera libreria nel tuo progetto oppure come io consiglio solitamente puoi importare i soli oggetti che ti servono all’interno del tuo progetto, in questa pagina è indicato come fare.
Sergio Bertana
Amministratore del forumSi certo nel blocco funzione devi definire il parametro di ingresso con il suo tipo preceduto dal simbolo “@”, esempio @USINT, @UINT, @REAL, ecc…
All’interno del FB per agire sul parametro, esempio per incrementarne il valore usi la sintassi:
@Par:=@Par+1;
Quando passi l’indirizzo al parametro all’interno del tuo programma utilizzi l’operando ADR(MyVar).
Sergio Bertana
Amministratore del forumSi certo devi riferirti a questi bits
LB-10100 PLC 4 status (ethernet), set on to retry connection
LB-10400 PLC 5 status (ethernet), set on to retry connection
LB-10700 PLC 6 status (ethernet), set on to retry connectionTutte le informazioni sui registri di sistema si trovano nel manuale EasyBuilder al capitolo 22 System Registers.
Sergio Bertana
Amministratore del forumDopo aver cambiato IP con le word menzionate devi renderle attive con i relativi bit di conferma…
LB-10070 forced to reconnect PLC 4 (ethernet) when IP or system parameters changed on-line (set ON)
LB-10071 forced to reconnect PLC 5 (ethernet) when IP or system parameters changed on-line (set ON)
LB-10072 forced to reconnect PLC 6 (ethernet) when IP or system parameters changed on-line (set ON)
….Sergio Bertana
Amministratore del forumSi utilizzano vartiabili di IN_OUT quando il FB deve agire sul valore della variabile, le utilizzi esattamente come le variabili di ingresso e di uscita.
Se dichiari ad esempio la variabile IOVar di tipo VAR_IN_OUT, questa variabile sarà accessibile sia come ingresso al FB che come uscita.
DB_MY_FUNC.IOVar:=0; //Assegno un valore alla variabile di ingresso DB_MY_FUNC(); //Eseguo il blocco funzione Var:=DB_MY_FUNC.IOVar; //Trasferisco valore della variabile di uscita
Personalmente non utilizzo mai variabili di IN_OUT, quando il FB o la funzione devono agire sul valore di una variabile preferisco passare in ingresso su una variabile IN l’indirizzo della variabile e all’interno della funzione o del FB utilizzo il puntatore alla variabile.
Sergio Bertana
Amministratore del forumIntanto bisogna capire se hai realizzato una funzione od un blocco funzione in questo video spiego le differenze, in questo video spiego come realizzare ed utilizzare un FB.
Da quello che mi dici visto che lo hai istanziato nel tuo programma ipotizzo sia un blocco funzione, ti rimando al forum per cercare altre informazioni sulle funzioni e i blocchi funzioni (Vedi qui).
In linea di massima un FB và istanziato (Cioè gli và assegnato uno spazio in memoria definendo una variabile del tipo FB creat), poi nel programma utilizzi la variabile. Ma un FB non ha ritorni quindi puoi riferirti ai sui membri di I/O con il loro nome. Nel tuo caso potrai scrivere qualcosa del tipo…
DB_MY_FUNC.Input:=0; //Assegno un valore ad una varibile di ingresso DB_MY_FUNC(); //Eseguo il blocco funzione Var:=DB_MY_FUNC.Output; //Trasferisco valore di una variabile di uscita
Sergio Bertana
Amministratore del forumLe librerie sono in continua evoluzione, ora con il rilascio della versione XUnified dei sistemi operativi tutte le librerie sono state aggiornate per renderle compatibili con la nuova architettura. Quindi per usare le nuove librerie puoi aggiornare il sistema operativo del tuo prodotto oppure inserire nel progetto la libreria eLLabXTargetAdjLib come indicato qui.
Venendo alla tua domanda nella knowledge base troverai gli esempi che ti interessano in questo articolo trovi come utilizzare il FB OWRdIdentifier per acquisire l’identificatore univoco di ogni sensore.
In questo articolo troverai esempi per l’acquisizione delle sonde di temperatura, come vedi dal programma in FBD se hai più sonde devi istanziare piu FB OWRdTemperature collegando il Done del primo sull’Enable del successivo e così di seguito. Immaginando la lettura di 3 sonde avremo.
// Acquires the temperature. Temp[0].OwID:=OWire.OwID; //One-Wire management ID Temp[0].Enable:=NOT(Temp[2].Done); //Enable Temp[0](); //Read temperature Temp[1].OwID:=OWire.OwID; //One-Wire management ID Temp[1].Enable:=Temp[0].Done; //Enable Temp[1](); //Read temperature Temp[2].OwID:=OWire.OwID; //One-Wire management ID Temp[2].Enable:=Temp[1].Done; //Enable Temp[2](); //Read temperatureOttobre 1, 2020 alle 11:31 am in risposta a: Connessione in MPI di un PLC S7 300 con pannello MT8102iE #57744Sergio Bertana
Amministratore del forumSi è possibile collegare direttamente il pannello alla porta del PLC senza necessità di adattatori.
Settembre 28, 2020 alle 10:05 am in risposta a: Compiling errors by upgrading to LogicLab Ver. 5.12.0.36 #57719Sergio Bertana
Amministratore del forumTo support users to the migration to XUnified we have rewritten all the libraries to adapt them to the new specifications. Even if it’s possible in the XUnified targets to use objects and libraries developed for the XTarget systems by adding the eLLabXUnifiedAdjLib library to the project, we suggest to replace them with the new ones properly developed for XUnified targets.
About your question the ModbusMaster FB has been completely rewritten and called ModbusMaster_v1. The IFTime parameter is not longer needed, the Timeout and Delay parameters now must be defined in seconds.
The ModbusMaster has become obsolete and like all the other obsolete objects can be found in the eLLabObsoleteLib that has been aligned to the XUnified specifications.
Sergio Bertana
Amministratore del forumPer la protezione dell’inverter e del cavo di alimentazione in caso di cortocircuito i fusibili sono sufficienti, altri dispositivi comunque non fanno male, ad esempio un interruttore differenziale (Vedi topic).
Sul manuale del GD20 alla appendice C “Opzioni e parti periferiche” troviamo le informazioni per il dimensionamento sia del fusibile che dell’interruttore.
Per la protezione del motore e dei suoi cavi l’inverter protegge il motore e il cavo in situazione di cortocircuito quando il cavo è dimensionato in base alla corrente nominale dell’inverter. Non sono necessari dispositivi di protezione aggiuntivi.
Sergio Bertana
Amministratore del forumSi in effetti su cMT-SVR non è possibile, hai bisogno di un cMT con il display o di un pannello. il cMT-SVR non gestisce le componenti ibride.
Sergio Bertana
Amministratore del forumSe intendi la string table, no non è editabile direttamente da HMI ma si può esportare in CSV, modificare e reimportare (Screenshot).
Sergio Bertana
Amministratore del forumPer evitare di cancellare la lista dei contatti devi nei parametri di sistema abilitare il mantenimento dei contatti presenti su HMI se già presenti (Screenshot).
-
AutorePost