Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumIl lettore RFID R3 ha uscita Wiegand quindi viene acquisito con counters appoggiati ad ingressi digitali, il ns modulo CPU compact può gestire fino a 4 counters quindi può acquisire 2 lettori (Vedi WiegandDcd). Quindi trattandosi di ingressi digitali a 12Vdc la distanza può arrivare a 100mt, ma attenzione che i segnali non siano disturbati dall’accoppiamento con altri cavi di potenza (crosstalk).
Ora occorre considerare la velocità di acquisizione dei segnali, come hai visto dalla documentazione del FB WiegandDcd, occorre acquisire i counters ogni 1mS, sul modulo CPU questo non crea problemi, sui moduli di espansione si deve fare i conti con i tempi del bus (ca 400uS per acquisire un counter) è evidente che l’acquisirne 2 saturerebbe il tempo a disposizione. Quindi per acquisire più contatori consiglio di utilizzare più moduli CPU interconnessi vie Ethernet.
Una soluzione alternativa, se non ti occorre la tastiera, è utilizzare un lettore seriale MW-D7x, utilizzando una connessione RS485 in multidrop puoi collegare più lettori al modulo CPU. (Vedi RFiDMWD7xTAGRd). Anche se non c’è un limite sul numero di lettori collegabili, per avere tempi di reazione accettabili su lettura TAG e gestione beeper consiglio un massimo di 2/3 lettori.
Ma abbiamo clienti che hanno realizzato applicazioni con più lettori (Esempio 10) connessi ad un modulo CPU, dove per mantenere un’ottima velocità di reazione si sono utilizzati 4 convertitori Ethernet/Seriale ognuno dei quali gestisce 2 lettori, e 2 lettori connessi al modulo CPU.
Sergio Bertana
Amministratore del forumDalla versione 5.22.x.xx di LogicLab è stata introdotta la possibilità di definire la cartella del repository delle librerie.
Questa soluzione permette di semplificare la gestione delle librerie, ora viene rilasciata una raccolta di librerie (Codice Pck055xxxx) che contiene tutte le librerie in questo modo basta inserire l’oggetto desiderato nel progetto che LogicLab provvederà autonomamente a cercarlo nella cartella delle librerie senza dover più andarlo ad includere manualmente nel progetto, per la gestione delle librerie rimando a questo articolo.
Sergio Bertana
Amministratore del forumNaN acronimo di Not a Number, è un simbolo di avvertimento indicante che il risultato di un’operazione (numerica) è stata ottenuto eseguendola su operandi non validi (specialmente in calcoli in virgola mobile). Ma esiste anche la definizione INF per indicare un valore infinito.
Il FB SysGetAnInp ritorna NaN in caso di problemi sulla acquisizione del valore analogico.
Proprio per risolvere questi problemi di interpretazione dei numeri è stata aggiunta la funzione VarVCheck.
Sergio Bertana
Amministratore del forumAi pannelli può essere connesso un HUB USB e connetter più devices.
Nel tuo caso il problema è che il lettore è visto dal pannello come emulatore tastiera, quindi è probabile che vada in conflitto con la tastiera. Puoi agire sul bit:
LB-9064 enable USB barcode device (disable keyboard) (when ON)
Per disattivare il lettore di bar code ed utilizzare la tastiera, ma devi vedere come fare coesistere i due dispositivi.
Sergio Bertana
Amministratore del forumPuoi allegare le macro in testo e non come immagini così si possono verificare più facilmente…
Sergio Bertana
Amministratore del forumVerifica le impostazioni di sicurezza del client OPC-UA (Screenshot).
Maggio 3, 2023 alle 10:08 am in risposta a: Installazione di più versioni di LogicLab su stesso PC #71701Sergio 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.
-
AutorePost