Vai al contenuto
PLC Forum


Plc: Ladder O C?


Alessandro Cattaneo

Messaggi consigliati

Alessandro Cattaneo

Salve,

ho progettato una piccola macchina utensili (saldatrice automatica).Ora nella scelta del PLC per il controllo della macchina mi pone il dubbio tra progrmmazione ladder e programmazione diretta in C. Essendo un profano non capisco se i due programmi sono equivalenti o no? Il ladder poi viene in qualche modo tradotto in C? Tecnici della vecchia scuola mi dicono che tutte le MU sono gestite in ladder e non ha senso usare il C. Che ne pensate. Grazie

Link al commento
Condividi su altri siti


Diciamo che se non devi fare cose complicate ma solo normale automazione, il ladder va più che bene (anche perchè non saprei quale plc si possa programmare esclusivamente in C).

Il ladder poi viene in qualche modo tradotto in C?

E perchè mai? Tutti i linguaggi vengono tradotti in codice macchina per poter essere eseguiti dal processore del PLC.

Link al commento
Condividi su altri siti

Alessandro Cattaneo

Ok , grazie delle risposte. Ma questo linguaggio macchina cos'è? Ogni marca di PLC ha il proprio? Ad esempio i controlli numeri tipo fanuc, mazak, simens ecc, hanno tutti una parte in ladder per la logica di funzionamento, ma poi il linguaggio del CNC cosa è? cosa è questo codice macchina? e di tipo proprietario ? si basa su qualche linguaggio standard tipo C, linux, basic ecc? grazie

Link al commento
Condividi su altri siti

Ma questo linguaggio macchina cos'è?

Tutti i processori hanno il loro linguaggio macchina che differisce per produttore ed anche per modello o serie.

Ogni PLC ha un processore differente secondo marca e modello.

Il liguaggio macchina non è altro che una sequenza di numeri esadecimali che sono caricati nella memeoria di programma. Il processore riconosce il codice corrispondente alle istruzioni e le esegue.

Questo detto in forma molto semplificata.

Un testo base di informatica dedica almeno un capitolo a questo argomento.

Il linguaggio ladder, ad esempio, se rispetta lo standard IECC è identico per qualsiasi tipo di PLC, però l'identicità si limita alle regole sintattiche. Unva volta che si passa alla compilazione sarà tradotto nel linguaggio macchina del processore impiegato.

Anche il "C" è indipendente dal processore target. Un programma in "C" lo puoi portare da una macchina all'altra purchè tu disposnga del compilatore adatto.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Ma questo linguaggio macchina cos'è? Ogni marca di PLC ha il proprio?

cosa è questo codice macchina? e di tipo proprietario ? si basa su qualche linguaggio standard tipo C, linux, basic ecc?

No, con linguaggio macchina si intende l'assembly, cioè il linguaggio più vicino alle sequenze binarie che sono le uniche che i processori capiscono, ma quì entriamo nelle questioni di base dell'nformatica, prova a guardare http://it.wikipedia.org/wiki/Assembly giusto per un'infarinata.

Ad esempio i controlli numeri tipo fanuc, mazak, simens ecc, hanno tutti una parte in ladder per la logica di funzionamento, ma poi il linguaggio del CNC cosa è?

I vari linguaggi scelti da i costruttori di CNC sono dei cosiddetti "linguaggi evoluti" che permettono, in un modo più o meno vicino al linguaggio umano, di programmare.

Ognuno di questi linguaggi viene in seguito compilato (in alcuni casi interpretato) in modo di produrre un assembly che poi viene, tramite un assembler, convertito in una sequenza binaria che è l'eseguibile vero e proprio.

Se con "linguaggio dei CNC" intendi il programma di lavoro, cioè l'ISO, ti posso dire che si tratta di un linguaggio sequenziale composto da istruzioni di movimento e funzioni varie, pensato per programmare i cici di lavoro delle macchine utensili.

Ma una domanda sorge spontanea:

Perchè ti poni questi quesiti?

La saldatrice di cui parli ha una parte di automazione (input/output) e anche degli assi controllati e interpolati?

In questo caso cerca un piccolo CNC che abbia le caratteristiche (e il prezzo) necessarie (numero di I/O, quantità e caratteristiche degli assi controllati, ecc.).

Tra i candidati poi vedrai come si programmano e quant'altro e deciderai...

Link al commento
Condividi su altri siti

Ognuno di questi linguaggi viene in seguito compilato (in alcuni casi interpretato) in modo di produrre un assembly che poi viene, tramite un assembler, convertito in una sequenza binaria che è l'eseguibile vero e proprio.

Lucios questo solo per i compilatori "old style", quelli detti in 2 passate, oggi si passa direttamente al linguaggio macchina esadecimale,senza passare per un assemblatore. I compilatori producono direttamente il file "hex" debitamente tradotto, linkato e riallocato in indirizzo assoluto. ma qui il discorso si fa lungo e complesso.

Link al commento
Condividi su altri siti

Alessandro Cattaneo

Tutto questo per cercare di capire ciò che mi veniva detto da tecnici che ritengono che tutti la macchine CNC sono programmate in ladder. Da altri informatici che il ladder è troppo basso livello per fare una macchina evoluta e quindi meglio il C.

Inoltre poco tempo fa ho incontrato un produttore italiano di PLC abbastanza economici che mi ha proposto un software di programmazione che lavora in ladder e contemporanemanet in C e che in teroia posso scrivere il programma parte in un modo e parte in un altro. Addirittura questo PLC potrebbe fare interpolazione di assi.

Allora non capivo più nulla. Non capivo se i linguaggi erano poi tradotti in qualcosa d'altro o no. Non ho tempo di studiare tutto e devo concentrarmi su un linguaggio diffuso e che mi aiuti anche in futuro nel mondo delle macchine utensili.

Ora sto iniziando a mettere ordine alle idee: ladder semplice e si basa sull'analogia circuitale, il C molto più informatico, quindi mi richiederà più tempo, ma forse permette programmi più complessi.

Tutto poi passa al compilatore e via alle istruzioni macchina.

Grazie delle infos.

Link al commento
Condividi su altri siti

Giuseppe Signorella

Da altri informatici che il ladder è troppo basso livello

Piccola correzione.

Il Ladder è un linguaggio ad alto livello, anzi, essendo grafico, credo che si possa dire che insieme hai suoi simili, sia uno dei linguaggi più ad alto livello finora che ci sia.

Al contrario, del C, che nella scala stà qualche gradino al di sotto del Ladder.

Detto ciò, non bisogna fare confusione sulle potenzialità del linguaggio/Livello.

Un linguaggio più è a basso livello è più potente è. I'altra faccia della medaglia sintetizzando al massimo il concetto, è che un software scritto a basso livello diventa meno (riutilizzabile per un'altra macchina).

Link al commento
Condividi su altri siti

Lucios questo solo per i compilatori "old style", quelli detti in 2 passate, oggi si passa direttamente al linguaggio macchina esadecimale,senza passare per un assemblatore.

Livio mi inchino alla tua sapienza :thumb_yello:

Un linguaggio più è a basso livello è più potente è.

Sicuramente è più flessibile ma richiede un periodo di apprendimento più lungo, a meno che l'interessato non sia un informatico, altrimenti è vero il contrario. Ho visto un bravissimo programmatore (Java e C++) sudare freddo cercando di capire alcune reti ladder di un CNC Fanuc :lol: :lol: :lol:, poi, dopo opportune spiegazioni e grazie alla sua flessibilità mentale, ne è uscito brillantemente.

Link al commento
Condividi su altri siti

Livio mi inchino alla tua sapienza

E' solo vecchiaia :lol::(

40 anni fa era normale avere compilatori in 2 passate. Anzi no, i compilatori eran merce rara, la maggior aprte del alvoro andava fatta in assembler.

Sicuramente è più flessibile ma richiede un periodo di apprendimento più lungo,

Non è detto.

Se usi processori dal pentium in su, ad esempio, l'assembler non è facile, ma se usi processori come i PIC o gli Atmega di arduino, tanto per fare un esempio, l'assembler è facilissimo.

Nel campo dei PLC-CNC, ad esempio lo AWL Siemens nonostante le complicazioni semantiche tipiche dei teutonici è di una facilità disarmante. :smile:

Link al commento
Condividi su altri siti

ad esempio lo AWL Siemens nonostante le complicazioni semantiche tipiche dei teutonici è di una facilità disarmante

Mah, se lo dici tu... non è che ci lavoro molto con l'AWL quindi il mio è solo un modesto parere di un non specialista, ma a me fa venire il "mal di pancia" tutte le volte che ci metto le mani.

Tant'è che, quando ho dovuto fare in Step7 un pezzo di plc che doveva manipolare dati in modo un po' massiccio (leggi ricerca, modifica e spostamento di dati strutturati tra DB), ho dovuto mettere mano all'SCL che, pur non essendo un mostro, mi ha permesso di cavarmela senza farmi spuntare capelli grigi aggiuntivi.

Lo stesso lavoro, utilizzando un classico C, probabilmente avrebbe richiesto metà tempo.

Però il concetto è sempre lo stesso:

Quello che conosci è il più facile :smile:, alcuni frequentatori di questo forum sono dei "mostri" di Siemens quindi la visione dei problemi e della loro risoluzione cambia soggettivamente.

