Vai al contenuto
PLC Forum


Siemens Serie Delta


barbato giuseppe

Messaggi consigliati

barbato giuseppe

salve!

dovrei modificare un quadro senza troppo stravisarlo .

su un byte di ingresso ho due selettori a 4 posizioni (uno per una linea e l'altro per un'altra linea),parliiamo di un solo selettore.

il selettore mi dava la possibilità di gestire una linea in 4 modalità diverse scegliendo ad uno aud uno gli ingressi.

le cose sono cambiate e dovrei dare la possibilità alla linea di lavorare in 8-9 modalità diverse.

i colleghi hanno comprato dei selettori a codifica BCD .

posso montare 2 selettori BCD su un byte di ingresso e come faccio da programma a scegliere i quattro bit che mi servono per ogni linea?

l'istruzione l eb 0

itb

t mb 100 è errata ?

anche perchè dovrei fare dei confronti

vi ringrazio in aticipo

Link al commento
Condividi su altri siti


Ciao Peppe, prova questo:

 
      L     EW     1                    // Legge lo stato della input word 1 (input byte 1 + input byte 2)
      L     2#1111                      //Carica il valore bianrio con TRUE solo nei primi 4 bit del primo byte
      UW                                //Esegue l'and tra la word ingresso ed il valore binario
      T     MW    10                    //Trasferisce il risultato dell'operazione nella word 10 

      L     EW     1                    // Legge lo stato della input word 1 (input byte 1 + input byte 2)
      L     2#11110000                  //Carica il valore bianrio con TRUE solo gli ultim 4 bit del primo byte
      UW                                //Esegue l'and tra la word ingresso ed il valore binario
      T     MW    12                    //Trasferisce il risultato dell'operazione nella word 12

Dovrebbe funzionare così , lo stato del primo bite della word ingressi canale 1 , mascherato (solo lo stato dei primi 4 bit) si trova nella MW10

lo stato del primo bite della word ingressi canale 1 , mascherato (solo lo stato degli ultimi 4 bit) si trova nella MW12.

Ciao

Ivan

Link al commento
Condividi su altri siti

barbato giuseppe

forse non mi sono spiegato o non mi sono fatto capire

devo codificare su 8 ingressi 4 bit in bcd per una linea e altri 4 bit in bcd per l'altra linea

Link al commento
Condividi su altri siti

Ciao Peppe , m i sembra che tu ti sia spiegato bene, alla tua domanda:

a me servono 4 bit alla volta per ogni byte di ingresso

Il codice che ti ho postato, esegue la mascheratura a 4 bit della word (perche le operazioni logiche a bit del 300 sono solo a word).

Poi prendi il valore contenuto nella MW10 o MW 12 ed esegui la conversione da BCD ad intero.

L MW12 //carica il valore della MW10
ITB       //converte da BCD ad intero
TMW12  //scrive il risultato della conversione in MW10

Nella word 12 troverai il risultato convertito in intero del codice BCD degli ultimii 4 BIT del primo byte della input word 1 che ti dato di esempio.

Ciao

Ivan

Modificato: da kamikaze
Link al commento
Condividi su altri siti

Supponiamo che tu abbia cablato i tuoi ingressi come segue:

- prima cifra BCD su ingressi E0.0-E0.1-E0.2-E0.3

- seconda cifra BCD su ingressi E0.4-E0.5-E0.6-E0.7

Potresti risolvere il problema nel seguente modo:

Per poter convertire da BCD a INT il valore codificato negli ingressi da E0.0 a E0.3 devi mascherare gli ingressi da E0.4 a E0.7.

Per fare ciò esegui un AND tra il byte EB0 ed il valore esadecimale "F", che in binario è "0000 1111".

Poi converti da BCD a INT. Il risultato, da 0 a 9, lo puoi scrivere in un solo byte.

      L     EB     0                    //Carica byte ingressi EB0
      L     B#16#F                      //Maschera per eliminare ingressi da E0.4 a E0.7
      UW    
      BTI                               //Converte da BCD a INT
      T     MB   100                    //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.0 ad E0.3
Per poter convertire da BCD a INT il valore codificato negli ingressi da E4.0 a E0.7 devi eliminare gli ingressi da E0.0 a E0.3. Per fare ciò esegui uno shift a destra di 4 bit. I 4 bit meno significativi andranno persi, ed al loro posto ti troverai lo stato degli ingressi da E0.4 a E0.7 Poi converti da BCD a INT. Il risultato, da 0 a 9, lo puoi scrivere in un solo byte.
      L     EB     0                    //Carica byte ingressi EB0
      SRW   4                           //Shift a dx di 4 bit. Da E0.0 a E0.3 vanno persi e rimangono da E0.4 a E0.7
      BTI                               //Converte da BCD a INT
      T     MB   101                    //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.4 ad E0.7

Link al commento
Condividi su altri siti

barbato giuseppe

salve

l'ultimo esempio di Batta funziona ma io nel frattempo avevo provato così

allego file

ditemi se va bene anche così

Link al commento
Condividi su altri siti

Il tuo metodo funziona, ma direi che si può migliorare.

Se proprio vuoi costruire la codifica dei 4 ingressi, potresti fare così:

      L     0
      UN    E      0.0
      SPB   _001
      +     1
_001: UN    E      0.1
      SPB   _002
      +     2
_002: UN    E      0.2
      SPB   _003
      +     4
_003: UN    E      0.3
      SPB   _004
      +     8
_004: T     MB   200
In questo modo con poche e semplici istruzioni converti i 4 ingressi in esadecimale, con valore da 0Hex a FHex (0-15 in decimale). Altro metodo:
      U     E      0.0
      =     M    200.0
      U     E      0.1
      =     M    200.1
      U     E      0.2
      =     M    200.2
      U     E      0.3
      =     M    200.3

Alla fine in MB200 trovi un valore da 0 a 15 (in decimale). Ovviamente i merker M200.4-M200.5-M200.6-M200.7 non li puoi usare per altri scopi, e devono tassativamente essere a zero.

Link al commento
Condividi su altri siti

      L     EB     0                    //Carica byte ingressi EB0
      L     B#16#F                      //Maschera per eliminare ingressi da E0.4 a E0.7
      UW    
      BTI                               //Converte da BCD a INT
      T     MB   100                    //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.0 ad E0.3
      L     EB     0                    //Carica byte ingressi EB0
      SRW   4                           //Shift a dx di 4 bit. Da E0.0 a E0.3 vanno persi e rimangono da E0.4 a E0.7
      BTI                               //Converte da BCD a INT
      T     MB   101                    //Trasferisci in MB100 valore da 0 a 9 codificato in ingressi da E0.4 ad E0.7

Puoi anche togliere le istruzioni BTI perchè su soli 4 bit la codifica BCD e binaria si equivalgono.

Link al commento
Condividi su altri siti

  • 1 year later...

Ciao a tutti... ho comprato da un negozio che chiudeva una certa quantita' di placche , deviatori e prese della serie Delta della Siemens.Non riesco a trovare i supporti..mi hanno detto che ormai e' una serie fuori produzione..Vorrei saperne di piu' e se almeno le placche si possono utilizzare per qualche altra serie di altra marca.

Vi ringrazio in anticipo..Ciao

Link al commento
Condividi su altri siti

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