Jump to content
PLC Forum


fiorezzz

Accesso a struct Bool come byte/word

Recommended Posts

fiorezzz

Salve a tutti

Mi capita di usare delle strutture di dati  Bool utilizzati al posto dei singoli Merker (tipo pippo.bit0 ..pippo.bit1 ..pippo.bit2 ecc. anzichè  M1.0 M1.1 M1.2

A volte oltre ad un accesso come bit mi interessa accedere come byte/word  (se fossero merker li raggrupperei tipo L MW1 ..L MB1 ecc)

Sia per leggere se tutti i bit  sono  a zero o impostarli tutti a zero  

Io non trovo di meglio che fare delle singole routine a cui passo la struct per poi azzerare o interrogare i singoli bit

Ci sono soluzioni ad accesso simbolico + furbo ? (non voglio utilizzare  riferimenti assoluti tramite i classici puntatori )  

Link to comment
Share on other sites


batta

Argomento ricorrente.
Dai un'occhiata alla "Sovrapposizione con AT" (se fai una ricerca nella guida in linea ti rimanda subito all'argomento) e alle istruzioni GATHER e SCATTER.
Personalmente preferisco usare gather e scatter, ma si tratta di scelte personali.

Link to comment
Share on other sites

acquaman
33 minuti fa, batta ha scritto:

Dai un'occhiata alla "Sovrapposizione con AT" (se fai una ricerca nella guida in linea ti rimanda subito all'argomento) e alle istruzioni GATHER e SCATTER.
Personalmente preferisco usare gather e scatter, ma si tratta di scelte personali.

Sul 300?

Link to comment
Share on other sites

fiorezzz

Sarei anche in ambiente TIA ..ma lavoro con una CPU ancora Step7 (un bel mix che mi confonde sempre le idee) e quindi molte funzionalità TIA CPU..1200/1500 non sono disponibili 

Link to comment
Share on other sites

acquaman
1 ora fa, fiorezzz ha scritto:

e quindi molte funzionalità TIA CPU..1200/1500 non sono disponibili 

Le funzionalità del 1200/1500 sul 300 non le hai, sia che usi li step7 o che usi il TIA.
Strutture di dati intendi DB, nel 300 anche le db hanno l'indirizzo, es DB1.DBX0.0 - 0.1 - 0.2......., e gli stessi bit si possono raggruppare a byte e a word come i merker, DB1.DBB0 per i byte e DB1.DBW0 per le word e DB1.DBD0 per le doppie word. 

Link to comment
Share on other sites

fiorezzz

OK Ma 

Ho una struct di BOOL  DB100.Pippo.M1 ..DB100.PIPPO.M2  ..o meglio db100.dbx0.1 Db100.dbx0.2 ..ma ci accedo appunto in modo simbolico DBnn.Pippo.M2 ..PIPPO.M1

quando in un solo colpo voglio azzerare la struct o verificare se qualche bit<>0 tipo L DB100.dbb0 o L0 T DB100.DBB0  ..ma in modo simbolico in TIA non posso scrivere
L DB100.PIPPO (e neanche in step7 ..) 
(Ps. sono in ambiente TIA ma non con CPU 1200/1500 ma ancora condizionato da CPU S7-300) 

Link to comment
Share on other sites

acquaman

Non puoi lavorare in simbolico, devi usare l'indirizzamento, DB100.dbb0.
Se usi il TIA ti esce un warning che la variabile non è assegnata ad un simbolico, ma è solo un warning.

Link to comment
Share on other sites

fiorezzz

Forse mi spiego male 

Sono con TIA e voglio usare simbolico (come prevede il TIA se possibile) ( ma non con CPU1200/1550 ma serie Step7) 

Avendo per comodità di scrittura/lettura codice una struct di Boolean (Potrei fare una struct di array ..ma il nome array[1]..array[0] ..è poco utile   e comodo) 

in alcuni momenti voglio resettare tutti i bit della struct o verificare se sono solo a zero ..mi sono fatto una routine a cui passo la struct che dimensiono sempre a 16bit 

e poi testo singoli bit per sapere se sono a zero o res singoli bit per azzerare tutto ..mi chiedevo se esisteva un modo migliore per farlo .

 

Link to comment
Share on other sites

acquaman

La caratteristica di usare il simbolico non è del TIA, ma del 1500/1200, se usi un 300 che lo programmo con il TIA o con lo step7 classic non cambia le funzioni che hai con un software le hai con l'altro e quello che non hai con uno non ce l'hai con l'altro.

L'unica cosa che cambia è l'ambiete di sviluppo.

Il 300 non prevedeva l'utilizzo del simbolico con lo step7 e non ha il simbolico con il TIA. Funzioni, simbolico ed altro non sono caratteristiche dell'ambiente di sviluppo ma del plc, se un plc non le ha, non le ha, qualunque ambiente di sviluppo usi.

Ricordati che stai usando un dispositivo nato ormai più di 25 anni fa se non di più non puoi pretendere di avere funzioni di un dispositivo attuale.

Edited by acquaman
Link to comment
Share on other sites

batta
Il 23/9/2021 alle 16:07 , acquaman ha scritto:

Sul 300?

Hai completamente ragione. Questa domanda, di solito, viene posta sui 1200/1500, e non mi sono accorto che si parla, invece, di 300.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...