Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumHo modificato la tua macro in questo modo.
macro_command main() short Lenght=0 char Command[16]={0}, Response[16]={0} bool State=false FILL(Command[0], 0x20, 16) SetData(Command[0], "Local HMI", LW, 100, 16) //Copy command to LW 1000 FILL(Response[0], 0x20, 16) SetData(Response[0], "Local HMI", LW, 200, 16) //Copy response to LW 1000 GetData(State, "Local HMI", LB, 0, 1) if State then StringCopy("LASER ON", Command[0]) else StringCopy("LASER OFF", Command[0]) end if Lenght=StringLength(Command[0]) SetData(Command[0], "Local HMI", LW, 100, Lenght) //Copy command to LW 1000 OUTPORT(Command[0], "Free Protocol", Lenght) INPORT2(Response[0], "Free Protocol", Lenght, 1000) if (Lenght <> 0) then SetData(Response[0], "Local HMI", LW, 200, Lenght) //Copy response to LW 1000 end if end macro_command
E l’ho testata con la nostra utility Toolly in modo Terminal->TCP Server (Vedi articolo) e funziona regolarmente. Ma visto che dici che non hai nessun riscontro neanche nelle word di visualizzazione comando mi viene il dubbio che tu non abbia settato l’esecuzione periodica della macro. Ecco due brevi spiegazioni sul funzionamento.
- Ho impostato il Free protocol con connessione ethernet verso l’IP del PC dove è eseguito Toolly.
- Ho settato l’esecuzione periodica ad 1 secondo della macro, quindi ogni secondo si entra in macro e si invia il messaggio sulla connessione ethernet.
- La funzione INPORT2 attende i dati in risposta e li bufferizza, se non si ricevono più dati dopo 1 secondo esce con i dati in Response.
Sergio Bertana
Amministratore del forumTIME è una costante di tempo conforme a IEC 61131-3 a 32 bit con risoluzione in millisecondi. LogicLab supporta anche LTIME una costante di tempo a 64 bit che estende la risoluzione in nanosecondi. Se fai riferimento alla pagina di definizione tipo variabili vedrai
TIME_TYPE 70 TIME 32 Time expressed in milliseconds, range da -24d_20h_31m_23s_648ms a 24d_20h_31m_23s_647ms
In pratica il tipo TIME permette di definire il tempo in giorni, ore, minuti, secondi, millisecondi. LogicLab ne esegue la visualizzazione mantenendone la suddivisione. Qindi per impostare il tempo nel timer dovrai indicare il valore TIME#–d–h–m–s–ms oppure il modo short più comodo T#–d–h–m–s–ms. Ecco alcuni esempi:
TIME := T#14ms;
TIME := T#10s12ms;
TIME := T#12h34m15s
TIME := T#1d1h34m5s;Nota: I valori vanno sempre indicati nell’ordine giorno, ora, minuti, secondi, millisecondi, è possibile omettere i campi non utili alla definizione.
Concludendo i nuovi timers possono gestire temporizzazioni fino a oltre 24 giorni con risuluzione al ms.
Sergio Bertana
Amministratore del forumNon mi torna il tipo di uscita indicato…
Se è un Profibus DP non abbiamo nessun prodotto per questo tipo di interfaccia.
Se invece si tratta di una seriale RS232 possiamo proporre qualche soluzione. Se indichi il modello del lettore magari con un datasheet possiamo capire meglio di cosa si tratta.
Sergio Bertana
Amministratore del forumA questo punto l’unico modo per capire il problema è collegarsi da remoto con Teamviewer per verificare le impostazioni sia del PLC che dell’HMI.
Contatta via mail il ns supporto tecnico inviando i tuoi dati per un contatto.
Eventualmente nella mail metti anche le foto dei due connettori (Lato PLC e lato HMI) per una verifica… i tecnici sono come San Tommaso ci vogliono mettere il naso…
Sergio Bertana
Amministratore del forumHai verificato il cavo con quanto riportato dalla guida connessioni PLC nel documento Schneider_UniTelway.pdf.
Se il cavo è corretto e la messa a terra connessa, puoi realizzare un progetto vuoto con una una sola tag a WORD e verificare che il collegamento funzioni. Non vorrei che hai un progetto complesso e qualche TAG nel progetto non punta correttamente l’area del PLC.
Marzo 25, 2024 alle 8:11 am in risposta a: Visualizzazione alterna di due pagine ed accesso da cMTViewer #76508Sergio Bertana
Amministratore del forumVediamo come realizzare nel modo corretto le sequenze.
La visualizzazione delle pagine sia sul monitor che da cMTViewer inizia sempre dalla startup window (Default la nr 10), quindi la sequenza parte sempre da questa pagina.
Ora immaginiamo che le due pagine da visualizzare in alternanza siano la 10 e la 11, come detto nella pagina 10 l’oggetto Action Trigger ti porterà nella 11 e nella 11 un’altro oggetto Action Trigger ti porterà alla 10.
Anche chi si collegherà con cMTViewer avrà lo stesso comportamento ma se nelle due pagine (10 e 11) metti un pulsante che ti porti ad esempio alla pagina 20 chi si connette con cMTViewer lo potrà spostarsi sulla pagina 20 e da qui navigare su tutte le pagine, mentre sul monitor continueranno ad alternarsi le pagine 10 e 11.
Sergio Bertana
Amministratore del forumVedo che hai dichiarato la variabile di tipo int, non so che tipo di variabile hai definito nella impostazione di X sul pannello. Le variabili LW sul pannello sono variabili a 16 bit quindi:
- Se dichiari la variabile come 16-bit Signed nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo short.
- Se dichiari la variabile come 32-bit Signed (Utilizza 2 LW consecutive) nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo int.
- Se dichiari la variabile come 32-bit Float (Utilizza 2 LW consecutive) nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo float.
Ecco la macro da me testata.
macro_command main() short V16Bit=0 int V32Bit=0 float VFloat=0 GetData(V16Bit, "Local HMI", LW, 0, 1) GetData(V32Bit, "Local HMI", LW, 10, 1) GetData(VFloat, "Local HMI", LW, 20, 1) TRACE("Value 16-bit: %d", V16Bit) TRACE("Value 32-bit: %d", V32Bit) TRACE("Value Float: %f", VFloat) end macro_command
Marzo 13, 2024 alle 4:52 pm in risposta a: Visualizzazione alterna di due pagine ed accesso da cMTViewer #76435Sergio Bertana
Amministratore del forumPer il cambio automatico della pagina in visualizzazione sul monitor hai due possibilità.
- Programmi un PLC Control, di tipo Change window che definendo una variabile PLC ti permette di comandare la pagina in visualizzazione sul monitor. Se vuoi gestire la pagine direttamente dal terminale allora definirai nell’oggetto una variabile LW interna al pannello e con una macro eseguita a tempo esegui lo scambio.
- Nelle due (O più) pagine che routano a monitor, inserisci un oggetto Action Trigger (Per-Page), con impostato ad apertura pagina un delay xx secondi che comanda il cambio pagina.
Il cMTViewer si apre sempre puntando la Startup window (Che di default è la pagina 10) ma la puoi impostare nei System Parameters.
Sergio Bertana
Amministratore del forumSe il dispositivo come credo non ha un protocollo noto e quindi supportato dal pannello, l’unica soluzione è gestirlo con il Free Protocol.
Da macro le istruzioni INPORT ed OUTPORT è possibile ricevere ed inviare caratteri sul protocollo configurato come come client TCP. Se cerchi nel forum INPORT troverai alcuni topics che trattano l’argomento.
Se sull’impianto hai un nostro sistema programmabile SlimLine puoi far gestire a lui il puntatore, nella knowledge base trovi molti esempi di gestione di protocolli di comunicazione. In questo articolo l’esempio ST_SerialDataReceive , in questo articolo l’esempio ST_WindSonicDriver sono esempi di driver di comunicazione. Entrambi utilizzano una porta seriale ma sostituendo il FB SysSerialPort con il FB SysTCPClient o con il FB SysTCPServer è possibile comunicare in TCP/IP.
Sergio Bertana
Amministratore del forumDipende dalla versione del pannello e dal sistema operativo.
Nelle ultime versioni sono state imposte restrizioni sull’accesso in scrittura su area HMI per motivi di sicurezza e durata.
La memoria interna di tipo FLASH ha un numero di scritture definito quindi per evitarne il deterioramento l’accesso in scrittura è stato limitato. Quindi se si fà un eccessivo accesso in scrittura è preferibile utilizzare memoria esterna.
Sergio Bertana
Amministratore del forumHo provato a scrivere nella cartella datalog del terminale e non ho avuto problemi di accesso. Hai provato a scrivere un semplice file di testo… Non vorrei che il file .db sia bloccato dal programma terminale in esecuzione.
Altra domanda, stai cercando di scrivere il file su memoria HMI o su USB connessa al pannello?
Perchè per accedere alla memoria USB, devi verificare se abilitata la scrittura via FTP nel system setting del pannello.
Marzo 8, 2024 alle 9:44 am in risposta a: Problema connessione cMT2078x con PLC Schneider M241 #76390Sergio Bertana
Amministratore del forumDalla versione 2.2 del Machine Expert è stato modificato il protocollo di comunicazione, quindi occorre aggiornare il driver nel programma EasyBuilderPro e poi con il download del programma caricare il driver nel pannello.
Allego per il download il nuovo driver, copiare la cartella driver nella omonima cartella nel percorso di installazione di EasyBuilderPro sovrarscrivendo i files presenti.
Per le TAGs non presenti nel progetto PLC l’importante che non vengano usate nel pannello.
Sergio Bertana
Amministratore del forumA partire da inizio anno 2024 Weintek ha modificato la policy di vendita delle licenze CODESYS. Ora non è più possibile acquistarla separatamente ma deve essere ordinata congiuntamente con l’acquisto del pannello.
Quindi non esiste più un codice ed un prezzo di licenza e siccome non è più possibile esporre il prezzo del pannello con licenza, l’unico modo è di inviare una richiesta di offerta da questa pagina (Usando il pulsante RICHIEDI QUOTAZIONE) dopo avere scelto come opzione Weintek indicando in offerta il codice del pannello che si desidera.
Nelle pagine dei vari modelli di pannelli nella tabella delle caretteristiche del prodotto alla voce Programmazione per ogni pannello è indicato se supporta la programmazione in CODESYS.
Sergio Bertana
Amministratore del forumSicuramente il FX1 è supportato, ma non capisco perchè vuoi utilizzare Modbus?
Weintek ha il driver apposito per il Mitsubishi FX1, guarda nella guida connessioni PLC.
Sergio Bertana
Amministratore del forumPer la definizione dei vari tipi di variabili ti rimando alla pagina delle FAQ dove alla sezione EasyBuilder trovi una tabella esplicativa.
Per la conversione dei numeri da positivo a negativo e viceversa è possibile eseguire una moltiplicazione con un numero negativo. Ecco un esempio (Screenshot) con due variabili float sulla LW 0 inputo un valore che visualizzo con il segno invertito su LW 2 (Essendo float si utilizzano 2 LW per ogni valore). Ecco la relativa macro di conversione.
macro_command main() float MyVar=0 GetData(MyVar, "Local HMI", LW, 0, 1) MyVar=MyVar*-1.0 SetData(MyVar, "Local HMI", LW, 2, 1) end macro_command
Se invece vuoi rendere positivi solo i numeri negativi puoi inserire nella macro.
if (MyVar < 0.0) then MyVar=MyVar*-1.0 end if
-
AutorePost