Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumGrazie alle possibilità di visualizzazione offerte da WebVisu integrato in CODESYS, ho aggiunto al progetto precedente una semplice pagina di visualizzazione di uno strumento a lancetta che indica il valore di peso acquisito dalla porta seriale.
Come si vede dallo screenshot, ho aggiunto un pannello di visualizzazione al progetto e nel pannello ho inserito uno strumento di visualizzazione. La variabile Weight che prima era una variabile locale è stata spostata nelle variabili globali di progetto per poter collegare lo strumento di visualizzazione alla variabile.
Trasferendo il programma su di una CPU SlimLine ed andando in debug è possibile vedere il movimento della lancetta sullo strumento nel pannello di debug di CODESYS. Accedendo al modulo CPU con un browser web viene visualizzato lo strumento con il movimento live della lancetta. Ricordo che WebVisu per permettere il movimento live degli oggetti nel browser utilizza una applet Java (Download programma sorgente).
Sergio Bertana
Amministratore del forumCon la presentazione della nuova famiglia di moduli CPU SlimLine programmabili in ambiente CODESYS, grazie ad una libreria fornita con il prodotto, possiamo offrire la stessa facilità di programmazione offerta da LogicLab anche in questo ambiente di sviluppo.
Traggo spunto dal programma di esempio soprariportato per dimostrare come con semplici modifiche sia possibile modificare il codice per poterlo eseguire sul modulo CPU CODESYS. In questo topic troverete lo stesso programma funzionante in ambientye CODESYS.
Sergio Bertana
Amministratore del forumCome primo step ti consiglio di dare una occhiata a questo topic, non mi dici il tipo di stringa che lo strumento invia ciclicamente sulla porta seriale.
Posso immaginarmi un esempio di programma che acquisisce il valore di peso inviato da una bilancia, immagino una stringa del tipo “Peso:120.5 Kg”, ecco la stampa del programma ed il programma sorgente.
Come vedi dallo screenshot, inviando tramite un terminale seriale (Esempio il nostro programma Toolly) la stringa di peso il programma la cattura e trasferisce il valore di peso nella variabile.
Sergio Bertana
Amministratore del forumAggiungo la risposta alla domanda sulle variabili ritentive, come riportato in questo topic, le variabili RETAIN sono inizializzate al loro valore di INIT al caricamento del programma. Se vuoi che rimangano settate al loro valore al caricamento del programma devi mapparle sulla DB 100 ad indirizzi a partire da 2048.
Come vedi nel programma di esempio del post precedente ho mappato le variabili in quest’area, attenzione alle variabili a WORD devono essere mappate ad indirizzi divisibili per 2. Le variabili DWORD o REAL devono essere mappate ad indirizzi divisibili per 4.
Cancellazione memoria, proprio perché le variabili RETAIN allocate nella DB 100 non sono inizializzate al caricamento del programma, se utilizzate, conviene effettuarne l’azzeramento per evitare di averle valorizzate a valori indesiderati. Per eseguire la cancellazione, connettersi in Telnet al sistema e dopo il login arrestare l’esecuzione del programma utente PLCCommand -stop, eseguire la cancellazione della memoria PLCCommand -mc e poi rimandare in esecuzione il programma PLCCommand -go, (Screenshot).
Sergio Bertana
Amministratore del forumNel programma che hai scritto non vi è nessuna subroutine, nella normativa IEC non è possibile realizzare subroutines all’interno di un programma. Le funzioni o le FB devono essere definite come tali e solo dopo averle definite possono essere richiamate da programma.
Nel tuo programma se F01 è alto esegui un salto condizionato JMPC alla etichetta LblA dove incrementi T01 e poi con RET esci dal programma. Per eseguire una subroutine (Function in IEC 61131) devi definirla (Esempio AddValue) e poi eseguirla da IL. Allego la stampa del programma ed il codice sorgente.
LD F01
JMPCN Lbl (* Se F01 non attivo salto a label *)LD T01 (* Carico 1o operando funzione (Value) *)
AddValue 1 (* Eseguo funzione passando 2o operando (Increment) *)
ST T01 (* Memorizzo valore di ritorno da funzione *)Lbl:
LD T01
LT 1000
ST F02Sergio Bertana
Amministratore del forumIl problema credo sia nel modo in cui il PLC tratta le variabili impostate dall’HMI, non conosco il Micrologix, però in generale quando converti un numero in una stringa (Il modem necessita di una stringa) se non fissi il numero di cifre da stampare indicando che devono essere necessariamente precedute da “0”, sono convertite in ascii solo le cifre indicative e non gli “0” che le precedono.
Perché non usi l’oggetto introduzione Ascii sul terminale e gestisci l’intero numero come una stringa da 16 o più caratteri, potrai passare la stringa così definita direttamente al modem.
Ad esempio nei PLC della nostra serie SlimLine l’FB di gestione modem accetta il numero già come stringa Ascii (Topic). In
questo topicviene trattato l’invio di un SMS da pagina web, come vedi l’impostazione del numero di telefono è realizzata impostando una stringa Ascii.Sergio Bertana
Amministratore del forumHo realizzato un semplice progetto di Marcia/Arresto con un pannello di comando in WebVisu (Screenshot), il progetto può essere eseguito in simulazione direttamente sul PC.
Per eseguire il progetto in simulazione sul PC attivare il modo simulazione (Screenshot), eseguire login sul simulatore (Alt F8) e poi mandare in run il programma (F5). Come si vede dallo screenshot in funzionamento con il simulatore ha l’accesso alla interfaccia WebVisu solo dall’ambiente di sviluppo CODESYS, mentre se caricato sul sistema target permette di essere gestito da browser (Download progetto).
Sergio Bertana
Amministratore del forumLa funzionalità WebVisu è disponibile anche sulle versioni 2.3 di CODESYS, vi è solo una nota da tenere presente, dalle versioni di Java rilasciate da Oracle da gennaio 2014 per motivi di sicurezza, è possibile eseguire solo applets certificate. CODESYS gestisce le applets certificate dalla versione 2.3.9.43, quindi consiglio di utilizzare per i nuovi progetti una versione di CODESYS uguale o successiva a questa. Sul sito CODESYS alla data attuale è disponibile la versione 2.3.9.44.
Il nostro target ELSIST SlimLine Mps052 è predisposto per gerstire WebVisu, quindi per poter realizzare un progetto devi selezionare il nostro target (Topic).
Abbiamo aggiunto nella zona download il Manuale programmazione IEC61131-3 (Link). In questo manuale si trovano i riferimenti alla installazione dell’ambiente di sviluppo CODESYS ed i riferimenti alle funzioni e blocchi funzioni che forniamo con la nostra libreria.
Giugno 12, 2014 alle 10:39 am in risposta a: Informazioni sulla gestione delle ricette tramite terminale #38269Sergio Bertana
Amministratore del forumAggiungo un esempio di gestione ricetta che gestisce due uscite lampeggianti su di un modulo CPU della nostra serie SlimLine. L’esempio si compone di un programma sul modulo CPU dello SlimLine e due progetti terminale Weintek.
Uno dei progetti utilizza la tecnica delle ricette gestite con il registro indice, mentre nell’altro viene utilizzato l’oggetto RECIPE. Allego nota applicativa ed i programmi sorgenti.
Giugno 12, 2014 alle 8:29 am in risposta a: Informazioni sulla gestione delle ricette tramite terminale #38268Sergio Bertana
Amministratore del forumNel nuovo ambiente di sviluppo EasyBuilder Pro è stato aggiunto l’oggetto Recipe che permette di gestire le ricette in modo molto più agevole, inoltre ogni ricetta si appoggia ad un file di database ed è possibile in tal modo gestire ricette molto grandi (Fino a 10000 records).
Per illustrare il funzionamento dell’oggetto Recipe Weintek fornisce un progetto dimostrativo Recipe Transferring (Screenshot). Insieme al progetto viene fornita una spiegazione su come è stato realizzato (Download manuale) ed il progetto.
Attenzione! La visualizzazione del contenuto ricetta (Oggetto Visualizza ricetta) non funziona correttamente in simulazione su PC. Quindi se si vuole testare il programma occorre disporre di un terminale reale.
Giugno 10, 2014 alle 12:45 pm in risposta a: Informazioni sulla gestione delle ricette tramite terminale #38267Sergio Bertana
Amministratore del forumCon il programma EasyBuilder la gestione delle ricette era effettuata utilizzando il registro indice. Sono gestiti 16 registri indice che permettono di creare un offset sull’indirizzamento delle variabili, in questo modo è possibile creare pagine grafiche con tutte le variabili di ricetta e modificando il valore del registro indice (ad esempio con dei tasti Up/Down) è possibile scorrere all’interno di tutto il ricettario.
Aiutandosi con delle macro è possibile anche effettuare delle ricerche all’interno del ricettario per trovare la ricetta desiderata. Ecco un progetto di esempio (Screenshot) realizzato da Weintek che illustra questa tecnica (Nota applicativa, Download source code).
Sergio Bertana
Amministratore del forumE’ stato aperto un nuovo topic sull’argomento con i riferimenti ai nuovi modelli ed ai nuovi ambienti di lavoro EasyBuilder ed EasyBuilder Pro (Vai al topic).
Sergio Bertana
Amministratore del forumSi il poter eseguire sia una task in PLC che programmi scritti in C per Linux è uno degli obbiettivi. Purtroppo siamo rimasti un pò fermi sullo sviluppo del PLC perché abbiamo avuto problemi sulle librerie Real time.
Per poter eseguire tasks PLC in ambiente Linux è necessario rendere il sistema operativo Real time e questo vuol dire fare un grosso lavoro di riscrittura dei drivers di gestione delle periferiche.
Nel frattempo abbiamo sviluppato la versione compatibile CoDeSys del modulo CPU SlimLine che è basato su un sistema operativo Real time sviluppato da Beck.
Giugno 7, 2014 alle 7:44 am in risposta a: Connessione alimentazione sui dispositivi Ubiquiti #38263Sergio Bertana
Amministratore del forumL’adattatore POE 802.3af fornisce in uscita una tensione di 16Vdc @ 0.8A quindi a meno che la tua telecamera non funzioni anche con tensione minima di 16 Vdc questo adattatore non và bene. Puoi eventualmente utilizzare un Active POE injector da 24Vdc. Non sono un esperto di POE ma tratto da Wikipedia riporto quanto segue:
L’alimentatore compatibile 802.3af applica inizialmente una tensione compresa tra 2,7V e 10,1V e misura la resistenza da 25K che dovrebbe trovarsi in uscita. Se la resistenza di riferimento non viene trovata fornisce un’alimentazione di 24V (considera l’utilizzatore non compatibile 802.3af).
Quindi se il tuo switch POE è compatibile con la specifica 802.3af dovrebbe già automaticamente alimentare la telecamera a 24Vdc senza inserire nessun adattore tra i due.
Sergio Bertana
Amministratore del forumCon l’attuale versione dello SlimLine non è possibile gestire l’estrazione e l’inserimento della SD Card a sistema acceso, il limite è imposto dal connettore della SD Card che non ha il pin di Card detect.
Stiamo valutando un nuovo connettore che ha anche il pin di Card detect (E’ il connettore che utilizziamo sulla versione per CoDeSys), quindi è possibile che in un prossimo futuro sia implementata anche la possibilità di estrarre ed inserire la SD Card a sistema acceso.
-
AutorePost