Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Dichiarazione variabili in CoDeSys

PLC, servomotori, inverter...robot

Moderatori: Foto Utentedimaios, Foto Utentecarlomariamanenti

0
voti

[1] Dichiarazione variabili in CoDeSys

Messaggioda Foto UtenteCandy » 2 nov 2012, 17:29

La seguente dichiarazione è corretta:
Codice: Seleziona tutto
VAR_GLOBAL
   dwGvar1         AT %MD0         : DWORD;
   bGbit1          AT %MX0.0          : BOOL ;
END_VAR

Il bit bGbit1 è parte della variabile dwGvar1.
Mentre invece io sto tentando di fare qualcosa di diverso, ovvero dichiarare variabili senza allocazione specifica, così:
Codice: Seleziona tutto
VAR_GLOBAL
   dwGvar1                     : DWORD;
   bGbit1          AT dwGvar1          : BOOL ;
END_VAR

Ma il compilatore si rivolta e borbotta parecchio.

Il compilatore SCL di Siemens invece accetta questa forma:
Codice: Seleziona tutto
VAR_GLOBAL
   dwGvar1                       : DWORD;
   bGbits        AT dwGvar1 : ARRAY[0..31] OF BOOL ;
END_VAR

Che è meglio di niente. Ma CoDeSys nemmeno questa.

Risulta possibile dichiarare sia la variabile numerica, sia i singoli bit, con relativi nomi simbolici, senza specificarne l'allocazione? In che forma?
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10129
Iscritto il: 14 giu 2010, 22:54

0
voti

[2] Re: Dichiarazione variabili in CoDeSys

Messaggioda Foto UtenteAOX » 3 nov 2012, 16:59

Sembra che le variabili allocate dal compilatore siano meno accessibili di quelle dichiarate in posizione assoluta nella ram. Una domanda simile l'avevo già posta su questo forum. In C come fai a gestire il singolo bit di una variabile? Penso con le maschere e le operazioni logiche sulle word. Con lo stesso principio in CoDeSys hanno messo in libreria delle funzioni di manipolazione dei bit delle variabili.
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29

0
voti

[3] Re: Dichiarazione variabili in CoDeSys

Messaggioda Foto UtenteCandy » 3 nov 2012, 18:17

Si serto, me ne sono scritte anche io di simili funzioni. Ma, certo, un'istruzione orientata a bit è ben più veloce di una funzione con loop e maschere varie.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10129
Iscritto il: 14 giu 2010, 22:54

0
voti

[4] Re: Dichiarazione variabili in CoDeSys

Messaggioda Foto UtenteAOX » 3 nov 2012, 20:07

Immagino che avrai già letto questa pagina dell'help online:
Codesys_bitadd.pdf
(10.16 KiB) Scaricato 319 volte
(manca l'ultima immagine). Questo sembra che sia il massimo delle possibilità sull'argomento.
La gestione mista a bit e byte è possibile se usi la memoria tipo M con indirizzamento assoluto che rispetto alle variabili dichiarate in testa al listato (e allocate dal compilatore dove gli fa comodo) richiedono di definire la posizione fisica nello spazio M.
Nei PLC, almeno tempo fa, mi sembra che le memorie fossero già tutte predefinite come allocazione, mentre la dichiarazione tipica di un linguaggio ad alto livello come il Basic o il C ne ha ereditato anche gli stessi limiti. Addirittura la variabile booleana in C alla fine è un byte intero. D'altra parte un processore non penso faccia prima a gestire un valore booleano lavorando su un singolo bit di un byte e alla fine impaccare 8 variabili booleane in un byte sarebbe una bella strozzatura per un compilatore.
Comunque se scopri qualche cosa mi interessa visto che mi capita spesso di ricevere una domanda come questa.
Avatar utente
Foto UtenteAOX
3.555 2 6 11
Master EY
Master EY
 
Messaggi: 232
Iscritto il: 20 mar 2011, 12:29


Torna a Automazione industriale ed azionamenti

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti