Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Maggio 3, 2023 alle 10:08 am in risposta a: Installazione di più versioni di LogicLab su stesso PC #71701
Sergio Bertana
Amministratore del forumVeniamo alla prima domanda, è possibile installare versioni diverse di LogicLab solo se sono versioni major (Quindi 3, 4, 5) indicando in fase di installazione una cartella diversa per ogni versione (Screenshot).
Axel che sviluppa LogicLab opera in modo da mantenere sempre la compatibilità delle nuove versioni con i programmi sviluppati con versioni precedenti, quindi non dovrebbe essere necessario dover installare più versioni.
Il problema che lamenti tu è il passaggio dalla nostra architettura XTarget ad XUnified, che come spiegato in questa nota può essere facilmente gestito con le opportune librerie di supporto. Quindi è possibile con le nuove versioni di LogicLab compilare anche i programmi sviluppati con le precedenti versioni. Naturalmente quando apri un programma vecchio con la nuova versione di LogicLab non devi eseguire upgrade delle librerie.
Una ulteriore complicazioni è stata introdotta con il rilascio della versione 5.22.x.xx, dove gli sviluppatori Axel hanno aggiunto controlli sulla sintassi del programma quindi possono insorgere alcune warnings in compilazione che non inficiano la funzionalità del programma compilato, leggi articolo.
Sergio Bertana
Amministratore del forumI pannelli Cloud HMI Serie cMT-3000X Advanced supportano un oggetto Web Browser HTML che supporta l’HTML5 ma non ha il supporto alle applet java.
Abbiamo applicazioni in cui questi pannelli sono utilizzati per visualizzare pagine da Web server in HTML5, ma detto questo è sempre consigliato un test per verificare performance e funzionalità in quanto il browser su HMI è custom e non ha gli aggiornamenti di un classico browser PC.
Sergio Bertana
Amministratore del forumCerto che è possibile, come si vede dallo screenshot precedente la condizione del bit LB 10 dipende dalla condizione:
LB 10 = (LB 0 = ON) AND (LB 1 = OFF)
In pratica la condizione NOT si applica inserendo nella condizione il controllo sulla condizione OFF dell’operando.
Sergio Bertana
Amministratore del forumProbabilmente usi l’App cMTViewer tramite accesso remoto da EasyAccess per la visualizzazione del pannello. in tal caso ti ricordo che ogni connessione ha il suo utente e per la gestione corretta devi utilizzare le variabili PLW (Vedi topic).
Se invece usi VNC anche da accesso remoto condividi la visualizzazione dell’utente locale e quindi operi con le variabili LW.
Sergio Bertana
Amministratore del forumSe usi il pannello la soluzione è utilizzare le query SQL (Vedi articolo) in questo modo hai un completo accesso a tutte le funzioni di ricerca. Ti allego due esempi forniti da Weintek che possono esserti utili per lo sviluppo della applicazione (Download).
- Recipe_Import_Export_File_Browser_Demo, che permette l’importazione/esportazione database ricette da/verso file CSV.
- Macro_Recipe, che opera con query sulle ricette.
Se come PLC usi i ns istemi SlimLine puoi operare direttamente su file CSV, il programma TagFinder permette proprio di cercare in un file CSV un campo, mentre con il programma ST_DataLoggerOnCSVFile puoi vedere come scrivere dati su file CSV.
Sergio Bertana
Amministratore del forumL’errore X4097 Recursive POU è un errore di ricorsione (es funzione che chiama sé stessa), il compilatore dovrebbe darti qualche indicazione in più. Eventualmente invia al supporto il programma che diamo una occhiata.
La gestione delle librerie è in corso di modifica nelle ultime versioni di LogicLab, la voce “Importa oggetti” si attiva solo selezionando una cartella nel tree di progetto (Screenshot).
Sergio Bertana
Amministratore del forumCon il programma mi è più facile capire dove stanno i problemi. Hai realizzato un FB che poi hai utilizzato con la tecnica in cascata, ma hai commesso un errore molto grave, la tecnica prevede che il Done di ogni FB rimanga attivo fino alla disabilitazione dell’Enable, ma nel tuo caso non è così. Il codice
Done:=ACMdb.Done; //Execution done
Essendo l’istanza Mdb di tipo ModbusMaster_v2 la stessa per tutti i FB di gestione moduli, connessa al FB ACMdb di tipo ACModbus_v2, in questo modo il Done del FB Mdb si propaga in tutti i FB andando a resettare fuori sequenza il relativo Done.
Ho realizzato un esempio con una nuova FB di gestione modulo, che vista la necesità di solo 2 comandi modbus ho preferito utilizzare direttamente la chiamata al FB Mdb senza utilizzare la ACModbus_v2. Ecco il listato.
FUNCTION_BLOCK IOModule VAR CaseNr : USINT; (* Program case *) AOutputs : ARRAY[0..8] OF WORD; (* Digital outputs value *) HW : ARRAY[0..1] OF WORD; END_VAR VAR_INPUT Enable : BOOL; (* Enable *) Node : USINT; (* Modbus node *) Setpoint : UINT; MMdb : @ModbusMaster_v2; (* Modbus master *) END_VAR VAR_OUTPUT Done : BOOL; (* Execution done *) Ao00 : UINT; Ao01 : UINT; Ao02 : UINT; Ao03 : UINT; Ao04 : UINT; Ao05 : UINT; Ao06 : UINT; Ao07 : UINT; Ao08 : UINT; END_VAR // ***************************************************************************** // FUNCTION BLOCK "IOModule" // ***************************************************************************** // Gestione modulo I/O. // ----------------------------------------------------------------------------- // ------------------------------------------------------------------------- // GESTIONE INIZIALIZZAZIONE // ------------------------------------------------------------------------- // Gestione disabilitazione. IF NOT(Enable) THEN CaseNr:=0; Done:=FALSE; RETURN; END_IF; IF (Done) THEN RETURN; END_IF; // ------------------------------------------------------------------------- // GESTIONE SEQUENZE PROGRAMMA // ------------------------------------------------------------------------- // Gestione sequenze programma. CASE (CaseNr) OF // --------------------------------------------------------------------- // Eseguo impostazione valori. 0: HW[0]:=1000; HW[1]:=Setpoint; @MMdb.Enable:=TRUE; //Modbus enable @MMdb.Node:=Node; //Node number @MMdb.FCode:=16#10; //Modbus function code @MMdb.Address:=1; //Modbus register address @MMdb.Points:=SIZEOF(HW)/2; //Modbus register points @MMdb.Buffer:=ADR(HW); //Memory buffer address IF NOT(@MMdb.Done) THEN RETURN; END_IF; @MMdb.Enable:=FALSE; //Modbus enable CaseNr:=CaseNr+1; //Program case // --------------------------------------------------------------------- // Eseguo lettura valori. 1: @MMdb.Enable:=TRUE; //Modbus enable @MMdb.Node:=Node; //Node number @MMdb.FCode:=16#03; //Modbus function code @MMdb.Address:=1; //Modbus register address @MMdb.Points:=SIZEOF(AOutputs)/2; //Modbus register points @MMdb.Buffer:=ADR(AOutputs); //Memory buffer address IF NOT(@MMdb.Done) THEN RETURN; END_IF; @MMdb.Enable:=FALSE; //Modbus enable Done:=TRUE; //Execution done END_CASE; // [End of file]Allego il programma IoModbus, con la versione originale del tuo programma e la versione da me modificata (Download).
Aprile 24, 2023 alle 9:15 am in risposta a: Editazione dispositivo tag indirizzi assoluti Siemens S7-1200/1500 #71658Sergio Bertana
Amministratore del forumDal menù Project -> Address (Screenshot) puoi esportare le TAGs in un file CSV oppure Excel. Poi con un comune TextEditor se file CSV oppure con Excel puoi editare il file e con un cerca/sostituisci modificare il nome del PLC.
Terminata la sostuitizione potrai reimportare le TAGs nel progetto.
Sergio Bertana
Amministratore del forumProbabilmente hai un modello iP che non supporta le impostazioni per la sincronizzazione oraria. Quindi basterà sincronizzare l’orario del pannello con quello del PC volendo durante il download, questo si fa direttamente dal pannello quando si scarica il progetto c’è un flag apposta.
In simulazione l’orario viene preso dal PC, quindi basterà che il PC abbia un indirizzo IP della stessa classe del server OPC-UA, ho visto che avete messo un 192.168.1.100 come server OPC-UA, nelle impostazioni di rete del PC ci vuole un 192.168.1.xxx che non sia .100 finale, se ci sono altri indirizzi IP provate a cancellarli lasciando solo questa classe di rete.
Proverei con un progetto vuoto, inserendo un tag alla volta, non so se hai delle sicurezze sugli utenti, io consiglio sempre almeno per la prima volta come test, di entrare in modalità anonima senza sicurezze, partiamo almeno così a comunicare.
Possiamo provare anche lato server OPC-UA a fare un progetto di test, dove ci condividono solo qualche tag, un bool e un INT per esempio.
Farei un paio di prove di questo genere, è un driver totalmente simbolico quindi sicuramente non possiamo sbagliare a puntare alle tag.
Sergio Bertana
Amministratore del forumLa versione che hai tu è l’ultima, non era stata aggiornata la versione nel nostro repository, ho provveduto ad aggiornarla.
Sergio Bertana
Amministratore del forumPer utilizzare l’RTC occorre utilizzando la funzione Data transfer, traferire i valori di data/ora dalle word del pannello alle word del PLC.
LW-9010 Tempo locale (secondi, BCD) LW-9011 Tempo locale (minuti, BCD) LW-9012 Tempo locale (ora, BCD) LW-9013 Tempo locale (giorno, BCD) LW-9014 Tempo locale (mese, BCD) LW-9015 Tempo locale (anno, BCD) LW-9016 Tempo locale (settimana, BCD) LW-9017 Tempo locale (secondi, BIN) LW-9018 Tempo locale (minuti, BIN) LW-9019 Tempo locale (ora, BIN) LW-9020 Tempo locale (giorno, BIN) LW-9021 Tempo locale (mese, BIN) LW-9022 Tempo locale (anno, BIN) LW-9023 Tempo locale (settimana, BIN)
Sergio Bertana
Amministratore del forumIl simulatore SimuLab presente in LogicLab permette di testare il funzionamento dei programmi ma non delle comunicazioni.
Quindi non è possibile mettere in comunicazione il simulatore del pannello HMI di EasyBuilder con il programma PLC.
Per testare il funzionamento della comunicazione ti serve necessariamente un dispositivo SlimLine a cui puoi connettere il simulatore di EasyBuilder utilizzando la funzione Simulazione On-Line.
Sergio Bertana
Amministratore del forumEcco le risposte alle domande poste.
- Il convertitore non è isolato dalla alimentazione ma è isolato dalla porta Ethernet.
- Se si utilizza l’alimentatore fornito con il convertitore si è isolati da terra. Altrimenti si può scegliere se isolare o meno in funzione dei dispositivi connessi alla porta seriale.
- Il conduttore di riferimento sulle linee RS422/485 normalmente non è necessario, è possibile comunque connetterlo su lunghe distanze.
- Sulle linee RS422/485 non sono incluse le resistenze di terminazione, è possibile utilizzare resistenze da 120Ohm sulle estremità delle connessioni.
- Sulle linee RS422/485 non serve predisporre la polarizzazione.
- I transceivers utilizzati sulle linee RS422/485 supportano fino a 255 nodi.
Per quanto riguarda la connessione TCP certo ne basta 1 che può eseguire il polling di tutti i dispositivi RTU connessi semplicemente indicando il numero di nodo nella richiesta.
Sergio Bertana
Amministratore del forumLa visualizzazione dei file PDF è una funzionalità utilizzata per fornire informazioni all’operatore direttamente dal pannello, con l’oggetto PDF Reader (Screenshot) è possibile aprire un file PDF (Deve essere salvato su PenDrive USB) e visualizzarne il contenuto.
Solitamente su un tasto di help oppure su errore gestito dal PLC è viene aperta una finestra in pop-up con la visualizzazione dell’estratto del manuale utente. Questa funzione però è disponibile solo sui pannelli serie cMT, non è disponibile sui pannelli serie iP ed iE.
Come workaround puoi creare pagine con immagini jpeg del contenuto del file PDF da visualizzare, naturalmente non potrai scrollare sulla pagina visualizzata.
Sergio Bertana
Amministratore del forumHo analizzato il progetto che mi hai inviato, ecco alcune considerazioni:
- Il progetto è realizzato con la V6.06.01.503, puoi aggiornare EasyBuilderPro almeno alla V6.07.02.466 presente sul nostro sito?
- Sul pannello impostare data e ora correttamente, devono essere aggiornati con il server OPC-UA (se è già cosi andate al test successivo).
- Collegare il PC direttamente al server OPC-UA, usare il simulatore online (così escludiamo il pannello e testiamo solo il progetto), almeno così funziona o stesso problema?
- Se anche in simulazione capita lo stesso problema, è un qualcosa sul progetto, se in simulazione funziona bene probabilmente è qualcosa sul pannello.
- Controllare che nel progetto quando importate le tag, non ci siano tag non supportate, fare riferimento al documento presente nei post precedenti.
-
AutorePost