Vai al contenuto
PLC Forum


Ingressi digitali come numero binario


Messaggi consigliati

Inserita:
15 hours ago, leleviola said:

Beh confronto al 1200 era un giocattolino ma per il tempo in cui uscì il Texas non era affatto male e ha tirato avanti dignitosamente un bel po', i Texas non li ho mai avuto sottomano i 200 invece dai primi anni 20

Elsist è un valido prodotto poi il sig Cotoia è molto disponibile.. non essendo un grande marchio internazionale però ha supporto ottimo !!!


Inserita:

Per fsvore non quotare l'intero messaggio perchè in questo modo la discussione diventa illeggibile; limita la quotatura ad una frase significativa.

Inserita:

 

1 ora fa, Livio Orsini ha scritto:

non quotare l'intero messaggio

Chiedo scusa. Sono un principiante anche in questo. Spero di imparare presto.

Inserita:
LD     V0.0        //Caso 1
MOVB   IB0, VB30
LDB=   VB30, 20
=      V40.0
LD     V0.1        //Caso 2
MOVB   IB0, VB30
LDB=   VB30, 12
=      V40.1
LD     V0.2        //Caso 3
MOVB   IB0, VB30
LDB=   VB30, 18
=      V40.2
LD     V0.3        //Caso 4
MOVB   IB0, VB30
LDB=   VB30, 10
=      V40.3

NETWORK 4       //Attivazione uscita Q0.5 se configurazione byte corretta solo su ogni caso
LD     V40.0
A      V0.0
=      V50.0
LD     V40.1
A      V0.1
=      V50.1
LD     V40.2
A      V0.2
=      V50.2
LD     V40.3
A      V0.3
=      V50.3

LD     V50.0
O      V50.1
O      V50.2
O      V50.3
=      Q0.5

 

Questo è come ho risolto il problema alla fine. Così funziona, anche se forse un po' contorto come codice.

Immagino vi siano soluzioni migliori.

Caso 1, Caso 2, Caso 3 e Caso 4 vanno a 1 quando nel resto del programma si entra nelle dovute condizioni.

Nel caso sapete indicarmi una soluzione più da programmatore? Così magari imparo qualcosa.

Comunque sia i vostri cosnigli sono stati preziosi.

 

Inserita:

A parte essere piuttosto contorto, è anche sbagliato, perché non tieni conto dello stato che potrebbero assumere gli ingressi I0.5, I0.6, I0.7.

Prova così:

// Segmento 1: Lettura e mascheramento byte ingressi IB0
LD     SM0.0
MOVB   IB0, VB30
ANDB   2#11111, VB30

// SEgmento 2: Attivazione uscita
LD     V0.0
AB=    VB30, 2#10100
LD     V0.1
AB=    VB30, 2#1100
OLD
LD     V0.2
AB=    VB30, 2#10010
OLD
LD     V0.3
AB=    VB30, 2#1010
OLD
=      Q0.5

Che poi, per quanto io sia abituato ad usare molto AWL con S7-300, trovo l'AWL del 200 poco intuitivo, e mi pare più chiaro così:

immagine.png.bcda366ee12c5689fc0d2ecc1943d4f5.png

Inserita:
26 minuti fa, batta ha scritto:

è anche sbagliato, perché non tieni conto dello stato che potrebbero assumere gli ingressi I0.5, I0.6, I0.7

Ti ringrazio per il consiglio.

Non è sbagliato perché al momento gli ingressi I0.5, I0.6 e I0.7 non sono utilizzati e quindi sempre a 0, perciò avevo omesso quella parte, ma la tua considerazione è giusta per un eventuale uso futuro di questi e comunque certamente sempre consigliabile.

Il tuo codice è sicuramente più snello e leggibile e Lunedì lo proverò cercando di capire le istruzioni e la logica che hai usato.

E' un modo per imparare qualche buona tecnica.

Grazie ancora e buon fine settimana a tutti.

Inserita:
Il 17/4/2020 alle 18:03 , batta ha scritto:

ANDB 2#11111, VB30

Grazie mille.

Ho provato la tua tecnica e funziona a perfezione ed ho anche messo il mascheramento dei bit per IB0 come hai suggerito e realizzato.

A proposito di questo volevo chiederti perché nel mio Micro/WIN versione 3.1, i binari mi vengono automaticamente trasformati in esadecimali sul listato.

2#11111 diventa in automatico 16#1F. Questo mi causa una leggibilità peggiore del mio software.

C'è un modo per farlo lasciare in binario?

Inserita:
33 minuti fa, borisiano ha scritto:

C'è un modo per farlo lasciare in binario?

Non ne ho idea. Io ho la versione 4.09, non so come si comporti la 3.1.

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