Offline
Newbie
Karma: 0
Posts: 13
|
 |
« on: January 25, 2013, 12:40:07 pm » |
Ciao a tutti, ho sviluppato un software per la gestione dei programmi (tipo DCS) con i function block. Ho sviluppato già alcuni blocchi tipo AND , OR , SWITCH, MOVE, DIGITAL_IN, DIGITAL_OUT, CONV_LI,CONV_IB,CONV_LB, SetReset, ADD, SOTT, etc.
Prevedo di svuluppare altri blocchi come TIMER, CLOCK, DISPLAY, ma avrei bisogno di betatester per provarlo sul campo. Attualmente con i blocchi che vi ho elencato, il programma viene compilato da arduino (Il mio programma genera un sorgente in c che viene passato a arduinoIDE).
Ci sono un mucchio di altre cose da implementare. (ne ho la testa piena) Sarà possibile anche fare il debug ON_LINE. con la visualizzazione sui blocchi.
Avevo già postato alcune schermate nella sezione sviluppo altri software. Ciao
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 13
Posts: 2432
|
 |
« Reply #1 on: January 25, 2013, 01:42:27 pm » |
Interessante, però lo sai che nei sistemi chiamati DCS il fornitore del software dovrebbe fornire anche l' hardware comprese le shede di tutte le periferiche, se fai solo il software diventa un sistema Scada dove il software controlla l'hardware di altri produttori, quindi di terze parti. Mi resta difficile credere che arduino da solo possa gestire abbastanza velocemente tutti quei blocchi che hai citato e i molti altri che hai in mente, reggere tutto il software necessario, stai usando una macchina esterna che elabora e archivia il tutto? immagino che arduino sia solo occhi e braccia. Avevo già postato alcune schermate nella sezione sviluppo altri software. di quale sezione parli? ciao
|
|
|
|
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #2 on: January 25, 2013, 02:12:15 pm » |
Interessante, però lo sai che nei sistemi chiamati DCS il fornitore del software dovrebbe fornire anche l' hardware comprese le shede di tutte le periferiche, se fai solo il software diventa un sistema Scada dove il software controlla l'hardware di altri produttori, quindi di terze parti. Mi resta difficile credere che arduino da solo possa gestire abbastanza velocemente tutti quei blocchi che hai citato e i molti altri che hai in mente, reggere tutto il software necessario, stai usando una macchina esterna che elabora e archivia il tutto? immagino che arduino sia solo occhi e braccia. Avevo già postato alcune schermate nella sezione sviluppo altri software. di quale sezione parli? ciao Ho tradotto semplicemente i blocchi nel codice di arduino le AND sono semplici && le or || etc. ( Questi sono quelli + immediati. lo switch è un select case, chiaramente va gestito il tipo di variabile che piò essere byte, int o long. Il blocco che ha una uscita Long non può essere collegato ad un ingresso int a meno che non venga interposto un CONV_LI (dove va segnato quali due 2 interi vuoi). IL TRIG utilizza una memoria di appoggio etc. Però gestire logiche complesse guardando cosa è stato scritto risulta meno chiara che vedere dove sono collegati i fili. Vai a vedere in Other software. Ciao
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 13
Posts: 2432
|
 |
« Reply #3 on: January 25, 2013, 03:47:17 pm » |
Io non leggo quasi mai il forum internazionale, solo se una ricerca specifica mi ci indirizza allora lo leggo. Però non capisco il senso di questi 2 treadth, perchè li hai scritti? hai messo le foto di 2 schermate con alcuni quadretti and, or, ecc, hai detto ho fatto questo e quello però se non metti software, dimostrazioni, spiegazioni, che serve se non spieghi nessun concetto, come sono strutturati i controlli degli eventi, come leghi lettura eeprom con calcolo. quanti pin al massimo gestisce? Come gestisci i timer se per i potesi tutti i pin hanno 4 on e 4 off dal lunedi al venerdì? Come gestisci in memoria i valori maggiori e minori tra i diversi pin analogicie come li elabori? magari anche alcuni offset Se un pin è ad accensione o spegnimento ritardato? Se un pin è impulsivo es: On per 200ms (per comandare i relè passo passo o sistemi ad autoritenuta) Se il pin 10 va a 1 e voglio di conseguenza commutare 11=0, 12=1, 5=1, 7=1 per 10 minuti lo posso fare con quei blocchi? ecc ecc sono tantissime le combinazioni che un utente potrebbe chiedere Spiega cosa fa ... volevi condividere il progetto o volevi solo farci sapere che hai avuto un idea? avrei bisogno di betatester per provarlo sul campo Non lavoro più nell'automazione delle centrali di cogenerazione, se però domani faccio un termovalorizzatore magari lo proviamo  Ps mettilo un link la prossima volta ciao
|
|
|
|
« Last Edit: January 25, 2013, 04:07:44 pm by pablos »
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #4 on: January 26, 2013, 03:43:49 am » |
Io non leggo quasi mai il forum internazionale, solo se una ricerca specifica mi ci indirizza allora lo leggo. Però non capisco il senso di questi 2 treadth, perchè li hai scritti? hai messo le foto di 2 schermate con alcuni quadretti and, or, ecc, hai detto ho fatto questo e quello però se non metti software, dimostrazioni, spiegazioni, che serve se non spieghi nessun concetto, come sono strutturati i controlli degli eventi, come leghi lettura eeprom con calcolo. quanti pin al massimo gestisce? Come gestisci i timer se per i potesi tutti i pin hanno 4 on e 4 off dal lunedi al venerdì? Come gestisci in memoria i valori maggiori e minori tra i diversi pin analogicie come li elabori? magari anche alcuni offset Se un pin è ad accensione o spegnimento ritardato? Se un pin è impulsivo es: On per 200ms (per comandare i relè passo passo o sistemi ad autoritenuta) Se il pin 10 va a 1 e voglio di conseguenza commutare 11=0, 12=1, 5=1, 7=1 per 10 minuti lo posso fare con quei blocchi? ecc ecc sono tantissime le combinazioni che un utente potrebbe chiedere Spiega cosa fa ... volevi condividere il progetto o volevi solo farci sapere che hai avuto un idea? avrei bisogno di betatester per provarlo sul campo Non lavoro più nell'automazione delle centrali di cogenerazione, se però domani faccio un termovalorizzatore magari lo proviamo  Ps mettilo un link la prossima volta ciao quanti pin al massimo gestisce?Quando crei un nuovo progetto, selezioni la scheda (ho fatto 2 libreria al momento ) e imposti per ogni pin che tipo è : INPUT, OUTPUT, ANALOG, etc. Come gestisci i timer se per i potesi tutti i pin hanno 4 on e 4 off dal lunedi al venerdì?IL blocchetto non l'ho ancora fatto, ma si può fare, basta creare 4 blocchi (TIMER) di inizio ora , fine ora, con byte del giorno 1111100 (LU,ME,ME,etc.) che vanno in un OR poi in uscita Come gestisci in memoria i valori maggiori e minori tra i diversi pin analogicie come li elabori? magari anche alcuni offsetL'uscita analogica viene scalata in intero e appoggiata ad una variabile (con il nome del blocco) , poi la passo ad un blocco LIV che verifica se la variabile è maggiore di un altro pin Se un pin è ad accensione o spegnimento ritardato?metto un TON l'ho pensato così, memorizzo il millis() in un long, verifico che il millis-old_millis sia >= del tempo, dopodik alzo l'uscita Se un pin è impulsivo es: On per 200ms (per comandare i relè passo passo o sistemi ad autoritenuta) E' possibile aggiungere pagine (funzioni), e sempre secondo l'impostazione iniziale, agganciare la pagina al trigger. Se il pin 10 va a 1 e voglio di conseguenza commutare 11=0, 12=1, 5=1, 7=1 per 10 minuti lo posso fare con quei blocchi? Certo, ti metto l'immagine, al posto del move va messo il timer, al momento non l'o fatto Appena finisco una versione decente, la posto. L'idea l'ho avuta ma ho bisogno di prove. Spero di averti risposto Ciao
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #5 on: January 26, 2013, 04:15:44 am » |
Siccome sono ignorante in materia, potresti (a me ed a quelli come me che non conoscono questo sistema) spiegare come agisce il tuo software?
Tu hai un'interfaccia grafica in cui posizioni dei "blocchi" che rappresentano graficamente il compito da eseguire. Poi questa rappresentazione viene trasformata in codice arduinico?
Potresti fare un esempio con uno screenshot di un paio di blocchi ed il relativo codice finale?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #6 on: January 26, 2013, 10:29:26 am » |
Premetto che le cose migliori si fanno con gli analogici, allego piccolo programma che ho fatto in 15 secondi a blocchi. Anche se è semplicissimo nel solito tempo non riusciremmo a farlo scrivendolo. Poi quando un blocco funziona, non c'e' da provare.
Il codice creato è:
void setup() { pinMode(0, INPUT); pinMode(1, INPUT); pinMode(2, INPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(7, OUTPUT); pinMode(10, INPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); Serial.begin(9600); } void loop() { // Dichiaro le variabili locali static byte Accenso,Trig_acceso,Spegnimento,SetReset_Acceso; // Fine dichiarazione Accenso = digitalRead(2); // TRIG dichiarazione mem static boolean MEM_Trig_acceso; MEM_Trig_acceso =(Accenso == true && Trig_acceso == true); Trig_acceso =(Accenso == true && Trig_acceso == true); Spegnimento = digitalRead(10);
// SET RESET NON ANCORA IMPLEMENTATO
// DIGITAL OUT if (SetReset_Acceso = true) digitalWrite(true,3); else digitalWrite(false,3); }
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #7 on: January 26, 2013, 12:04:01 pm » |
Non hai però risposto alla mia domand :smiley-sweat:a: stai usando quindi un'interfaccia grafica, giusto? Aggiungo.... l'hai programmata tu, immagino. L'hai basata su qualche altro progetto oppure no? Che linguaggio hai usato? Su che SO gira?  Scusa se ti tempesto di domande ma son curioso 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #8 on: January 26, 2013, 12:13:26 pm » |
Non hai però risposto alla mia domand :smiley-sweat:a: stai usando quindi un'interfaccia grafica, giusto? Aggiungo.... l'hai programmata tu, immagino. L'hai basata su qualche altro progetto oppure no? Che linguaggio hai usato? Su che SO gira?  Scusa se ti tempesto di domande ma son curioso  Ho sviluppato il programma con VB6, (lo so, lo so). L'ho basata su alcuni software a blocchi che ho visto in ambito industriale. Penso che possa girare benissimo anche su linux (via WINE) visto che non ho usato e non voglio usare particolari librerie di windows.(La cosa complessa è stato lo sbroglio dei fili, anche perchè ho deciso di poter posizionare liberamente i blocchi). ps. Ho dimenticato di scriverti che visto che viene programmato a pagine, ho incluso la possibilità di creare altre pagine (che sono tradotte in funzioni) che vengono chiamate da blocchi tipo GOTO, cioè quando la sequenza dei blocchi arriva al GOTO, viene lanciata la pagine relativa. Le variabili che passano da una pagina ad un altre vengono inizialmente dichiarate globali. Ho inserito anche una modalità di pagina a testo libero, con in alto tutte le variabili del progetto , in maniera da poterle inserire senza difficoltà. Ciao
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 13
Posts: 2432
|
 |
« Reply #9 on: January 26, 2013, 06:45:13 pm » |
mha!!! mistero della fede!!!
|
|
|
|
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Fermo
Offline
Newbie
Karma: 0
Posts: 1
|
 |
« Reply #10 on: January 30, 2013, 04:48:11 am » |
Ciao a tutti, ho sviluppato un software per la gestione dei programmi (tipo DCS) con i function block. Ho sviluppato già alcuni blocchi tipo AND , OR , SWITCH, MOVE, DIGITAL_IN, DIGITAL_OUT, CONV_LI,CONV_IB,CONV_LB, SetReset, ADD, SOTT, etc.
Prevedo di svuluppare altri blocchi come TIMER, CLOCK, DISPLAY, ma avrei bisogno di betatester per provarlo sul campo. Attualmente con i blocchi che vi ho elencato, il programma viene compilato da arduino (Il mio programma genera un sorgente in c che viene passato a arduinoIDE).
Ci sono un mucchio di altre cose da implementare. (ne ho la testa piena) Sarà possibile anche fare il debug ON_LINE. con la visualizzazione sui blocchi.
Avevo già postato alcune schermate nella sezione sviluppo altri software. Ciao
ciao a tutti, sono nuovissimo. mi occupo di architetture fw per sistemi embedded e conosco piuttosto bene la programamzione di PLC tramite blocchi funzionali. Credo di poter dare una mano soprattutto lato fw. Penso di aver un quadro abbastanza chiaro su ciò che intendi fare. Sono molto interessato alla cosa e molto incuriosito. Ho visto anche le immagini che hai postato nel thread e devo farti i miei complimenti per l'ottimo lavoro - sono previste funzionelità per la simulazione?
- sono previste funzionelità per il monitoraggio?
ora senza dilungarmi troppo, avrei qualche idea: - ad esempio servirebbe conoscere le risorse disponibili in termini di IN (digitali /analogici) , OUT (digitali /analogici) , comunicazione etc.
quindi . Poiché non esistono schede standard, il sw dovrebbe permettere di conoscere l'hw con cui si va ad operare. questo permetterebbe di evitare un uso improprio dell'hw.
- inoltre in alcuni blocchi sarebbero utile alcune funzionalità tipo la ritenzione: permanenza dello stato
- oltre alle funzioni combinatorie, ho qualche idea su blocchi come calendario, timer settimanale, ritardi, interruttori etc...
- sarebbe interessante introdurre la possibilità di passare ad un blocco un ingresso negato, senza dover introdurre un apposito blocco funzionale : ad es per fare Y=A&(~B)
ciao
|
|
|
|
« Last Edit: January 31, 2013, 11:47:34 am by yborf »
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #11 on: April 16, 2013, 05:34:40 am » |
sono previste funzionelità per la simulazione? Si, è stata integrata in questo periodo di silenzio sono prevste funzinelità per il monitoraggio? Devo verificare per la comunicazione, forse può non servire se la simulazione è buona
ad esempio servirebbe conoscere le risorse disponibili in termini di IN (digitali /analogici) , OUT (digitali /analogici) , comunicazione etc. quindi . Poiché non esistono schede standard, il sw dovrebbe permettere di conoscere l'hw con cui si va ad operare. questo permetterebbe di evitare un uso improprio dell'hw. Ho creato delle librerie HW dove vengono settati gli I/O inoltre in alcuni blocchi sarebbero utile alcune funzionalità tipo la ritenzione: permanenza dello stato Giusto, al momento ho creato 2 funzioni FUNCTIME e GOTO, la prima rimanda ad un altra pagina il programma ogni TOT secondi, la seconda immediatamente, un pin su entrambi abilita lo svolgimento del blocco
oltre alle funzioni combinatorie, ho qualche idea su blocchi come calendario, timer settimanale, ritardi, interruttori etc... Vero, al momento ho creato il TON e il TOFF, da completare sarebbe interessante introdurre la possibilità di passare ad un blocco un ingresso negato, senza dover introdurre un apposito blocco funzionale : ad es per fare Y=A&(~B) Questa non l'ho capita, al momento c'e' la possibilità di negare un ingresso. non l'uscita
Ti ho mandata cmq un MS con la libreria fatta fino ad ora, se non la ricevi, riscrivimi pure.
Ciao
|
|
|
|
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 3000
|
 |
« Reply #12 on: April 16, 2013, 05:49:48 am » |
Anche il Team Arduino stava sviluppando l'IDE per la programmazione a blocchi, fu presentato, da Massimo Banzi, un progetto preliminare (una sola slide) durante la presentazione di Arduino Due in una conferenza negli State. Credo poi che, con tutte le altre cose da fare (sono uscite intanto, le R3, l'Esplora, la Leonardo, versioni ridotte dell'Arduino, varie versioni dell'IDE) il progetto si sia arenato, se non proprio cancellato.
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
|