Vai al contenuto
PLC Forum


Plc Programmabili In Linguaggio C


Paolo Prete

Messaggi consigliati


N.B: va benissimo anche il C++; inoltre, sarebbe per me preferibile il tutto in ambiente Linux ma, ahimè, quel poco che ho adocchiato in rete sembra irrimediabilmente legato a Windows

Link al commento
Condividi su altri siti

del_user_56966

Ti diro di più, non solo questo con Windows , ma Windows da XP in giù perchè è probabile

che con Vista molti programmi non siano compatibili!

Perchè vuoi utilizzare il C, mentre si sta tutto standardizzando su IEC1131 potresti usare

il linguaggio ST, che essendo strutturato si alliena molto col linguaggio ad alto livello.

Alen ;)

Link al commento
Condividi su altri siti

Purtroppo, almeno le "GRANDI" case non vogliono che i PLC si possano programmare in "C", quando sarebbe semplicissimo adattare un compilatore al micro che sta alla base del PLC. Credo anzi, che molti PLC siano basati su microcontrollori che hanno un compilatore "C" .

Perchè questo comportamento? Perchè altrimenti quello che scrivi per Siemens lo potresti portare senza tanto dispendio di energie su A&B o GE, tanto per citare i 3 più diffusi PLC occidentali.

Link al commento
Condividi su altri siti

del_user_56966

Ciao Livio

Cosa ne dici di "PLC Open", so che rispettando l'indirizzamento

e le librerie standard in Germania

hanno certificato la trasportabilità dei programmi tra Siemens e Panasonic.

Alen :)

Link al commento
Condividi su altri siti

La portabilità di programmi da PLC a PLC solo se c'è un accordo tra le case produttrici è la prova provata dell'abuso di posizione dominante dei grandi produttori. Se i PLC si potessero programmare con un linguaggio standard come il "C" il mondo sarebbe migliore per tutti.

Link al commento
Condividi su altri siti

Se i PLC si potessero programmare con un linguaggio standard come il "C" il mondo sarebbe migliore per tutti

Parole sante!

Il mondo dei CNC è leggermente più sensibile all'argomento, per esempio GE-Fanuc e Num prevedono la possibilità di scrivere pezzi di plc in"C".

Con Num addirittura si potrebbe scrivere tutto il programma in C, con un po di pazienza :) !

Il problema, in questi casi, è che non esiste un debugger degno di questo nome.

Ciao

Link al commento
Condividi su altri siti

Se i PLC si potessero programmare con un linguaggio standard come il "C" il mondo sarebbe migliore per tutti.
A dir la verita' non e' che si sia troppo lontano di questo..
..per esempio GE-Fanuc
.. Anche Siemens ha "sempre" dato la possibilita' di scrivere del codice in C e Pascal tanto PLC come SCADA scripting.. S5, S7, WinCC. Poi, la portabilita' tra diversi vendors ci sarebbe ma non certamente premento solo un bottone.

Link al commento
Condividi su altri siti

Savino io intendo poter programmare in "C" come si programma un microcontrollore o un PC, non scrivere pezzi di funzione in "C" e ingabbiato in un ambiente molto rigido.

La portabilità non significa premere un tasto. Però se non ci sono interazioni con la periferia, che necessariamente differisce da modello a modello, la funzione deve essere portabile senza alcuna difficoltà. Almeno così avviene nel caso di un controllore.

Io ho provato a ricompilare una funzione scritta per lo 8085 con il compilatore CCS per i PIC16fxx: nessun problema la funzione ha girato subito senza bisogno di aggiustamenti. Eppure i controllori sono completatemente diversi, ma le diversità sono assorbite dai relativi compilatori.

Poi ognuno programma con il linguaggio che preferisce. Io, per esempio, quando ho voglia di "giocare" uso l'assembler

Link al commento
Condividi su altri siti

Savino io intendo poter programmare in "C" come si programma un microcontrollore o un PC, non scrivere pezzi di funzione in "C" e ingabbiato in un ambiente molto rigido.
Ergregio Livio, per quanto mi riguarda non avrei niente in contrario, anzi.. ma tu sai che man a mano si va avanti con i PLC, questa possibilita' disminuisce... almeno ci si conforma con la possibilita' di implementare in linguaggi come il SCL, AWL, Pascal( PLC SFC/CFC code inplementation) ... simili. In cambio per quanto riguardano gli SCADA, si riesce a trovare qualcosina di piu' portabile ed usefull sopratutto sullo scripting in ANSI C.
La portabilità non significa premere un tasto.
Solo un battuta per dire che la portabilita' comunque non e' mai generosa con i PLCs ma a volte se ci sorprende negli ambienti SCADA ... Ad esempio, in questi ambienti Io sono un sostenitore dello sviluppo OOP (object oriented programming ) in C++ con delle interfaccie COM e DCOM piuttosto dove ancora nonostante tutto cio', secondo me si e' ancora molto indietro per quanto riguarda alla liberta' data all' implementatori di SW .
Poi ognuno programma con il linguaggio che preferisce
e quello che ti lasciano fare...
Io, per esempio, quando ho voglia di "giocare" uso l'assembler
avevo anch'io usato Assembly language con W95 e 98/ dentro a Visual C++. API , nel colloquio ModBus con successo. Purtroppo gli OS W2000, NT e XP sono cambiati sulla modalita' protetta del HW. Modificato: da Savino
Link al commento
Condividi su altri siti

