Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumI prodotti Damocles non permettono lo scambio di I/O modulo to modulo.
Per realizzare quello che necessiti puoi dare una occhiata alla applicazione DataExchange, in pratica utilizzando i nostri prodotti programmabili SlimLine abbiamo realizzato un programma che trasmette gli ingressi digitali di un modulo verso l’altro che attiverà la relativa uscita e viceversa. I due moduli sono configurabili tramite browser, uno deve essere configurato come server e l’altro come client.
Il sistema è componibile in base al numero di I/O, se bastano 4 segnali in scambio si possono utilizzare due moduli CPU compatti come questo, a cui è possibile aggiungere moduli di estensione per aumentare il numero di I/O scambiati.
Se hai esperienzi di programmazione puoi anche modificare il programma adattandolo alle tue esigenze aggiungendo logiche sugli I/O, temporizzazioni, invio di eMail, invio di messaggi Telegram ed altro.
Sergio Bertana
Amministratore del forumPuoi usare il JS object o se non sono molte le combinazioni, puoi usare un Multi-State Switch realizzando fino a 256 immagini con le varie combinazioni.
Sergio Bertana
Amministratore del forumDisinstalla il programma e dopo la disinstallazione cancella dal disco la cartella driver.
Poi scarica ed installa l’ultima versione dal ns sito.
Sergio Bertana
Amministratore del forumSi purtroppo è così, non si possono neanche importare oggetti o parti di pagina.
Sergio Bertana
Amministratore del forumI due registri a cui ti riferisci sono:
- LW-11458 (32bit): HMI total space for history data
- LW-11460 (32bit): HMI current free space for history data
Questi registri sono presenti solo sui terminali serie cMT e quindi anche sul tuo modello serie cMT X.
Considera che lo spazio di memoria per lo storico sui cMT è di 800Mb, ed i registri ne ritornano il valore espresso in Kb. Quindi il valore di spazio totale dovrebbe avere valore 800000 che deve essere visualizzato in formato 32bit unsigned.
Sergio Bertana
Amministratore del forumPer la gestione dei grafici a barra si deve utilizzare l’oggetto Bar Graph, per le impostazioni, come si vede dallo screenshot:
- General: In questa sezione si definisce la variabile PLC a cui l’oggetto si riferisce ed al cui variare del valore si sposta la barra sul display in visualizzazione.
- Outline: In questa sezione si definisce il tipo di visualizzazione della barra, orrizzontate o verticale scegliendo anche il tipo di scorrimento.
- Range: Si definiscono i valori limite della barra, eventuali limiti di allarme con relativi colori.
Sergio Bertana
Amministratore del forumHai problemi di inizializzazione perchè stai operando sull’area di backup (Area in DB100 da 2048 a 4095). Siccome l’area è in backup il comportamento dell’init è particolare, in pratica se il valore di init è diverso da 16#00 la variabile viene inizializzata.
Se il valore di init è 16#00 la variabile non viene inizializzata e rimane con il valore che aveva allo spegnimento del sistema.
In questa verifica poi mi sono accorto di un problema che sembra avere LogicLab, quando si inizializza una stringa con “$00” in realtà anzichè inserire il valore 16#00 che coincide con il codice tappo viene inserito il valore “0” codice hex 16#30.
Quindi per rispondere alla tua domanda o sposti le variabili in area non backup, oppure le inizializzi da programma sulla task di Boot o testando la variabile SysFirstLoop.
VarC:=16#00; VarX:='zc$00';
Sergio Bertana
Amministratore del forumDevi leggere bene le informazioni del FB ModbusMaster, il FB è realizzato per poter operare con modello a cascata, quindi se mantieni Enable semmpre attivo verrà eseguita una sola interrogazione. Se vedi gli esempi si collega sempre il Done negato all’Enable in questo modo terminata un comando ne viene eseguito un’altro e così via. Il tempo tra i comandi lo puoi definire con il parametro Delay.
Perchè adesso esegue una lettura ogni circa 28 secondi, se tu vedi hai impostato un tempo di LifeTime nella FB SysTCPClient di 20 secondi, alla connessione il FB modbus con Enable attivo esegue un solo comando, non essendoci più comunicazione dopo 20 secondi il TCP client chiude la connessione e dopo 5 secondi ne ritenta un’altra che và a buon fine e cosi parte un’altra interrogazione Modbus.
Sergio Bertana
Amministratore del forumSe è possibile puoi inviare il progetto sia del PLC che del pannello alla ns eMail di supporto così possiamo fare una verifica.
In generale mi sembrano tempi non congrui, sicuramente non aiuta il PLC che è lento nel trasferimento pacchetti, ma comunque mi sembrano tempi elevati.
Un altra cosa da verificare è il tempo ciclo del PLC se elevato (direi dai 20ms) può compromettere di molto i tempi in quanto questi PLC non hanno una comunicazione indipendente ma la comunicazione è secondaria al processo.
Sergio Bertana
Amministratore del forumLe cause del Fault possono essere molte, intanto ti consiglio di verificare con il comando Syslog da connessione Telnet che errori hai, la descrizione degli errori la trovi qui.
Hai verificato se il tuo dispositivo 192.168.255.1 è raggiungibile dallo SlimLine, se il dispositivo risponde al ping puoi testarlo con il comando di Ping sempre da connessione Telnet.
Ma guardando il tuo programma vedo il motivo dell’errore, se leggi bene la documentazione del FB SysTCPClient, vedi questo:
- LocalAdd (@STRING) Indirizzo IP della interfaccia di rete da cui effettuare la connessione. Default ‘0.0.0.0’: l’interfaccia è scelta automaticamente in base all’IP a cui connettersi.
- LocalPort UINT) Numero porta TCP da cui parte la connessione (0 scelta automaticamente).
Tu invece hai definito sia uno che l’altro dei parametri.
Definendo LocalAdd con l’indirizzo IP dello SlimLine stai obbligando il FB ad utilizzare la connessione che ha questo indirizzo e fino a qui tutto funziona tanto la connessione con il tuo dispositivi parte proprio dalla porta ethernet dello SlimLine.
Ma definendo LocalPort a 502 stai obbligando il FB ad aprire la connessione verso la porta 502 del tuo dispositivo dalla sua porta 502 che in realtà è già utilizzata dallo SlimLine (é quella dove ci si conette in Modbus). Quindi trovandola già aperta il FB non può utilizzarla.
Sergio Bertana
Amministratore del forumMeglio del ladder è il linguaggio FBD che essendo comunque grafico è ancora puù intuitivo del ladder ed è estremamente più veloce nel realizzare il programma.
Intanto di direi di dare una occhiata al programma di esempio FBD_SDM120Waterfal che trivi in questo articolo.
L’esempio utilizza una porta seriale come porta di comunicazione, nel tuo caso dovrai semplicemente sostituire il FB SysSerialPort con il FB SysTCPClient, e naturalmente modificare il tipo di protocollo Modbus in MDB_TCP.
Credo sia superfluo ricordare che il dispositivoi SlimLine abbia l’interfaccia di rete compatibile con il dispositivo con il quale devi connetterti, eventualmente per la verifica puoi utilizzare il comando di ping, ammesso che il dispositivo risponda al ping.
Sergio Bertana
Amministratore del forumE’ stranissimo avere tempi di risposta in lettura così lenti, questo indipendentemente dal tipo di variabili che il pannello legge.
Non è che esegui nel progetto accesso a variabili in errore, in tal caso si possono sommare i tempi di timeout sulla risposta dal protocollo e quindi avere tempi molto lunghi. Verifica la comunicazione con EasyDiagnoser.
Eventualmente puoi provare a creare un array di variabili BOOL e puntare a queste.
Sergio Bertana
Amministratore del forumAbbiamo sviluppato l’utility Symbols converter, in questo articolo si trovano le informazioni sull’utilizzo.
Nell’articolo sono anche riportate le informazioni sulla nuova versione del programma HMIStartUp rivisto con le ultime versioni di LogicLab e di EasyBuilderPro.
Sergio Bertana
Amministratore del forumNon hai indicato il tipo di PLC ed il protocollo di comunicazione che stai utilizzando.
In generale per velocizzare la comunicazione conviene avere le variabili di allarme sul PLC in un array consecutivo, piuttosto che variabili allocate ad indirizzi diversi.
In questo modo il pannello può raggruppare la lettura con una singola richiesta anzichè in molte richieste una per ogni allarme (Questo dipende dal protocollo utilizzato).
Se hai già le variabili di allarme in un array e la velocità non migliora occorre analizzare la comunicazione con il programma EasyDiagnoser per vedere che non ci siano errori di comunicazione che la rallentano.
Sergio Bertana
Amministratore del forumSi su ricezione eccezione si esce con il Done attivo senza Fault e senza Ok.
-
AutorePost