Vai al contenuto
PLC Forum


Plc Che Supporta Il C


walterword

Messaggi consigliati

Livio Migliaresi

Ma, il titolo della discussione non è <Plc Che Supporta Il C>??

Molti fuori tema, anzi forse fin troppi che non lasciano apprezzare la squisitezza di una discussione interessante che rischia di impantanarsi.

:senzasperanza:

Link al commento
Condividi su altri siti


grazie Livio per il saggio intervento , da questo momento non replico piu

Allora ho raggiunto il primo traguardo , che dicevo nel posto precedente

A questo punto riesco a fare quanto segue .

Scelgo nel'HMI il link degli ingressi , per esempio l'ingresso #1 ( che poi viene copiato nel plc come Input[1]:=%IX0.0) lo aggancio all'uscita output[10] che poi nel plc viene copiata output[10]:=%QX0.9

Poi posso cambiare per esempio decidere che l'inrgesso 1 si agganci all'uscita n , che funziona egregiamente

E' chiaro che tutti i link vengono scritti una volta sola , se l'installatore vuole cambiare non deve fare altro che decidere il nuovo linked inviarlo al plc che opportunamente provvederà ad azzerare tutte le le copie delle uscite , azzerare i link precedenti evitando che rimangano bobine scritte flottanti ect .

Per il primo passo di cui si parlava relativo all'oggetto link In-Out e' funzionante .

Ora il secondo passo prevedere che si possa accendere una lampadina tramite rele passo -passo .E' ovvio che questa procedura deve permettere di agganciare piu ' di un pulsante ad un rele PP .

Per evitare inutili cicli e computazioni direi ceh si possa valutare il fatto che comunque sia , una lampadina non possa essere accesa da piu di tot punti luce , quindi predisporre l'oggetto rele con 10 ingressi pulsante e un'uscita lampadina (che puo' essere un'uscita generica in quanto posso anche accendere una pompa ) , sia piu che sufficiente . Ora credo che anche i piu lussuriosi non abbiano intenzione di accendere la luce della cucina dal citofono o da chissa dove .

Piu avanti si predispone un oggetto multirele' che puo' prendere in imgresso l'uscita di un rele' a 10 pulsanti e creare altre logiche ,o per esempio un pulsante che accenda n luci attivate dal pannello , ma queste sono solo figate che ora non interessano

Posto qui sotto il codice ST di codesys per la funzione di cui sopra

IF PB_1 THEN

FOR ind:=1 TO 256 BY 1 DO
Link[ind].LinkIn:= Link[ind].LinkOut:=ind;
END_FOR;

END_IF;

IF PB_2 THEN

FOR ind:=1 TO 256 BY 1 DO
Link[ind].LinkIn:= Link[ind].LinkOut:=0;
OutputImage[ind]:=FALSE;
END_FOR;

END_IF;


FOR ind:=1 TO 256 BY 1 DO

OutputImage[Link[ind].LinkOut]:= InputImage[Link[ind].LinkIn];

END_FOR;

Link al commento
Condividi su altri siti

Correzioni ...

IF InitLinks=TRUE THEN

FOR ind:=1 TO 256 BY 1 DO
Link[ind].LinkIn:= Link[ind].LinkOut:=ind;
END_FOR;
InitLinks:=FALSE;
END_IF;



IF ResetLinks=TRUE THEN

FOR ind:=1 TO 256 BY 1 DO
Link[ind].LinkIn:= Link[ind].LinkOut:=0;
OutputImage[ind]:=FALSE;
END_FOR;
ResetLinks:=FALSE;
END_IF;

IF ConfigOK=TRUE THEN

FOR ind:=1 TO 256 BY 1 DO

OutputImage[Link[ind].LinkOut]:= InputImage[Link[ind].LinkIn];

(* OutputImage[Link[ ind + offesetOut ].LinkOut]:= InputImage[Link[ind + offsetIn].LinkIn]; scopo futuri , gli offset in e out andranno calcolati o gestiti come memorie di appoggio ... *)

END_FOR;

(* ELSE ................. da vedere cosa fare per sicurezze varie *)

END_IF;

nota* : gli array OutputImage e InputImage sono da [0..256] . Il primo elemento e' implementato solo all'inizio in modo tale che qualsiasi valore arrivi dalla configurazione non si attivi qualche uscita.Per le uscite vere e proprie parte da 1 a 256 , e' un piccolo trucco di arrangiamento .

La InitiLink per ora inizializza i link in modo tale che all'ingresso n si agganci l'uscita n .Se non si esegue la init , si puo manualmente (poi da sw pc che ci pensa lui a madnare i link) inserire il link e inviare il configOK che deve stare su per rendere valide le uscite

Modificato: da walterword
Link al commento
Condividi su altri siti