Savino, senza intenti polemici sia chiaro, ti voglio raccontare (ed anche ad altri a cui potrebbe interessare) una mia vecchia esperienza.

Tra le mie varie ralizzazioni professionali, ci sono anche due piccoli sitemi PLC completi (il più recente risale ad una 15 di anni fa). La programmazione era in ladder diagram e, per il più recente, anche in lista istruzioni (tipo AWL).

Per mio sfizio personale decisi di verificare la possibilità della programmazione in "C" del sistemino.

Presi il compilatore "C" Intel del processore, lo inglobai in ambiente che ne facilitasse un poco l'uso. Poi realizzai alcuni programmi e li feci provare ad utenti che solitamente usavano la lista istruzioni ed il linguaggio a contatti.

Non sapevano che stavano programmando in "C", per loro era scrivere il programma in inglese elementare! I risultati furono molto interessanti, tanto che avrebbero voluto usare sempre e solo quell'ambiente. Purtroppo le licenze Intel, per il compilatore, erano troppo onerose per un PLC di fascia bassa e lascia perdere l'esperimento.

Link al commento
Condividi su altri siti

Savino, senza intenti polemici sia chiaro, ..
Ma non.. figurati Livio.. per primo ti do i miei complimenti e ti ringrazio! Anzi, se ci racconti di piu' di questa esperienza ( quando ne avrai voglia e tempo a disposizione, of course ) penso sarebbe molto interessante sopratutto sotto il punto di vista didattico, almeno per me. Ma questa applicazione l'hai rializzata in Italia od altrove ?.. comunque se domani la Siemens ne fornirebbe il compilatore in C per programmare dei blocchi per gli S7300/400 lo acquistarei subito !! ;) Modificato: da Savino
Link al commento
Condividi su altri siti

per loro era scrivere il programma in inglese elementare!

In effetti, essendo il "C" un linguaggio di medio livello, secondo me si presta facilmente ad applicazioni industriali.

Se i produttori fornissero delle librerie da linkare atte al pilotaggio dell'hardware periferico specifico sarebbe già un bel passo. Naturalmente poi ci sarebbe il problema del processore utilizzato (Motorola, Intel, ecc.). Nei CNC c'è l'ulteriore problema della parte MMI, che non è da poco, visto che ogni costruttore sembra che faccia di tutto per rendersi incompatibile con gli altri.

Il bello del "C", come dice Livio, è che, per fare cose normali (quelle che si fanno senza problemi solo in ladder), è facile ed intuitivo (e compatto), basta mentalizzarsi.

Risulta poi insuperabile quando si devono fare dei sequenziatori, con i vari costrutti disponibili (switch, do loop, ecc.) ne risulta un codice pulito ed elegante.

Se poi uno vuole fare cose più complesse (quelle per le quali con Siemens di solito si usa AWL) si hanno a disposizione strumenti decisamente più potenti e facili da utilizzare.

Ciao

Link al commento
Condividi su altri siti

Ma questa applicazione l'hai rializzata in Italia od altrove ?..

Si! Il primo sistemino risale a 30 anni fa (preistoria). Ne feci una versione con CPU a logica LSI-CMOS (serie 4000), poi una seconda e definitiva versione con un ICD della motorola, un processore ad 1 bit che disponeva di 16 operazioni aritmetico-logiche.

Il secondo sistemino era partito come alternativa a basso costo, per tenere il mercato in un momento in cui il cambio lira-marco aveva messo fuori mercato i prodotto che importavamo dalla Germania (no Siemens :rolleyes: ). Usai il medesimo compilatore di un PLC che importavamo, PLC basato su di un 8052.

Poi come esperimento usai il compilatore "C" della Kiel e il compilatore "PLM51" dell'Intel, inseriti in ambiente facilitante: una specie di SDK.

I risultati erano buoni. I problemi, purtroppo, erano di affidabilità Hw. Per risparmiare avevo tagliato un po' troppo. Sarebbe stato necessario un deciso aggiornamento dell'Hw. In contemporanea l'azienda che distribuivamo accelerò, spinta anche da quel nostro prodotto, l'uscita di un prodotto nuovo più economico, quindi il progetto fu abbandonato definitivamente.

