Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumSi certo puoi usare il cMT-G01 per quello che devi fare.
Però visto che tutti i pannelli hanno supportano la connessione con PLC OMRON EtherNet/IP (NJ/NX1P) ed il protocollo Modbus TCP, potresti tranquillamente utilizzare (Risparmiando sul costo) anche un cMT-SVR o qualsiasi pannello HMI.
Realizzi un programma con un Data Transfer ciclico che legge i dati dal PLC e li appoggia in variabili HMI che poi saranno accessibili dallo SCADA via Modbus TCP.
Sergio Bertana
Amministratore del forumSe il Logo accetta più connessioni TCP/IP contemporanee basta collegare uno switch e mettere i due pannelli in rete con il PLC, ognuno di essi dialogherà con il PLC.
Se il Logo acccetta una sola connessione TCP/IP puoi configurare un pannello per dialogare con il PLC in modo Locale, l’altro pannello lo configuri per dialogare con il PLC in Remoto definendo come indirizzo IP quello del pannello connesso al PLC. Il secondo pannello raggiungerà il PLC passando attraverso il primo.
Sergio Bertana
Amministratore del forumMa hai provato il progetto che trovi qualche post prima del tuo, fà esattamente quello che cerchi di fare tu.
Dove è l’errore… quello che hai scritto mi sembra tutto corretto ma i dubbi sono:
Che tipo di protocollo hai impostato, perchè se usi lo ZeroAddressing hai un errore sull’offset.
Hai mica modificato l’endianness di lettura, le variabili REAL usano 2 words e quindi è importante avere l’endianness corretto. Si imposta nella definizione del protocollo. Ti consiglio di provare prima con una variabile UINT che essendo a 16 bits non ha problemi di endianness.
Nella definizione della variabile sul pannello hai definito che è una variabile float ed hai definito il suo range di valori.
Sergio Bertana
Amministratore del forumLa libreria 1Wire DEVE essere compilata definendo la flag Case sensivity nel progetto (Screenshot).
Sergio Bertana
Amministratore del forumNel capitolo System Registers del manuale di EasyBuildderPro, trovi l’elenco di tutte le variabili di sistema con il loro significato. Eccone un estratto.
LB-9200 PLC 1 status (SN0, COM 1), set on to retry connection (Node 1) LB-9201 PLC 1 status (SN1, COM 1), set on to retry connection (Node 2) ... LB-9455 PLC 1 status (SN255, COM 1), set on to retry connection (Node 255) LB-9500 PLC 2 status (SN0, COM 2), set on to retry connection (Node 1) LB-9501 PLC 2 status (SN1, COM 2), set on to retry connection (Node 2) ... LB-9755 PLC 2 status (SN255, COM 2), set on to retry connection (Node 255)
Come vedi c’è un bit per ogni nodo modbus che si attiva su errore comunicazione.
Il Pop up “PLC not response” può essere cancellato o inibito per singolo driver (non per singolo nodo), ti rimando a questo topic per le informazioni.
Sergio Bertana
Amministratore del forumL’errore è non leggere la documentazione del pannello, perchè se vedi il pin out del pannello sulla porta COM1 non usa i pin standard 2-3-5 del connettore 9 poli. Ma usa i pin 5-6-9 quindi non puoi utilizzare il connettore standard.
Nella pagina del terminale trovi uno schema di costruzione del cavo, devi seguire le connessioni del modello MT6050i.
Consiglio, visto che hai i cavi già connessi al PC, anzichè trasferire il progetto sul terminale reale usa il simulatore On-Line di EasyBuilderPro che ti permette di testare tutto il funzionamento come con il pannello reale. La simulazione dura circa 10 minuti poi devi riavviare il simulatore.
Sergio Bertana
Amministratore del forum1) Non si possono dichiarare RETAIN le variabili di I/O, se vuoi mantenere la situazione di una variabili allo spegnimento del sistema dichiare una variabile globale BOOL di tipo RETAIN ed appoggi lo stato sulla variabile e poi copi la variabile sulla relativa variabile di uscita.
E’ evidente che non puoi e sarebbe inutile mantenere lo stato delle variabili di ingresso, quelle riportano lo stato reale dell’ingresso quindi lo stato del dispositivo che lo comanda.
2) Si usano i FB quando hai più uscite ma sopratutto quando hai variabili di memoria definite all’interno. I FB mantengono la memoria allocata e quindi lo stato delle variabili, mentre nelle function tutte le variabili interne sono distrutte all’uscita della function.
3) Si può fare, riportiamo esempi di collegamento con Raspberry utilizando Node-RED, tra l’altro l’MPS055 è basato su Raspberry e permette in un unico prodotto di avere la programmazione LogicLab e di utilizare Node-RED (Vedi esempio).
4) Si il modello MPS054 ha 4 I/O, e sono mappati come %IX255.0, %IX255.1, %QX255.0, %QX255.1.
5) SysFirstLoop non è una funzione, è una variabile globale (ce ne sono molte) che è attiva solo al primo loop di esecuzione programma. Ma come hai visto c’è la task Boot sotto alla quale puoi collegare tutti i program che vuoi e questi sono eseguiti una sola volta alla prima esecuzione.
Viene utilizzato SysFirstLoop per comodità nei programmi dove si deve agire al primo loop di esecuzione sulle variabili locali, che non sarebbero visibili da altri program e quindi non potrebbero essere gestite da un program eseguito in task di Boot.
Sergio Bertana
Amministratore del forumPer fare chiarezza la dimensione di memoria sui sistemi MPS054 dipende dal sistema, le versioni Lite dispongono di:
131 kB programma utente
12 kB RAM disponibili per dati utente di cui 6 kB sono ritentiviE’ possibile acquistare una opzione per estendere le dimensioni di memoria come nelle versioni Full che dispongono di:
262 kB programma utente
20 kB RAM disponibili per dati utente di cui 6 kB sono ritentiviCollegandoti ad un sistema Full con LogicLab ecco il report di memoria:
Used code size: 5E50h (23 KByte) Free code space: 3A1A0h (232 KByte) Total code space:3FFF0h (255 KByte) Used data space: 695h (1 KByte) Free data space: 396Fh (14 KByte) Total data space: 4004h (16 KByte) Used retain data space: 0h (0 KByte) Free retain data space: 3E8h (0 KByte) Total retain data space: 3E8h (0 KByte)
Come vedi il total code space è 3FFF0h pari a 262128 bytes, total data space è 4004h pari a 16388 bytes a cui devi sommare i 4096 bytes della DB100 per un totale di 20484 bytes.
Per quanto riguarda l’area retain abbiamo 3E8h pari a 1000 bytes di area retain a cui occorre sommare i 2048 bytes dell’area retain della DB100 (Da DB100.2048 a DB100.4096). Siccome l’area retain viene salvata 2 volte in FRAM ecco il risultato dei 6 kB.
Ma a parte questi discorsi teorici, il tuo problema è che probabilmente ti sei connesso ad un sistema Lite ed hai acquisito dal sistema valori di memoria che sono la metà di quelli del sistema Full ed il tuo programma necessita di più memoria dati. O come dici tu hai eseguito il comando Refresh current target che assegna i valori del sistema Lite.
Soluzione al problema è connetterti ad un sistema Full (O ad un sistema Lite con opzione installata) ed eseguire dal menù On-line il comando Force target image upload. In questo modo carichi dal sistema il file con estensione imgx che contiene i dati corretti.
Sergio Bertana
Amministratore del forumIl comportamento è molto strano, non abbiamo mai avuto segnalazioni di problemi simili, l’unica possibilità è di poter verificare direttamente noi il problema.
Per farlo dovresti creare un utente per EasyAccess (Che terminata la prova cancellerai) e comunicarci le credenziali per poter accedere al terminale con una descrizione esatta del problema in modo da poterlo replicare.
Ma in questi giorni stiamo lavorando in smart working, ed è difficile organizzare la prova, dovremo aspettare la riapertura.
Sergio Bertana
Amministratore del forumIo consiglio sempre ai neofiti di acquistare un modello di sistema SlimLine con interfaccia ethernet perchè rende molto più semplice la connessione con LogicLab.
Il modello MPS050 non ha connessione ethernet, quindi per connettere LogicLab puoi utilizzare la connessione seriale RS232 ti serve l’apposito cavo ed adattatore, oppure una connessione via USB utilizzando il driver RNDIS. In questo topic trovi informazioni sulla connessione.
Purtroppo la connessione seriale prevede un solo canale di comunicazione quindi potrai programmare da LogicLab ed eseguire il debug, ma non potrai accedere al server web integrato, al file system, ed alla connessione Telnet che ti permette di attivare la console di spionaggio. Tutte queste funzioni sono funzioni avanzate che probabilmente vorrai utilizzare quando diventerai più esperto.
Sergio Bertana
Amministratore del forumNel client VNC devi definire l’indirizzo IP assegnato al pannello da EsasyAccess e poi la porta classica del servizio VNC che è la 5900.
Ma visto che dici che non funziona, io proverei ad accedere al pannello via VNC da Android utilizzando il WiFi del telefono connettendoti ad una rete WiFi dove vi è anche il pannello (A cui avrai assegnato un IP statico). In questo modo ti assicuri che l’App che hai usato funzioni e sopratutto che il server VNC del pannello sia abilitato ed accessibile. Ti ricordo che il server VNC và abilitato sul pannello.
Per accedere al VNC del pannello da dispositivo Android verifica di aver installato oltre a VNC, EasyAccess, EasyAccessVPN e OVPN connector.
Sergio Bertana
Amministratore del forumDi questo argomento si è già parlato in questo topic, gli I/O logici sono automaticamente mappati nell’immagine di processo, il FB SysGetAnInp serve per l’acquisizione degli ingressi analogici.
Ecco lo screenshot del programma SimplyLD, un semplice programma ladder che realizza una gestione logica ed una acquisizione analogica.
Come vedi gli I/O logici li ho dichiarati nelle variabili globali, quindi sono visibili da tutti i programmi che possono referenziarli.
Nel programma ladder ho istanziato il FB SysGetAnInp per l’acquisizione analogica e poi ho creato un nuovo ramo ladder, che ha un contatto ed una uscita. Ho trascinato sul contatto l’istanza creata e poi ho cancellato sia il contatto che l’uscita.
Per definire le variabili in ingresso/uscita dal FB basta trascinare l’oggetto sul relativo piedino. Ti lascio il progetto per il download.
Sergio Bertana
Amministratore del forumRiguardo al Passthrough viene creata una rotta nel tuo PC che instrada i pacchetti verso il terminale tramite EasyAccess, e siccome l’ordine di instradamento definito dalla sequenza di Passthrough è prioritaria sulle altre, qualsiasi indirizzo tu definisca (Anche se appartiene alla rete del PC) viene instradato sul terminale via EasyAccess.
Quindi per risponderti posso dirti che anche se è meglio avere una rete diversa dal tuo PC il Passthrough funziona anche se il dispositivo è nella stessa rete.
Per conoscere il traffico utilizzato da EasyAccess per ogni terminale, devi abilitare la visualizzazione nelle impostazioni e così il traffico verrà visualizzato accanto ad ogni terminale (Screenshot).
Sergio Bertana
Amministratore del forumChe versione di EasyBuilderPro utilizzi…
Il problema che lamenti si verificava compilando il progetto con una vecchia versione di EasyBuilderPro, prova a scaricare l’ultima versione ed a ricompilare il progetto.
Sergio Bertana
Amministratore del forumL’esempio del post precedente al tuo fà già esattamente quello che hai chiesto.
Per poter visulizzare variabili sul pannello HMI devi dichiarare la variabili globale mappandola nella DB100 all’indirizzo che preferisci.
Ricorda che le variabili a 2 bytes INT, UINT, WORD devono sempre essere allocate ad indirizzi divisibili per 2 (Esempio DB100.2, DB100.8, DB100.100, ecc…).
Le variabili a 4 bytes DINT, UDINT, DWORD devono sempre essere allocate ad indirizzi divisibili per 4 (Esempio DB100.4, DB100.8, DB100.256, ecc…).
Sul terminale HMI devi indirizzare la variabile usando l’indirizzo di allocazione diviso per 2 sommato a 40000. Se ad esempio la variabile è allocata a DB100.256 sul terminale dovrai indicare indirizzo 40128.
Guarda questo topic dove trovi un esempio di progetto PLC e HMI.
-
AutorePost