Sergio Bertana
Risposte nei forum create
-
AutorePost
-
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_command
La 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.
Marzo 27, 2023 alle 11:31 am in risposta a: Gestione screensaver con oggetti in Common Window #71284Sergio Bertana
Amministratore del forumAvendo definito degli oggetti degli oggetti nella Common Window questi vengono visualizzati su ogni pagina, quindi la funzione automatica di screen saver non può essere utilizzata. La funzione esegue un cambio pagina in visualizzazione ma essendoci oggetti nella Common Window questi vengono comunque visualizzati. Ora che alternative hai:
- Rimuovi gli oggetti dalla Common Window e li vai ad inserire nelle pagine dove ti occorre visualizzarli, ma questa soluzione certo comporta una modifica pesante del progetto.
- Puoi crearti una macro ad esecuzione periodica che gestisce un conteggio del tempo trascorso in cui nessuno tocca lo schermo, il bit 0 della variabile LW-9041 se attivo indica che l’utente stà toccando lo schermo. Dopo il tempo desiderato puoi attivare una pagina in pop-up grande come la pagina base, in modo da ricoprire completamente la pagina base ed anche la Common Window.
Sergio Bertana
Amministratore del forumPer eseguire l’upload del programma da un pannello MT6100i dovresti utilizzare il programma EasyBuilder8000, connettendoti in USB con il pannello.
Molto più agevole inserire un PenDrive (Max 8Gb) nel pannello a pannello acceso, apparirà una finestra di po-up da cui è possibile scegliere di effettuare l’upload del programma. Verrà richiesta una password quella di default è 111111.
Terminato l’upload ti troverai sul PenDrive il file progetto che potrai importare direttamente in EasyBuilderPro. Naturalmente potrai eseguirne l’importazione solo se il file non è protetto da password o se sai la password.
Sergio Bertana
Amministratore del forumE’ possibile realizzare una macro che con GetData acquisisce le variabili dai due PLC ed esegue la condizione appoggiando il risultato su di un bit LB del pannello che verrà utilizzato per l’abilitazione dell’oggetto.
Se pannello è un modello cMT è possibile utilizzare le if condition per generare il bit di abilitazione (Screenshot).
Sergio Bertana
Amministratore del forumAggiungendo all’App cMTViewer (Sia su PC che su tablet/smartphone) i pannelli cMT si vede una schermata ridotta in monitor mode della grafica del pannello.
Cliccando sull’immagine del pannello che si vuole gestire questa viene aperta a dimensioni schermo e può essere controllata. Non è possibile avere aperte più istanze in contemporanea.
L’App cMTViewer è stata pensata proprio per poter controllare più pannelli cMT da un unico punto, tutti i pannelli connessi sono iconizzati in piccole dimensioni, selezionando il pannello desiderato si apre a pieno schermo, così si opera su di esso, poi con un pinch lo si richiude ad icona e si apre un’altro pannello e così via…
-
AutorePost