Ora , per poter garantire una logica minima si puo predisporre che per assegnare unì'uscita si possano mettere in AND logico un massimo di 4 condizioni . L'installatore puo' agganciare un'uscita direttamente ad un ingresso o al massimo a 4 ingressi collegati in AND .Questa situazione puo' colmare desideri del tipo "Ho l'interruttore o il pulsante premuto ma voglio che ci sia la caldaia accesa o il consenso del crepuscolare ect ect " Oppure che " Accendo la pompa che irriga il giardino solo se l'orologio mi dice che non e' gennaio e che ci sia un certo livello di umidità relativa ect ect "

Per cui senza entrare nei dettagli bisogna aprire il concetto .

Se decide di usare un solo ingresso agganciato all'uscita non dovra' fare altro che non spuntare le altre 3 condizione nel sw pc oppure selezionare dalla combobox un "+24 V " in modo tale che il sistema assegni automaticamente un corto circuito o meglio dire un bypass.

Durante l'assegnazione di link , l'installatore puo' decidere se agganciare un'uscita oppure un rele' ausialiario (che in realta' verra gestito come una memoria booleana ) e che puo ' essere utilzizato in altresi logiche a "4" .

Un'altra cosa da fare e' gestire l'assegnazione di un''uscita in modo tale che se piu di un ingresso o memoria assegnano la stessa memoria non si verifichi nel plc che la stessa venga assgnata piu volte con gli inconvenienti che voi tutti progrmmatori di plc sapete , cioè che nel ciclo di scansione verrà considerata l'ultima assegnazione e sovrascritte le precedenti .

ciao

Walter

Modificato: da walterword
Link al commento
Condividi su altri siti

interessante bigalex .

Pero in questa fase del progetto sto ancora svolgendo compiti legati alla architettura del software del plc e la loro gestione

Quello che hai postato e' un software di programmazione su pc che puo' girare su browser piuttosto che essere un .exe .

Come vedi per parametrizzare e gestire un impianto ci sono finestre e scelte varie .Poi le procedure di scelta , controlli ed assegnazioni possono essere piu o meno differenti .

Ora sto ancora progettando e ragionando su come poter gestire determinate funzionalità e devo astrarre il piu possbiile per non limitarle troppo .

Link al commento
Condividi su altri siti

Da quel che mi sembra di capire è come se tu creassi delle "macro risorse" nel PLC che altro non sono che istanze di Blocchi Funzione di una Libreria apposita (da te creata) che andranno ad essere attivati dinamicamente in funzione della configurazione (cablaggio/configurazione software) che viene svolta tramite un software di interfaccia su pc (es. applicativo in C#) .

Ho capito correttamente ?

bigalex :blink:

Link al commento
Condividi su altri siti

si hai capito bene .

Nel plc andrà caricato un programma una sola volta ...diciamo all'atto della consegna se facciamo finta che sia un prodotto commerciabile.

Poi il software da installare sul pc puo' essere regalato o dato in licenza previo acquisto o vendibile e/o eseguibile su browser in modo tale un utente qualsiasi possa crearsi il proprio impiato di casa o altro , oltre al manuntentore , ma queste sono figate che ora non hanno la pretesa di essere tenute in considerazione .

Ora la cosa importante e' capire come programmare il plc, come creare un'architettura di dati e logiche in modo tale che si possa configurare l'impianto da pc

Modificato: da walterword
Link al commento
Condividi su altri siti

Per questo tipo di applicazione vedrei meglio un controllore embedded con softplc anzichè un PLC tradizionale.

Anche perchè "a naso" avrai necessità di buone risorse hadware (soprattuto memoria) per realizzare quello che desideri.

Occorre pensare ad una soluzione scalabile se non si vuole raggiungere facilmente il limite applicativo.

Se vuoi rimanere su hardware commerciale allora è meglio orientarsi su plc tipo Wago (in basso) fino a Beckoff (in alto) che utilizzano

variamente declinati Codesys.

Scarterei s7-1200 perchè "scl" è simile ma diverso da Codesys (quindi sarebbe necessario riscrivere le librerie).

E poi c'è l'aspetto della comunicazione (quale hardware di comunicazione e quali protocolli implementare e configurare?).

bigalex :blink:

Link al commento
Condividi su altri siti

La scelta del plc e' dovuta a due motivi:

1) reperibilità anche all'estero

2) "semplcità" nella programmazione ,pena i limiti

3) troppo impegnativo partire con un sistema embedded , creare timer ect senza sapere cosa deve fare

Se buona parte delle funzionlità si potranno sviluppare con un plc vuol dire che si potranno sviluppare con soluzione embedded

Ripeto , in questa fase non e' di relativa importanza la scelta hw , bisogna capire come sviluppare gli algoritmi e l'architettura

Vedi i post sopra dove c'e 'il codice

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...