Ciao Livio

Link al commento
Condividi su altri siti

Mah, mi sbaglierò, ma sono portato a credere che se devo accendere/spegnere una lampadina, magari è preferibile il ladder, se invece devo eseguire un polinomio di 5°ordine forse è maggiormente indicato il C.....

Di conseguenza, la scelta del linguaggio dipende da ciò che si deve realizzare......come sempre.

Porsi il problema se per una saldatrice sia meglio usare il C o il ladder.....

Perchè?...

L'ipotetica saldatrice in C salda meglio di quella il ladder?

Non capivo se i linguaggi erano poi tradotti in qualcosa d'altro

certo! Alla fine diventa tutto 01100011001010101010101010101010101010001010100101001001010.......

Modificato: da dott.cicala
Link al commento
Condividi su altri siti

Alessandro Cattaneo

La mia preoccupazione era di non finire ad utilizzare un linguaggio che poi nel mondo industriale non esisteva e quindi mi sarei trovato in difficoltà ( in questi momenti sbagliare certe scelte significa a volte chiudere la propria azienda)

Comunque mi sembra di capire che questo fornitore, che mi permette di programmare sia in C che in ladder, mi da una doppia opportunità.

Inoltre leggendo un po' in internet ho trovato che il C è abbastanza usato anche in ambito industriale siete d'accordo con questa affermazione?

Grazie

Link al commento
Condividi su altri siti

leggendo un po' in internet ho trovato che il C è abbastanza usato anche in ambito industriale

Sarà anche abbastanza usato ma stai sicuro che non farà mai parte dei linguaggi "standard" per l'automazione (IEC 61131-3).

PS: e il C è il mio linguaggio preferito, non scherzo.

Modificato: da pomat
Link al commento
Condividi su altri siti

in questi momenti sbagliare certe scelte significa a volte chiudere la propria azienda

Mah, secondo me è più importante scegliere un prodotto di una ditta che ti garantisca supporto e assistenza anche per il futuro, evitando i "cantinari" che magari oggi ci sono e domani no, quindi scegliere marchi consolidati.

Il linguaggio di programmazione è un dettaglio.

Link al commento
Condividi su altri siti

Alessandro Cattaneo

Per Pomat

Per quanto riguarda il "C" è vero che forse non arriverà mai ad essere prioritario per l'automazione, ma credo comunque che dia molte potenzialità per eventuali sviluppi futuri.

grazie.
Per Lucios,
non so se posso fare nomi ma questa azienda italiana (toscana) è presente da oltre vent'anni in ambito automazione industriale e ho visto i loro plc su produttori di macchine italiani ma di livello internazionale. Quindi in questo senso mi sento abbastanza sicuro.
L'idea di capire bene il linguaggio è che cercavo un po' il meglio in ambito industriale macchine utensili.
Thanks
Link al commento
Condividi su altri siti

Livio Orsini
Per quanto riguarda il "C" è vero che forse non arriverà mai ad essere prioritario per l'automazione

E' una questione meramente commerciale, un modo di obbligare l'utilizzatore alla fedetà.

Un programma scritto in "C" è immediatamente portabile, dopo compilazione, da un apparato ad un altro.

Link al commento
Condividi su altri siti

  • 5 weeks later...

Ovunque si possa io prediligo il C++ ed al secondo posto il C, sono amante della portabilità, ma non sempre è possibile e soprattutto sicuro.
(Spiego dopo perché ho scritto sicuro)

Provo a dire la mia sperando di non venire lapidato... :-)

-Dal mio punto di vista, solitamente i linguaggi specifici per automazione sono tutti abbastanza sempliciotti visti da un occhio informatico se usati per fare quello per cui sono stati progettati!

-La difficoltà nell'automazione per chi arriva dall'informatica non è certo il linguaggio! Secondo me se una persona conosce una base di alcuni linguaggi di scripting e conosce bene il C per imparare ad usare vari linguaggi per automazione ci mette veramente poco.

-Per un informatico AWL è banale, come lo è il ladder per chi ha più dimistichezza con le reti elettriche!

Molte volte io scelgo linguaggi diversi per la stessa applicazione.

Per esempio posso programmare in AWL, ladder o QCL alcune parti che riguardano la pura logica di macchina, mentre per l'interfaccia verso operatore o per la raccolta dati uso sovente il C ed il C++! (Un controllo del fronte di salita di un segnale è sicuramente più semplice da gestire in AWL che in C, per la stampa di un LOG su una stampante seriale è vero il contrario)