Però esperienze similari ne ho fatte altre.

Per esempio realizzai, con i miei collaboratori ovviamente, una scheda opzionale per i convertitori.regolatori per motori. La scheda basata, su una coppia intel 80188 più il coprocessore 80187, serviva per integrare nel driver le regolazioni complesse ed alcuni processi logici. Per evitare che si dovesse sempre ricorrere ad uno specialista di software, che magari non conosceva il processo da controllare, decisi di creare delle funzioni elemementari ed tessuto connettivo per tenerle assieme. Le chiamammo "briks", mattoni, come i Lego. Era un'ottimo strumento, permetteva di programmare la scheda anche a chi non avesse grandi conoscenze informatiche. Era una specie di macro linguaggio "like C". Ovviamente era necessario che nell'ambiente fosse integrato anche il compilatore "C" e macroassembler della MS; eravamo facilitati dall'uso di un processore simil PC (scelto appositamente :D ). ma questi sono ricordi di un tempo passato....

Link al commento
Condividi su altri siti

.. ingabbiato in un ambiente molto rigido
Ti capisco.. per uno come te che hai progettato a questi livelli, non puoi atro che sentirti limitato con questi PLC di oggigiorno.. ma capisci anche te che dobbiamo conformarci almeno con quello che ci lasciano fare... per esempio il PCS7 della siemens (che so tu ami tantissimo :D ) offre il SCL (Structured Control Language) un IEC 61131-3 language Structured Text (ST) similare al PASCAL , che tutto sommato ti permette un appoccio diverso agli altri linguaggi PLC.. certo, sempre dentro l'encapsulamento sistemistico.
Link al commento
Condividi su altri siti

Per evitare che si dovesse sempre ricorrere ad uno specialista di software, che magari non conosceva il processo da controllare, decisi di creare delle funzioni elemementari ed tessuto connettivo per tenerle assieme. Le chiamammo "briks", mattoni, come i Lego. Era un'ottimo strumento, permetteva di programmare la scheda anche a chi non avesse grandi conoscenze informatiche
Eccoti Livio... visto, anche voi ( i tuoi dirigenti di allora ) 25-30 anni fa' avevate capito e quindi mosso in quella direzione..persone che possano "configurare" ed inizializzare sistemi PLC, SCADA, etc.. senza avere grandi conoscenze di programmazione ed anche persino di controllo di proccessi ... purtroppo questa e' stata ed e' la tendenza. :(

Link al commento
Condividi su altri siti

Ciao a tutti

La mia esperienza di produttore di PLC mi porta a trarre le seguenti conclusioni peraltro ovvie:

- il linguaggio C non è in pratica conosciuto dai programmatori di PLC che di solito prediligono gli altri linguaggi. Già la lista istruzioni viene di solito evitata in favore del ladder.

- il linguaggio C presuppone una conoscenza di tipo informatico/elettronico che nemmeno l'università è in grado di garantire, figuriamoci gli istituti tecnici

- la cultura tecnica degli utilizzatori di PLC è di solito di tipo elettromeccanico per cui le aziende produttrici di orientano in tal senso

Solo il 3% dei nostri clienti utilizza il linguaggio C.

Vi sono anche altri problemi che non invogliano certo l'utilizzo del linguaggio C come l'acquisto del compilatore (di solito molto costoso), l'assenza di un debugger e la troppa libertà che ha il programmatore nel combinare casini.

Personalmente sono favorevole all'utilizzo del linguaggio C in quanto si possono spremere prestazioni dall'hardware non ottenibili con altri linguaggi. Quando è possibile (il cliente ha la cultura necessaria) orientiamo sempre la vendita ai PLC programmabili in C.

Così facendo si hanno importanti vantaggi di carattere commerciale: le prestazioni dell'hardware sono in pratica definite dal programmatore e non ad esempio da un tempo di scansione.

Ovviamente le multinazionali evitano accuratamente il linguaggio C in quanto, oltre alla quasi trasportabilità dei programmi realizzati, si metterebbero in luce le effettive prestazioni dei PLC, per cui l'utilizzatore sarebbe troppo libero nella scelta.

Ciao

Alessandro

Link al commento
Condividi su altri siti

...l'assenza di un debugger e la troppa libertà che ha il programmatore nel combinare casini.

Io programmo da decenni i micro in "C" e ti posso assicurare che esistono soft debugger veramente potenti, molto più potenti di quelli dei PLC.

In quanto a combinar guai dipende esclusivamente dal programmatore. Se questi è degno di questo nome non fa guai, o ne fa pochi, indipendentemente dal linguaggio usato. Se invece è un "**********" che si spaccia per programmatore, con qualdiasi linguaggio usi di guai ne farà tanti e grossi. Basta osservare certi programmi di PLC.

Sarebbe bello avere il "C", completo non solo per scriptin o simili, come scelta opzionale.

Ovviamente le multinazionali evitano accuratamente il linguaggio C in quanto, oltre alla quasi trasportabilità dei programmi realizzati, si metterebbero in luce le effettive prestazioni dei PLC, per cui l'utilizzatore sarebbe troppo libero nella scelta.

Su questo punto abbiamo perfetta identità di vedute.

Link al commento
Condividi su altri siti

Salve alexbellotti,

Quoto tutto il vostro post precedente ! Le ultime due righe mettono in evidenza il principale motivo per il quale non sarebbe conveniente per loro andare in quella direzione.

Sarebbe bello avere il "C", completo non solo per scriptin o simili, come scelta opzionale.
In ambienti SCADA, HMI oltre allo scripting, l'integrazione con OLE ad esempio, permetterebbe ai costruttori di Controlli ActiveX maggiore liberta' d'implementazione riguardo i PLC, of course .. bisogna sempre pero' tenersi rigurosamente dentro delle tolleranze di portabilita' e compatibilita' con gli ambienti di sviluppo (containers) ed il sistema operativo.
Link al commento
Condividi su altri siti

Parole sante!

Il mondo dei CNC è leggermente più sensibile all'argomento, per esempio GE-Fanuc e Num prevedono la possibilità di scrivere pezzi di plc in"C".

Con Num addirittura si potrebbe scrivere tutto il programma in C, con un po di pazienza !

Il problema, in questi casi, è che non esiste un debugger degno di questo nome.

i CNC E.C.S. si programmano completamente in "C" con tanto di compilatore bordo a macchina

Link al commento
Condividi su altri siti

Penso che già qualche anno fà cercano questi hardware, però il Mercato li ha bocciati.

Vi ricordate del M7

Il Vecchio M7 della Siemens si Programmava in C si compilava i blocchi e poi si trasferivano con Step7.

Si Poteva usare il Compilatore della Borland Turbo C.

Aveva una Velocità elevatissima, pultroppo ha fatto una brutta fine,

ma era grandioso. Molto meglio del S7.

Infatti sembra che Hardware del M7 non sarebbe altro che S7 senza quella parte del

Sistema Operativo che vi permette la programmazione in AWL.

Prossimamente nella versione 17 del RsLogix5000 si potrà scrivere anche in C

(almeno da voci di ambiente Rockwell USA)

il Drive Ultra5000 della Allen-Bradley si programma in C per tutte le funzioni di Motion e Controllo.

Link al commento
Condividi su altri siti

Il Vecchio M7 della Siemens si Programmava in C si compilava i blocchi e poi si trasferivano con Step7.

Si Poteva usare il Compilatore della Borland Turbo C.

Perche vecchio.. L'M7 si approccia tanto in C come in CFC. Il CFC forma oggigiorno parte del PCS7 ..espandibile per la famiglia S7.. il M7 ProC/C++, M7 SYS RT e Borland incambio sono rimasti rigorosamente per la famiglia M.. In fatti col M7 SYS RT si arriva propio al completo dominio delle resources del sitema HW !!
..pultroppo ha fatto una brutta fine
Perche? Chi e' in grado lo utilizza ancora a buon fine .. perche mai? certo non e' un controllore per everybody ;) Comunque, la Siemens col linguaggio C e' sempre stata in perfetta sintonia,tanto a livello PLC come a HMI ed anche su diversi sistemi operativi.
Link al commento
Condividi su altri siti

si Programmava in C si compilava i blocchi e poi si trasferivano con Step7.
Beh, questo e' sempre valito... un blocco C, SLC (Pascal), CFC, SFC se compilato allora se renderebbe portabile in S7... poi bisognarebbe vedere su quale CPU ..? Modificato: da Savino
Link al commento
Condividi su altri siti

Lo M7 aveva (ha?) come punto dolente il sistema operativo, che è lo RTOS. Ottimo sitema, un vero real time multitask, ma un poco difficile da maneggiare per chi non è abituato.

Io sono alcuni anni che non ne faccio più uso e avrei qualche difficoltà a riprenderlo.

Purtroppo lo M7 non è stato molto "spinto" da Siemens. Era (è?) un ottimo prodotto su cui Windoes gira come task a bassa priorità di RTOS e si possono implemetare regolazioni, controlli, supervisione in un unico Hw.

C'è stata, se non ricordo male, anche la versione ospitata in un PC, con alimentatore esterno al PC, su cui si poteva lavorare in Step7.

Credo che l'utente tipico di PLC non abbia gradito molto l'ambiente RTOS, tipico sitema operativo "serio". Li non si possono mettere a punto i programmi a martellate come fanno certi "programmatori" in ladder diagram :P

Link al commento
Condividi su altri siti

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...