Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumL’unico documento che ho sul client OPC-UA è questo.
Come consiglio potresti verificare con un tool di diagnosi per OPC-UA (Ce ne sono di gratuiti su Internet) se il server pubblica effettivamente le variabili che ti vanno in errore sul pannello.
Sergio Bertana
Amministratore del forumCon il rilascio della versione 5.22.x.xx di LogicLab è stata introdotta la gestione degli operandi Data/Ora questo ha portato ad alcune modifiche del sistema operativo la più evidente è l’introduzione della funzione SysTimeGetMs.
Tutte le nuove librerie che rilasciamo fanno riferimento a questa funzione, quindi per poterle utilizzare devi necessariamente utilizzare l’ultima versione di LogicLab e l’ultima versione del firmware (Vedi articolo).
Sergio Bertana
Amministratore del forumPer poter utilizzare il TLS con la definizione dei:
TLSClient.CipherSuites:=eNULL; //Cipher suites supported TLSClient.Psk:=eNULL; //Preshared key TLSClient.PskIdentity:=eNULL; //Preshared key identity
Occorre avere il firmware da versione SFW198E070, lo puoi scaricare dal sito.
Sergio Bertana
Amministratore del forumQuindi mi sembra di capire che stai comunicando in seriale RS485, con che modello di CPU stai lavorando.
Se è il modello con la porta RS485 integrata la gestione del commutazione Rx/Tx è automatica ma devi settare opportunamente il FB SysSerialPort.
Sp.DTRManagement:=DTR_AUTO_WO_TIMES; //DTR management Sp.DTRComplement:=FALSE; //DTR complement Sp.EchoFlush:=FALSE; //Received echo flush Sp.DTROnTime:=0; //DTR On time delay (mS) Sp.DTROffTime:=0; //DTR Off time delay (mS) Sp.FlushTm:=0; //Flush time (mS)
Se invece utilizzi un convertitore RS232/RS485 devi verificare che gestisca correttamente la commutazione.
Invece non mi spiego perchè non vedi i pacchetti Tx, che sicuramente ci sono visto che ci sono i pacchetti Rx. Però se guardo i tuoi post solo nel primo post non si vedono i pacchetti Tx negli altri due sono presenti. Un motivo per non vederli è se attivi lo SpyData con il trigger sui soli pacchetti Rx ed errori (Vedi articolo):
SpyData -t 40000001
Ma non credo sia il tuo caso.
Sergio Bertana
Amministratore del forumConsiderazione corretta, aggiungo solo un suggerimento, se si usa il comando SpyData con l’opzione -v 3, si avrà la visualizzazione diretta del tempo trascorso tra un report e l’altro.
SpyData -v 3 Spy data active, type "Ctrl-C" to exit... 00:14:23( 0)|ModbusSlave:Rx|03 0D 00 00 00 06 01 03 9C 40 00 0A 00:14:23( 2)|ModbusSlave:Tx|03 0D 00 00 00 17 01 03 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:14:24(1038)|ModbusSlave:Rx|03 0E 00 00 00 06 01 03 9C 40 00 0A 00:14:24( 2)|ModbusSlave:Tx|03 0E 00 00 00 17 01 03 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Una domanda ma il programma che esegue la ModbusMaster è eseguito nella task Back?
Sergio Bertana
Amministratore del forumProbabilmente hai un sistema XTarget devi aggiornare a XUnified (Vedi articolo).
In alternativa puoi inserire nel progetto la libreria eLLabXTargetAdjLib come indicato in questo articolo.
Sergio Bertana
Amministratore del forumNella configurazione del Free protocol devi definire l’indirizzo IP e la porta del dispositivo con cui devi comunicare, quindi devi riferirti alla documentazione della stampante.
In pratica definirai due dispositivi Free protocol (Esempio Printer1 e Printer2).
- Printer1 avrà come impostazione l’indirizzo IP della prima stampante e porta 9100.
- Printer2 avrà come impostazione l’indirizzo IP della secondastampante e porta dedotta dalla documentazione della stampante.
Poi è indifferente se le usi contemporaneamente oppure no.
Sergio Bertana
Amministratore del forumL’istruzione RETURN può essere utilizzata in tutti i linguaggi, se utilizzi FBD ecco nello screenshot un esempio di utilizzo.
Come vedi dal progetto attivando la variabile Execute verranno eseguiti tutti i rami successivi e Counter verrà incrementato. Disattivando la variabile l’esecuzione si arresta ed il valore di Counter resterà invariato.
Naturalmente per gestire da un programma principale le varie esecuzioni dei tuoi programmi FBD dovrai utilizzare variabili globali di abilitazione.
Sergio Bertana
Amministratore del forumMi parli di task scritti in FB, quindi sono dei function block?
Se sono function block basta non eseguire la chiamata dell’istanza e tutto il FB rimane congelato.
Da programma non è possibile eseguire chiamate a programmi, tutti iprogrammi inseriti nelle varie tasks di esecuzione Boot, Fast, Slow, Back sono sempre eseguiti secondo l’ordine di chiamata dall’alto verso il basso.
Ma se tu all’inizio del programma inserisci una istruzione RETURN condizionata da una variabile BOOL, potrai dal tuo programma Main attivare/disattivare le variabili che gestiscono l’esecuzione. Uscendo con un RETURN all’inizio del progranma tutto il programma rimane congelato all’ultima esecuzione.
Sergio Bertana
Amministratore del forumIntanto nel report SpyData non vedo i frames Tx dei comandi Modbus inviati al dispositivo, immagino tu abbia eseguito lo spionaggio triggerando solo i pacchetti Rx. Per quanto riguarda gli errori puoi fare riferimento alla pagina elenco.
- 10007050 Timeout esecuzione, dopo l’invio del comando il sistema non ha risposto nel tempo definito di timeout.
- 10007170 Valore address errato in risposta a comando “Preset single register”, è stato definito un indirizzo nel comando di preset single register ed il sistema slave ha risposto con un’altro.
- 10007652 Codice funzione errato in frame risposta a comando, è stato inviato un codice di comando ed il sistema ha risposto con un’altro codice.
- 10007152 Valore dato reset bit errato in risposta a comando “Force single coil”, è stato inviato un comando di Force single coil di reset bit ma il sisatema slave ha risposto con il valore di bit set “FF00”.
- 10007153 Valore dato set bit errato in risposta a comando “Force single coil”, è stato inviato un comando di Force single coil di set bit ma il sisatema slave ha risposto con il valore di bit reset “0000”.
Mi sembra che ci siano problemi di comunicazione con il tuo sistema slave. Ti consiglio di testare i singolo comandi Modbus utilizzando Toolly per verificare se sono corretti e se il sistema slave risponde correttamente.
Aprile 4, 2023 alle 8:48 am in risposta a: Import data from version 18 of TIA portal (SIEMENS) #71384Sergio Bertana
Amministratore del forumAttualmente EasyBuilder non importa il file ap18.
Come workaround è possibile rinominare il file ap18 in ap17 momentaneamente e poi eseguire l’importazione.
La versione di EasyBuildePro 6.08.02…. che sarà rilasciata a breve avrà anche ap18 già configurato.
Sergio Bertana
Amministratore del forumSpiegarti velocemente il CANOpen è impossibile, intanto diciamo che le funzioni base SysCANTxMsg e SysCANRxMsg servono a inviare e ricevere messaggi CAN, il CANOpen utilizza i messaggi CAN secondo regole precise che ne determinano il funzionamento.
Quindi intanto per gestirlo ti conviene fare riferimento alla CANOpenMaster, che permette di attivare una modalità sniffer per visualizzare i pacchetti in transito. Il protocollo si basa su pacchetti di configurazione SDO (Che sono quelli a cui fa riferimento la documentazione) e pacchetti dato PDO.
Una idea sul funzionamento del protocollo te la puoi fare guardando il sorgente della FB BeckhoffBK5100, in cui viene gestito un modlo di I/O.
- Il master alla inizializzazione invia un comando CANOMMCTYPE#MODRST.
- Poi inizia la configurazione del modulo scrivendo e leggendo i vari SDO, questo modulo è semplice quindi viene solo eseguita la lettura del tipo di dispositivo CANOMMCTYPE#SDORD.
- Terminata la configurazione il modulo viene reso operativo CANOMMCTYPE#MODOP.
- A questo punto il modulo comincerà ad inviare lo stato degli ingressi ed ad accettare il settaggio delle uscite attraverso pacchetti PDO.
Sergio Bertana
Amministratore del forumCosì per sfizio ti posto anche l’esempio della macro.
macro_command main() bool ResetBit=false //Reset bit command bool SetBit=true //Set bit command short CTime=0 //Current time short TouchNow[2]={0,0} //Touch now position short TouchSave[2]={0,0} //Touch save position // Read data from HMI support variables. GetData(CTime, "Local HMI", LW, 10, 1) //Current time GetData(TouchSave[0], "Local HMI", LW, 11, 2) //Touch save position // Increase current time. CTime=CTime+1 //Current time // Acquire last touch position. GetData(TouchNow[0], "Local HMI", LW, 9042, 2) //Touch X, Y position // Check is screen is touched. if ((TouchNow[0] <> TouchSave[0]) or (TouchNow[1] <> TouchSave[1])) then CTime=0 //Current time SetData(ResetBit, "Local HMI", LB, 10, 1) //Reset pop-up trigger TouchSave[0]=TouchNow[0] //Touch save position TouchSave[1]=TouchNow[1] //Touch save position end if if (CTime > 10) then SetData(SetBit, "Local HMI", LB, 10, 1) //Set pop-up trigger end if // Save data on HMI support variables. SetData(CTime, "Local HMI", LW, 10, 1) SetData(TouchSave[0], "Local HMI", LW, 11, 2) //Touch save position end macro_commandLa macro viene eseguita a tempo ogni 1 secondo, ed esegue l’incremento di un avariabile tempo, se viene toccato lo schermo (siccome eseguo la macro a tempo non posso utilizzare il bit di schermo toccato, ho usato le posizioni di tocco), eseguo il reset del tempo e del bit di attivazione finestra pop-up.
Se scade il tempo si attiva il bit di attivazione finestra pop-up, ho scelto un bit a caso LB10 ed ho inserito nella Common window un oggetto Direct window che visualizza una finestra di pop-up se LB10 è attivo. Così quando si attiva la finestra di pop-up basta toccare lo schermo per resettare il bit e chiuderla.
Sergio Bertana
Amministratore del forumIntanto la notte ha portato consiglio, potresti spostare gli oggetti dalla Common Window in una nuova finestra, poi nelle tue finestre andare a definire nei settaggi questa finestra come Underlay window.
In questo modo avrai un funzionamento identico a prima ma nella finestra che utilizzerai come salvaschermo non definendo nessuna Underlay window non avrai nessun oggetto tranne quelli dichiarati nella pagina.
Sergio Bertana
Amministratore del forumCome scritto nel post precedente e come vedi dall’Appendice A il protocollo MPI è supportato da:
- Serie iP, iE, eMT, mTV, XE
- Serie cMT-SVR, cMT3071, cMT3072, cMT3090, cMT3103, cMT3151, cMT-HDM, cMT-FHD, cMT-G01, cMT-G02, cMT-G03, cMT-G04, cMT-CTRL01
- Serie cMT3092X, cMT3102X, cMT3108XH, cMT3152X, cMT3162X, cMT3072XH, cMT3072XH2, cMT3072XHT
- Serie cMT-FHDX-220, cMT-FHDX-820, cMT-SVRX-820, cMT-SVRX-822
Quindi hai l’imbarazzo dela scelta, le serie iP ed iE sono piu economiche le serie cMT sono più performanti.
-
AutorePost