Questo solo perché sono molto più veloce a sviluppare interfacce in C e C++, piuttosto che imparare ogni volta arzigogolati meccanismi di vari HMI. Ovviamente non è possibile ogni volta, ma oggi i panel PC industriali hanno costi ridicoli. Poi un panel PC o un embedded PC portano altri vantaggi, come il poter sviluppare molte applicazioni al contorno dell'automazione. (Fronzoli che alla fine possono anche venire apprezzati).

Proprio ora sto sviluppando una piccola applicazione in C++, che installata sul PC di un CN, si occupa di comunicare con un distanziometro laser seriale e con il software CN caricando quote di compensazione su richiesta. Per carità anche in AWL si può gestire una seriale con tale controllo, ma quanto ci vuole per sviluppare il codice, sicuramente non 4-5 ore come con il C++ (Così tante solo perché c'è un minimo di interfaccia operatore per settare i vari parametri di comunicazione). Il controllo non deve fare null'altro che alzare un merker, il software quando se ne accorge esegue la misura carica una globale e abbassa il merker, il controllo ha la quota già bella calcolata (media sui campioni etc) e deve solo prendere la globale in AWL e correggere l'offset.

Non mi piace invece scegliere il C o C++ per applicazioni di controllo movimento, soprattutto quando non ho abbastanza tempo per un debug approfondito, in quanto i BUGS in linguaggi come il C e C++ sono sempre dietro l'angolo e nell'automazione si possono fare facilmente grossi danni sia a livello economico che con la sicurezza della macchina stessa.

Alla fine per fare una metafora vedo il C come un badile e l'AWL come un piccone! Con entrambi posso scavare e spostare terra, ma se scelgo quello adeguato per il lavoro che devo fare fatico meno e rischio meno!

Link al commento
Condividi su altri siti

Provo a dire la mia sperando di non venire lapidato... :-)

Da me no di sicuro ma sai, questo forum è frequentato da gente strana... :superlol: :superlol: :superlol:

Dal mio punto di vista, solitamente i linguaggi specifici per automazione sono tutti abbastanza sempliciotti visti da un occhio informatico se usati per fare quello per cui sono stati progettati!

Diciamo che sono diversi perchè è diverso il campo di utilizzo e sono fatti per gente non "informatica pura".

La difficoltà nell'automazione per chi arriva dall'informatica non è certo il linguaggio!

D'accordissimo! Il difficile è capire cosa deve fare la macchina e in che modo.

Per esempio posso programmare in AWL, ladder o QCL alcune parti che riguardano la pura logica di macchina, mentre per l'interfaccia verso operatore o per la raccolta dati uso sovente il C ed il C++! (Un controllo del fronte di salita di un segnale è sicuramente più semplice da gestire in AWL che in C, per la stampa di un LOG su una stampante seriale è vero il contrario)

E' vero, secondo me comunque il più grosso problema è che io non ho mai trovato un debugger efficiente per C in un ambiente realtime, ma forse sono stato sfortunato...

Link al commento
Condividi su altri siti

E' vero, secondo me comunque il più grosso problema è che io non ho mai trovato un debugger efficiente per C in un ambiente realtime, ma forse sono stato sfortunato...

Sei decisamente sfortunato. :smile:

Ne esistono tantissimi. Già dai primi anni '90 Intel in tutti i suoi compilatori "C" per micro controllori dava l'interfaccia per il debugger on line, e si trattava di applicazioni RT.

Quasi tutti gli ambienti di sviluppo RT offrono questo tool.

Quelli di micrchip sono efficientissimi. con profondità di tracciamento di qualche centinaio di istruzioni. Persino i sistemini tipo ICD sono abbastanza efficienti.

Link al commento
Condividi su altri siti

Quasi tutti gli ambienti di sviluppo RT offrono questo tool.

Si vede che non hai mai avuto a che fare con CNC Fanuc e Num. :blink:

Ottimi controlli numerici ma decisamente carenti (soprattutto Fanuc) sotto questo aspetto (leggi debugger inesistente).

Link al commento
Condividi su altri siti

io ti consiglio di fare cosi

Per le logiche di filtro ingresso , allarmi , logiche per i comandi manuali , semiautomatici , automatici ect fai in ladder in modo tale che riesci in tempi brevi a capire i problemi relativi al campo o alle logiche primarie

In linguaggio testuale i calcoli o particolari conversioni , gestione comunicazioni , scalature , pid ect

Link al commento
Condividi su altri siti

Per le logiche di filtro ingresso , allarmi , logiche per i comandi manuali , semiautomatici , automatici ect fai in ladder in modo tale che riesci in tempi brevi a capire i problemi relativi al campo o alle logiche primarie

In linguaggio testuale i calcoli o particolari conversioni , gestione comunicazioni , scalature , pid ect

:thumb_yello: mi associo

Link al commento
Condividi su altri siti

  • 2 months later...

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...