Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

How to?: Creare una libreria in Codesys

PLC, servomotori, inverter...robot

Moderatori: Foto Utentedimaios, Foto Utentecarlomariamanenti

4
voti

[11] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto UtenteCandy » 5 nov 2014, 23:12

Foto Utentemarej89

Preparo una struttura dati che servirà ad interconnettere la funzione di libreria col programma:
1.png
1.png (6.89 KiB) Osservato 3972 volte


Dichiaro le variabili globali:
3.png
3.png (10.3 KiB) Osservato 3972 volte


Scrivo la funzione segretissima, che sarà una libreria compilata e criptata con password, con i link che mi interessano al programma:
2.png
2.png (9.72 KiB) Osservato 3972 volte


All'interno del programma utente dichiaro i vari link ed eseguo il richiamo della libreria:
4.png
4.png (11.6 KiB) Osservato 3972 volte


Richiamo dal main:
5.png
5.png (5.51 KiB) Osservato 3972 volte


Ed eseguo. Ecco il risultato ottenuto sulle variabili globali:
6.png
6.png (9.63 KiB) Osservato 3972 volte
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

1
voti

[12] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto Utentemarej89 » 6 nov 2014, 9:29

Eccezionale, grazie =D>
Se avessi qualche problema mi permetto ancora di scrivere. :ok:
Avatar utente
Foto Utentemarej89
10 1 2
 
Messaggi: 24
Iscritto il: 26 apr 2013, 12:12

1
voti

[13] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto UtenteCandy » 6 nov 2014, 14:28

No, diciamo che puoi collaborare attivamente al forum e quando anche tu vorrai discutere dei tuoi problemi troverai spazio per farlo.

... Detta così, sembra una intimidazione. Allora, fai come puoi, e non omettere di contraccambiare.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

0
voti

[14] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto Utentemarej89 » 6 nov 2014, 16:54

Ovviamente parlavo di questo singolo problema in Codesys,
per il resto certo che inizierò a far parte attivamente al forum.
Avatar utente
Foto Utentemarej89
10 1 2
 
Messaggi: 24
Iscritto il: 26 apr 2013, 12:12

3
voti

[15] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto UtenteCandy » 7 nov 2014, 0:02

Completo l'intervento, visto che nel thread ho partecipato in modo attivo, solo aggiungendo un avvertimento.

Sono sato abbastanza pesante nell'ultimo mio esempio postanto. Pesante, andando a pescare ed impiegare l'uso dei puntatori. Non voglio scrivere ora di non usarli, ma, forse non siamo più abituati causa i molti controlli di altri compilatori moderni. In CoDeSys i puntatori sono abbastanza grezzi e poco controllati in fase di compilazione. Vanno usati con cautela. Non omessi, ma occorre usare prudenza, codice di controllo ulteriore e, quindi usarli con criterio per non scrivere programmi tropo prolissi. Perché?

L'esempio che ho fatto in precedenza è corretto da un punto di vista logico, ma errato da un punto di vista informatico. Nella funzione "F_SecretKnowHow" ho utilizzato i puntatori senza MAI controllare se questi erano stati dichiarati. E' un errore gravissimo, perché, nel caso di un puntatore non dichiarato, come minimo si manda in STOP il PLC, (ammattendo poi a cercare l'origine del problema), peggio, si possono andare a toccare e sporcare altri dati, in modo pericolosissimo.

Quando si passa un puntatore ad una funzione, ancor più in una libreria che finirà nelle mani di chissa chi, per ogni puntatore, prima di usarlo, si deve controllare che esista, (non sia nullo), e che magari rientri entro talune condizioni. Il codice della funzione diventa quindi più corposo. Sia aggiungono istruzioni per controlalre un puntatore. Se si voleva risparmiare risorse usando i puntatori per variabili "piccole", se ne sprecano poi di più, per controllare il puntatore stesso.

Ma, ancora peggio: (prendo come esempio sempre il mio lavoro al post [13], notiamo la figura 2.png. verso il c'è la seguente riga:
Codice: Seleziona tutto
F_SecretKnowHow := l.pElink1^ * c;

Se tutto quello che ho scritto prima ha un senso, allora questa riga è gravemente sbagliata. Non solo non si verifica che il puntatore l.pElink1 sia valido, ma, qualora non lo fosse, non ci sarebbe modo di risolvere il calcolo, utile poi per la return della funzione. Quindi, semmai, il risultato memorizzato in l.pElink1^ andava memorizzato in una variabile locale, per essere riutilizzato localmente, e poi copiato anche sulla variabile esterna, puntata.

Tutto questo per dire, infine, che di fronte a programmi PLC semplici, che non facciano uso di buffer dati voluminosi, l'uso dei puntatori può essere scoraggiante e inutilmente perisoloso o pesante.

Non mi dilungo oltre. Spero solo di avere arricchito meglio il thread che mi sembrava incompleto senza questo approfondimento.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

1
voti

[16] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto Utentecarlomariamanenti » 7 nov 2014, 16:25

quotomauro.gif
quotomauro.gif (2.62 KiB) Osservato 3896 volte
Avatar utente
Foto Utentecarlomariamanenti
60,1k 6 11 13
G.Master EY
G.Master EY
 
Messaggi: 4324
Iscritto il: 18 gen 2012, 10:44

0
voti

[17] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto Utentemarej89 » 7 nov 2014, 17:59

Foto UtenteCandy A costo di apparire una capra,
mi dici dove è l'errore? E in caso come risolvere?



Dichiaro le variabili globali:

global.PNG


Prima POU

somma1.PNG


Seconda POU

somma2.png
Avatar utente
Foto Utentemarej89
10 1 2
 
Messaggi: 24
Iscritto il: 26 apr 2013, 12:12

0
voti

[18] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto Utentemarej89 » 7 nov 2014, 18:06

Link alle variabili, più I/O per l'utente esterno quando salverò tutto come libreria

user.PNG


Prova funzionante

risultato.PNG


Mentre se salvo quanto visto come libreria, la inserisco in un progetto vuoto e uso lo user_main
non funziona nulla.

prova lib.PNG


Dove sbaglio?

Mi scuso se forse sono stato troppo sintetico, ma la pochezza del programma credo lo rende leggibile ,
ed anche cosa vorrei fare.
Avatar utente
Foto Utentemarej89
10 1 2
 
Messaggi: 24
Iscritto il: 26 apr 2013, 12:12

0
voti

[19] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto UtenteCandy » 7 nov 2014, 18:52

Posta il programma, che facciamo prima. Ma da ora ai prossimi dieci giorni, sono più che impegnato. Di +++.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

0
voti

[20] Re: How to?: Creare una libreria in Codesys

Messaggioda Foto Utentemarej89 » 7 nov 2014, 20:02

Non c'è altro nel programma
Avatar utente
Foto Utentemarej89
10 1 2
 
Messaggi: 24
Iscritto il: 26 apr 2013, 12:12

PrecedenteProssimo

Torna a Automazione industriale ed azionamenti

Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti