Sergio Bertana
Risposte nei forum create
-
AutorePost
-
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.
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.
-
AutorePost