s_ricc Inserito: 14 giugno 2018 Segnala Inserito: 14 giugno 2018 Domanda semplicissima: vi risulta che si possa programmare un PLC in linguaggio C utilizzando Microsoft Visual Studio ? Se sì, mi direste quali marche e/o modelli di PLC lo consentono e quali sono gli strumenti/tool sw necessari oltre al suddetto ? grazie Simone
Ctec Inserita: 14 giugno 2018 Segnala Inserita: 14 giugno 2018 Beh, in linea teorica no. Perché in Europa dovremmo sottostare alla IEC 61131-3 che definisce 5 differenti linguaggi per PLC, che sono: IL (Instruction List) similare a un assembler per operazioni time critical, oramai superato dai nuovi compilatori e velocità dei PLC Ladder, o diagramma a contatti, il più richiesto dai clienti perché un po' più intuitivo e quindi possibile analizzarlo per soluzione problemi FBD (Function Block Diagram) forma semigrafica a blocchetti piuttosto in voga di recente SFC (Sequential Function Charts) molto grafico, per sistemi sequenziali (macchine a stati), ST (Structured Text) linguaggio strutturato che ha qualche funzione che ricorda il C, ma con sintassi un po' diversa (e molta meno eleganza), era il candidato ideale per implementare il C per i PLC ma a pare mio si sono arenati in una specie di simil-Basic un po' più avanzato. Ottimo per le elaborazioni di dati e calcoli complessi, che in Ladder farebbero impazzire. Ora poi i migliori sistemi di programmazione permettono la gestione di variabili simboliche, senza assegnazione di indirizzi assoluti, che consentono una versatilità elevata. Si usano strutture, in alcuni (Omron) le Union, si possono definire tipi di dati, insomma, la programmazione attuale (anche se in ladder) consente l'utilizzo di tecniche evolute che una decina di anni fa ci si sognavano. E i PLC attuali compilano ed eseguono programmi complessi in tempi sotto al ms che tempo fa erano solo appannaggio delle schede assi. PS: dimenticavo; Mitsubishi per la serie iQ-R ha anche i moduli C-Controller programmabili in C e C++, ma credo sia roba ipercostosa e dedicata a configurazioni particolari.
lucios Inserita: 14 giugno 2018 Segnala Inserita: 14 giugno 2018 Utilizzando Visual Studio puoi fare applicativi per Arduino, vedi ad es. https://www.visualmicro.com/ Non mi risulta esistano PLC, almeno tra quelli più comuni, che accettino un eseguibile compilato con il compilatore Microsoft. C'erano i vecchi CNC Fanuc che utilizzavano il compilatore C++ Microsoft (a patto di fare il progetto scrupolosamente in ANSI C) per creare degli eseguibili.
s_ricc Inserita: 14 giugno 2018 Autore Segnala Inserita: 14 giugno 2018 9 minuti fa, lucios scrisse: Non mi risulta esistano PLC, almeno tra quelli più comuni, che accettino un eseguibile compilato con il compilatore Microsoft. Intendevo anche non utilizzando il compilatore Microsoft, magari usando Visual Studio solo per agevolare la stesura del codice, e poi compilando con altri tool (che però io appunto non conosco). grazie
ETR Inserita: 14 giugno 2018 Segnala Inserita: 14 giugno 2018 Beckoff con TwinCat in tegrato in Visual Studio Buona serata, Ennio
max81 Inserita: 14 giugno 2018 Segnala Inserita: 14 giugno 2018 Beckhoff. Twincat 3 utilizza come ambiente di sviluppo Visual Studio, poi se hai la versione professional puoi utilizzare anche il C/C++ oltre ai linguaggi IEC 61131-3. Ciao
leleviola Inserita: 14 giugno 2018 Segnala Inserita: 14 giugno 2018 In Siemens qualcosa che si avvicina al C mi sembra sia l'SCL ma io preferisco sempre il ladder che in Siemens chiamano KOP, io comunque mi sono abituato a fare calcoli complessi anche trigonometrici pure in ladder, è vero in testo strutturato è meglio ma ci si può arrivare comunque con altri linguaggi. Molto utile l'SFC segnalato da Ctec sperimentato in passato in Mitsubishi per programmazione a passi e transizioni passi sicure e certe. L'ideale sarebbe utilizzare vari tipi di linguaggi contemporaneamente in base all'esigenza. Comunque è vero che il C è molto potente ma è anche vero che presuppone di avere una macchina multitasking, cosa che il PLC classicamente non è, o almeno quelli che ho conosciuto fino ad ora non lo sono
ilguargua Inserita: 14 giugno 2018 Segnala Inserita: 14 giugno 2018 47 minuti fa, leleviola scrisse: Comunque è vero che il C è molto potente ma è anche vero che presuppone di avere una macchina multitasking Non so se ti riferisci a qualcosa di particolare, ma a me non risulta affatto che il C "presupponga" il multitasking, di certo lo può gestire, ma non lo richiede. Ciao, Ale.
leleviola Inserita: 15 giugno 2018 Segnala Inserita: 15 giugno 2018 Si è vero ho detto una cosa non corretta, lo può gestire ma non presupporre, mi trovo a lavorare in azienda con un collega che mi dice sempre ciò perchè è vent anni che lavora su sistemi embedded o costruiti ad hoc per certe strutture e in tali sistemi ha sempre usato il C perchè per lui molto più potente di un banale liguaggiio di programmazione di PLC, adesso si trova a lavorare su PLC e trova il mondo molto obsoleto, ma è anche vero che la macchina su cui si lavora è diversa e la CPU di un PLC non è quella di un PC, un PC può fare multitasking un PLC banale o semplice affatto. La stessa Mitsubishi mi sembra stia per presentare una macchina su base PC o qualcosa di simile, non ricordo il nome del prodotto questo il link del prodotto http://www.mitsubishielectric.com/news/2018/0419-b.html
Livio Orsini Inserita: 15 giugno 2018 Segnala Inserita: 15 giugno 2018 5 ore fa, leleviola scrisse: La stessa Mitsubishi mi sembra stia per presentare una macchina su base PC o qualcosa di simile, Nel 96, se ricordo bene, la siemens mise in catalogo una serie di macchine molto potenti basate su processori intel che potevano svolgere funzione di PLC, PC per supervisione e regolazione embedded basandosi sul sistema operativo RTOS. Questa linea di CPU usava I/O ST-300 e poteva sostituire vantaggiosamente il PLC in applicazioni dove eran richiesti numerosi loop di regolazione. Non ebbe molto successo, sia per i costi e, soprattutto, per la non facilità di programmazione. Io nel 1998 feci anche un corso specifico su quella macchina sullo RTOS
lucios Inserita: 15 giugno 2018 Segnala Inserita: 15 giugno 2018 Quote Twincat 3 utilizza come ambiente di sviluppo Visual Studio, poi se hai la versione professional puoi utilizzare anche il C/C++ oltre ai linguaggi IEC 61131-3. Interessante, ma cosa si può fare in C? Anche un intero progetto plc? Beckoff supporta anche programmazione OOP con classi?
bofh Inserita: 16 giugno 2018 Segnala Inserita: 16 giugno 2018 il 14/6/2018 at 18:21 , Ctec scrisse: ST (Structured Text) linguaggio strutturato che ha qualche funzione che ricorda il C No ha nulla a che fare col C . E' un "dialetto" del Pascal il linguaggio che incontri uin tutti i corsi base di programmazione.
bofh Inserita: 16 giugno 2018 Segnala Inserita: 16 giugno 2018 Arduino e Raspberry Pi sono essere programmati con Visual Studio. Per i PLC ogni costruttore offre stumenti proprietari.
walterword Inserita: 20 giugno 2018 Segnala Inserita: 20 giugno 2018 Raspberry lo programmi anche con Netbeans dopo aver configurato il cross compiler devo dire che è molto veloce e performante
dperla Inserita: 21 giugno 2018 Segnala Inserita: 21 giugno 2018 il 14/6/2018 at 18:02 , s_ricc scrisse: Domanda semplicissima: vi risulta che si possa programmare un PLC in linguaggio C utilizzando Microsoft Visual Studio ? Se sì, mi direste quali marche e/o modelli di PLC lo consentono e quali sono gli strumenti/tool sw necessari oltre al suddetto ? grazie Simone Ciao, a me è capitato di usare un PC con interfaccia con I/O Beckoff, sviluppando un software in CVI. Non so se intendessi questo
max81 Inserita: 21 giugno 2018 Segnala Inserita: 21 giugno 2018 Io non ho visual studio professional, quindi direttamente non ho mai provato a sviluppare progetti in C/C++, però so che è possibile fare in quanto ho assistito allo sviluppo di un test. Link: https://infosys.beckhoff.com/content/1033/tc3_c/54043196359873931.html?id=7527261802556741441
lucios Inserita: 23 giugno 2018 Segnala Inserita: 23 giugno 2018 Quote e in tali sistemi ha sempre usato il C perchè per lui molto più potente di un banale liguaggiio di programmazione di PLC, indubbiamente ma bisogna poi vedere se il sistema ha un debugger efficiente, ricorda che con il plc si lavora in realtime... Quote adesso si trova a lavorare su PLC e trova il mondo molto obsoleto più che "obsoleto" direi "diverso". Ma di che PLC parliamo? Quote un PC può fare multitasking un PLC banale o semplice affatto non so fino a che punto la definizione di multitasking abbia senso su un plc. Per definizione un PLC è una macchina che esegue le operazioni programmate in un tempo finito. Il multitasking a cosa dovrebbe servire? Non è come su un PC dove, se devi gestire un processo lento, magari ti conviene farlo in un thread separato per non bloccare ad es. l'interfaccia operativa. Poi, tra l'altro bisognerebbe fare chiarezza sul concetto di multitasking. Dai un'occhiata qui ad esempio
batta Inserita: 23 giugno 2018 Segnala Inserita: 23 giugno 2018 Quote più che "obsoleto" direi "diverso" Concordo. Chi si ritiene un mago della programmazione perché ha sempre programmato in C, e considera la programmazione dei PLC una programmazione di serie B, significa che non ha ancora capito cosa sia un PLC e quali siano i compiti di un PLC. Magari si tratta di un personaggio veramente bravo nel suo campo, ma non mi stupirei se poi sviluppasse programmi per PLC caotici e pieni di problemi. La programmazione di un PLC va affrontata con una diversa mentalità. Se si sbaglia approccio, si fanno solo casini. Ma poi, ovviamente, la colpa è del PLC che si programma con linguaggi obsoleti :-(
Livio Orsini Inserita: 24 giugno 2018 Segnala Inserita: 24 giugno 2018 10 ore fa, batta scrisse: Chi si ritiene un mago della programmazione perché ha sempre programmato in C, e considera la programmazione dei PLC una programmazione di serie B, significa che non ha ancora capito cosa sia un PLC e quali siano i compiti di un PLC. Concordo anch'io. Io ho avuto esperienze di programmazione di sistemi dedicati con Sistemi Operativi RTOS veramente multitasking, e di PLC. Se consideri il PLC solo come una scatola di relè in cui ficcare dentro a martellate un programma allora il PLC è uno strumento rozzo. Però se sai veramente programmare, e non significa essere dei "maghi" nell'uso di linguaggi ad alto livello, se conosci bene lo strumento PLC che sta usando, allora sai che hai a disposizione uno strumento molto potente. Tanto per cominciare un PLC è multitasking per definizione. Il programma che esegue l'automazione, anche se fosse solo sequenziale, non è che uno dei jobs della macchina. In back ground, senza che l'utente possa interferire, "girano" parecchi tasks, anche prioritari, per il controllo delle risorse, per gestione della comunicazione, per gestione dell'apparato. Poi, se se ne è capaci e se l'applicazione lo richiede, si può gestire anche un po' di processi non sequenziali ma in condivisione di tempo.
lucios Inserita: 24 giugno 2018 Segnala Inserita: 24 giugno 2018 Quote anto per cominciare un PLC è multitasking per definizione. Il programma che esegue l'automazione, anche se fosse solo sequenziale, non è che uno dei jobs della macchina. In back ground, senza che l'utente possa interferire, "girano" parecchi tasks, anche prioritari, per il controllo delle risorse, per gestione della comunicazione, per gestione dell'apparato. Vero, per questo penso che s_ricc con il termine "multitasking" si riferisca invece a "multithread", cioè alla possibilità di poter programmare, all'interno del programma utente, dei "pezzi di software" che vengono eseguiti appunto in thread dedicati in modo parallelo al thread principale, con il sistema operativo che schedula il tutto. Questo viene fatto nel mondo PC principalmente per poter eseguire operazioni "lente" senza inficiare la reattività del thread principale, ma nei PLC normalmente le operazioni lente (tipo accesso alla seriale) vengono già gestite a livello di sistema operativo ed il programmatore non si deve certo preoccupare della gestione corretta dei thread e degli eventuali sincronismi. Per questo dicevo che non ha molto senso porre il quesito in questo modo,
Livio Orsini Inserita: 24 giugno 2018 Segnala Inserita: 24 giugno 2018 1 ora fa, lucios scrisse: Vero, per questo penso che s_ricc con il termine "multitasking" si riferisca invece a "multithread", cioè alla possibilità di poter programmare, all'interno del programma utente, dei "pezzi di software" che vengono eseguiti appunto in thread dedicati in modo parallelo al thread principale, con il sistema operativo che schedula il tutto. In effetti quando, nel programma utente di un PLC, leghi l'esecuzione di alcuni jobs ad eventi di interrupts, siano eventi esterni o interni come clock di sistema, esegui un multithread, anche se non gestito da un apposoto schedulatore. A stretto rigor di termini l'esecuzione parallela, in assenza di multiprocessori nella CPU, non esiste; la si considera parallela solo perchè i tempi di intervallo sono trascurabili rispetto ai tempi di processo.
s_ricc Inserita: 26 giugno 2018 Autore Segnala Inserita: 26 giugno 2018 il 24/6/2018 at 11:02 , lucios scrisse: Vero, per questo penso che s_ricc con il termine "multitasking" si riferisca invece a "multithread", cioè alla possibilità di poter programmare, all'interno del programma utente, dei "pezzi di software" che vengono eseguiti appunto in thread dedicati in modo parallelo al thread principale, con il sistema operativo che schedula il tutto. Questo viene fatto nel mondo PC principalmente per poter eseguire operazioni "lente" senza inficiare la reattività del thread principale, ma nei PLC normalmente le operazioni lente (tipo accesso alla seriale) vengono già gestite a livello di sistema operativo ed il programmatore non si deve certo preoccupare della gestione corretta dei thread e degli eventuali sincronismi. Per questo dicevo che non ha molto senso porre il quesito in questo modo, Non sono io ad aver parlato di multitasking. La mia domanda era semplicemente sul linguaggio di programmazione, se esistessero o meno plc programmabili in c. Dalle risposte capisco che Beckhoff offre una valida soluzione. Grazie a tutti
leleviola Inserita: 26 giugno 2018 Segnala Inserita: 26 giugno 2018 Mi sembra che anche il più recente Mitsubishi iQ-R possa essere programmato in C++, tale informazione l'ho solo vista in catalogo-brochure del prodotto, questo il link http://www.mitsubishielectric.com/fa/products/cnt/plcr/pmerit/cpu/index.html
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora