Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumNon vi sono particolari problemi sul numero di variabili da acquisire, se vuoi suddividerle puoi realizzare nello SlimLine più file htm con all’interno le variabili da acquisire. Il programma in php dovrà leggere i vari files è gestire le variabili di ognuno, esempio:
$Content1=file_get_contents(“http://xxx.xxx.xxx.xxx/Storage/Values1.htm”);
$Content2=file_get_contents(“http://xxx.xxx.xxx.xxx/Storage/Values2.htm”);Ti consiglio di dare una occhiata anche a questo topic dove trovi una classe php per gestire il protocollo modbus master. In questo modo potrai da server interrogare i vari sistemi SlimLine via modbus TCP/IP, in questo modo puoi leggere e scrivere variabili senza alcun limite.
Agosto 5, 2015 alle 6:01 am in risposta a: Connessione sensore 4-20 mA a 2 fili con modulo mixed I/O #39025Sergio Bertana
Amministratore del forumLa connessione è la stessa ma la sostanziale differenza è che AGnd della scheda analogica non è in comune con il GND della alimentazione del modulo CPU. Inoltre se usi una modulo da 10 canali, o più moduli, i segnali AGnd di ogni banco da 5 ingressi sono tra loro isolati.
Vantaggio principale è una minore sensibilità ai disturbi dovuta alla separazione galvanica tra le due masse, inoltre puoi utilizzare riferimenti di massa diversi tra i vari banchi da 5 ingressi.
Sergio Bertana
Amministratore del forumLa funzione SysVarsnprintf è esattamente la stessa su entrambe le due versioni del firmware che stai utilizzando. La funzione si appoggia sulla printf che è una funzione di libreria del compilatore GNU CC e quindi potrebbe esserci una qualche differenza in quella libreria.
Il mio consiglio è di utilizzare una variabile STRING e non un ARRAY di BYTE come variabile di appoggio della stringa in uscita dalla SysVarsnprintf.
IF (SysVarsnprintf(ADR(SOut), 19+1, ‘<CODIC:%u’, UDINT_TYPE, ADR(MData[i].codic))) == EOF) THEN Flt:=Flt OR 1; END_IF
IF (SysVarsnprintf(ADR(SOut)+LEN(SOut), 18+1, ‘;LOTTO:%u’, UDINT_TYPE, ADR(MData[i].lotto)) == EOF) THEN Flt:=Flt OR 2; END_IF;In questo modo un errore nella funzione può essere controllato dal valore che assume Flt al termine e soratutto evita che la somma dei caratteri stampati sia errata. Se errore nella conversione del valore la funzione SysVarsnprintf ritorna EOF. EOF corrisponde al valore -1, questo potrebbe se sommato ad una variabile intera spostare completamente l’indice dell’array di appoggio mandando in eccezione il PLC.
Agosto 3, 2015 alle 3:59 pm in risposta a: Connessione sensore 4-20 mA a 2 fili con modulo mixed I/O #39021Sergio Bertana
Amministratore del forumSi certo lo schema di connessione è corretto, i sensori 4-20 mA a 2 fili si alimentano con la tensione di caduta sul circuito di misura. In pratica misurando la corrente con una resistenza di shunt da 62 Ω si avrà una caduta massima ai capi della resistenza di 1,24 Volt a 20 mA. E questa sarà la massima tensione che entrerà nel modulo Mixed I/O, per questo devi rimuovere il ponticello LK55 predisponendo l’ingresso a tensioni inferiori a 1,25 Volt.
Certo dovrai verificare che il tuo sensore accetti il 24 Vdc di alimentazione. Comunque anche nel caso di rottura dello shunt e/o errori di connessione ti ricordo che l’ingresso analogico del modulo mixed I/O è protetto dalle sovratensioni ed un eventuale 24 Vdc applicato all’ingresso non crea problemi.
Ricordo che il modulo mixed I/O, a differenza del Modulo espansione I/O Analogico, non è galvanicamente isolato, quindi l’ingresso di riferimento analogico AGnd è in comune con il GND di alimentazione del modulo CPU.
Sergio Bertana
Amministratore del forumPrendendo spunto da altri programmi presenti nel forum ho realizzato un semplice blocco funzione RFiDInterface che esegue l’interfaccia con il lettore RFiD. Come si vede dalla stampa del programma il FB è realizzato in linguaggio ST e viene gestito da un programma ladder.
Ho gestito nel FB la completa interfaccia con il lettore e due uscite impulsive (Un loop di programma) indicano se carta presente oppure no. Nel caso di carta presente viene ritornato su di una variabile UDINT CardCode, il codice UID letto dalla carta. Naturalmente dovrai gestire un array di UINT con i vari codici UID abilitati, su attivazione dell’uscita BOOL CardOk, puoi eseguire un loop di ricerca nell’array per verificare se il codice letto è presente (Download programma).
Nel forum puoi trovare questo topic e questo topic dove viene trattata la gestione del Mifare Reader/Writer SL025B.
Sergio Bertana
Amministratore del forumNon abbiamo sviluppato nessuna libreria per la gestione di databases da linguaggio CODESYS, ma credo che la soluzione migliore sia afffidare la gestione del database ad un connettore su PC. Puoi realizzare un programma su PC che gestisce la connessione al database e da CODESYS passare i dati a questo programma.
Abbiamo sviluppato alcune applicazioni di questo tipo con interfaccia verso script PHP che girano sia su servers in rete locale che nel cloud abbinandole a SlimLine della serie LogicLab. In alcuni casi lo SlimLine passa le richieste allo script PHP con un GET od un POST in HTTP, in altri è lo script PHP che interroga lo SlimLine con richieste Modbus. Ricevute le richieste dallo SlimLine lo script in PHP accede con le sue librerie al database (Nel nostro caso sempre MySQL) (Topic).
Sergio Bertana
Amministratore del forumIl messaggio PLC no response stà ad indicare la mancata connessione con lo SlimLine, il messaggio compare nel caso anche solo uno degli oggetti della pagina del terminale non riceva risposta dallo SlimLine. In caso di errore l’oggetto non viene visualizzato ecco perchè non vedi nulla sul terminale. Anche se ovvie mi sorgono alcune domande.
Nella configurazione del PLC hai definito l’indirizzo IP e la porta (Quella di default è la 502) correttamente ?
Il nodo Modbus è coretto (Lo SlimLine ha di default nodo 1) ?
L’indirizzo della variabile BOOL nell’oggetto grafico è corretta (Da 40016 a 44096) ?Sergio Bertana
Amministratore del forumNon ho ben capito, tu stai simulando il funzionamento del terminale sul PC attraverso il simulatore ma ti stai collegando ad uno SlimLine reale immagino (Il simulatore del PLC sul PC non supporta la connessione Modbus).
Che tipo di connessione hai tra il PC e lo SlimLine, sei connesso in rete Ethernet (Anche usando l’USB con RNDIS) oppure sei connesso in seriale RS232/485 ?
Hai provato ad utilizzare il progetto sorgente postato nei primi post di questo topic, ti funziona ?
Sergio Bertana
Amministratore del forumSi tu trovi le definizioni %MWD, %MW, %MX e %MW_Bit perchè hai selezionato il protocollo Elsist (Screenshot). Ti consiglio di selezionare il protocollo Modbus IDA che è quello che ho utilizzato in tutti gli esempi (Screenshot). Il protocollo Elsist è stato aggiunto da poco nell’elenco dei protocolli disponibili e purtroppo ci sono alcuni problemi di funzionamento.
Tutti i nostri prodotti sono compatibili allo standard Modbus quindi puoi tranquillamente utilizzarli con qualsiasi dispositivo che lo gestisca, compreso programmi SCADA (Topic) e/o altri programmi di supervisione (Topic).
Sergio Bertana
Amministratore del forumLa risposta la trovi nell’esempio riportato nel post precedente. Ti consiglio di scaricare l’esempio, collegando lo SlimLine in ethernet con il PC potrai testare con il simulatore del pannello direttamente dal PC.
Ma per rispondere alla tua domanda per l’accesso ai bits dello SlimLine da pannello si utilizza il codice 0x, e per l’indirizzo si somma 40000 all’indirizzo del bit. Nel tuo caso per accedere al bit 100.17 devi utilizzare l’indirizzo 40017 (Dai una occhiata a questo topic).
Ecco lo screenshot di un pulsante Toggle (Preso dal programma di esempio). Il pulsante agisce sul bit 100.32 dello SlimLine e lo stato del bit viene sia letto che scritto in quanto il pulsante ne riporta graficamente lo stato. Se utilizzi un bit allocato nella zona tampone dello SlimLine (Da 2048 in avanti, esempio 0x 42048) lo stato del bit è mantenuto anche a sistema spento.
Sergio Bertana
Amministratore del forumNei moduli della gamma LogicLab dove il sistema operativo è interamente sviluppato da noi garantiamo sempre la disattivazione delle uscite su arresti sia volontari che per errori di esecuzione del programma. Nei moduli CODESYS il sistema operativo è proprietario e non possiamo intervenire sul suo comportamento.
Però l’ambiente CODESYS ha molte possibilità di configurazione, nel Task Configuration è possibile definire un programma da eseguire su condizione di stop e/o su condizioni di failure (Esempio errore WatchDog). Ecco lo screenshot di un programma che illustra come utilizzare questa tecnica (Download programma).
Sergio Bertana
Amministratore del forumLa condizione di stop non resetta l’esecuzione del programma ma la congela nello stato in cui si trova. Da uno stop è quindi possibile ripartire con un comando di run continuando l’esecuzone delle logiche come se nulla fosse successo. E’ per questo motivo che anche le uscite logiche rimangono congelate nello stato in cui si trovano.
Concordo con te che questo comportamento in un processo industriale potrebbe creare seri problemi. Se la tua necessità è su di un comando fermare l’esecuzione del programma PLC azzerandone lo stato per poi ripartire dall’inizio, devi usare il comando di Reset e non di Stop.
Sergio Bertana
Amministratore del forumCerto nell’oggeto ListBox devi indicare come sorgente dati item Indirizzo item, e con le due words di controllo puoi impostare il numero di items presenti e forzare l’aggiornamento del ListBox con i nuovi items definiti.
Per rendere meglio l’idea ti ho preparato un semplice progetto di esempio (Download progetto).
Sergio Bertana
Amministratore del forumRicordo che tutte le funzioni ed i FB presenti in libreria sono comunque realizzabili dall’utente tramite LogicLab, in questo topic c’è una spiegazione di come è fatto il blocco funzione eTON.
Nel forum ci sono moltissimi programmi tutti corredati di codice sorgente scaricabile, alcuni sono complessi e possono funzionare solo disponendo del PLC fisico (Esempio uno SlimLine compact), ma molti di essi possono essere testati direttamente sul PC utilizzando il simulatore (Topic).
Sergio Bertana
Amministratore del forumInstallando il tool di programmazione LogicLab (Scaricabile gratuitamente dal nostro sito) vengono installate oltre al programma una serie di librerie e molti programmi di esempio. Le librerie e i programmi di esempio si trovano nella cartella di installazione del programma Esempio C:Programmi(x86)ElsistLogicLab… (Screenshot). Per l’elenco delle funzioni e FB disponibili nelle varie librerie ti consiglio di scaricare il Manuale programmazione IEC61131-3 che comunque è incluso nella installazione di LogicLab.
Sul manuale per ogni funzione ed FB è indicato come si utilizza e in che libreria si trova (Screenshot). Come vedi il FB eTON si trova nella libreria ePLCStdLib a partire dalla versione B000 (In alcune installazioni di LogicLab è indicato solo il nome della libreria e non la versione). Ora per per utilizzare il FB lo devi importare nel tuo progetto (Leggiti il capitolo Importazione oggetti da libreria sul manuale).
Per ogni funzione e/o FB sul manuale viene anche riportato uno o più esempi di utilizzo, per ogni esempio è indicato in che programma dimostrativo l’esempio si trova. Analogamente a quanto detto per l’importazione oggetti da libreria è possibile importare il programma di esempio. Nel programma dimostrativo si troverà un elenco di programmi e selezionando quello con il nome indicato nel manuale sarà possibile importarlo (Screenshot).
-
AutorePost