Vai al contenuto
PLC Forum


Operazioni shift e rotazione


lele1975

Messaggi consigliati

Ciao ragazzi del forum, sono in fase di programmazione con un vecchio PLC Siemens simatic S5-100U cpu 103 e volevo utilizzare la funzione shift.

Dal manuale seguo le istruzioni SHIFT+F3 (sposta) e qui dovrebbero comparire tutte le operazioni, nel mio caso F1  (SRW) ma il menù compare vuoto senza operazioni, premendo F1 il programma dice "funzione non consentita".

Uso lo Step5/ST versione 7.23 potete gentilmente aiutarmi a capire cosa c'è che non funziona?

Devo inserire un pacchetto supplementare per utilizzare le operazioni avanzate in step5?

Stranamente le operazioni aritmetiche ci sono tutte....

Ciao grazie a tutti.

Link al commento
Condividi su altri siti


Assicurati di aver impostata la modalità [RW] nella shermata iniziale del progetto

Le istruzioni di shift funzionano entro un FB non in OB o PB

Link al commento
Condividi su altri siti

Grazie mille rguaresc.

Non ho mai editato un FB in step5 e non saprei da dove iniziare, puoi darmi qualche suggerimento?

Il mio progetto fa quanto segue: ingresso E0.0    Byte MB100

fronte in salita di e0.0 allora OR tra MB100 e 2#100 e mi colloca il risultato in MB100

Fronte in discesa di E0.0 shift a destra di 1 del mio MB100

Questo è quanto devo realizzare, con step7 e codesys uso spesso questo sistema di memorizzazione per tavole rotanti ma in step5 non l'ho mai fatto.

Ringrazio tutti per l'aiuto

Link al commento
Condividi su altri siti

Non c'è la funzione di rilevamento di fronte in S5 bisogna costruirsela.

Verifica la word binaria KM 00000000 00000100 è possibile che si debba scrivere con i byte scambiati KM 00000100  00000000

poi chiama la FB1 da OB1 con 

SPA FB1

/////////////////////////////////////////////////////////

 

esempio   FB1

Segmento 1

Nome :TEST ; qualsiasi nome

     // la seconda riga SGOP non serve, passare alla terza

:U E 0.0

:UN M 10.6 ; un merker libero

:= M 10.0 ; fronte di salita

:U E 0.0

:= M 10.6

:

:UN E 0.0

:UN M 10.7 ; merker libero

:= M 10.1 ; fronte di discesa

:UN E 0.0

:= M 10.7

:

:UN M 10.0 ; salta se non fronte salita

:SPB =UNO

:L MB 100 ; altrimenti carica MB100

:L KM 00000000 00000100 ;verificare con i byte scambiati

:OW ; or a word

:T MB 100 ; salva

UNO :UN M 10.1 ; salta se non fronte discesa

:SPB =DUE

:L MB 100

:SRW 1

:T MB 100

DUE :NOP 0

:BE

Link al commento
Condividi su altri siti

  • 2 weeks later...

ciao ragazzi ciao rguaresc ho provato l'esempio sopra citato FB 1 ma non funziona correttamente(ho provato anche a scambiare l'ordine dei byte) ma quando lo testo il mio bit M100.0 si alza anche quando non dovrebbe , vi scrivo il mio programma in Step7 funzionante:

 

LD I 0.0                             ingresso sensore

AB>= VB100 , 45              camma elettronica di lettura e VB100 rappresenta il valore attuale dell'encoder

AB<= VB100 , 70              camma elettronica di letture e VB100 rappresenta il valore attuale dell'encoder

ORB 4, VB1293                 se il sensore è on ed è in camma combino OR tra i due ingressi : #100 e VB1293 e carico il risultato sempre in VB1293

 

LDB>= VB100 , 45            camma elettronica

AB<= VB100 , 70              camma elettronica

ED                                     fronte di discesa

SRB VB1293 , 1                ogni volta che ho il fronte di discesa della camma faccio scorrere il byte VB1293 verso desta con valore di scorrimento 1

 

Forse è identico all'esempio di rguaresc ma allora perché non funziona ?

grazie infinite a tutti

Link al commento
Condividi su altri siti

post #3

fronte in salita di E0.0 allora OR tra MB100 e 2#100 e mi colloca il risultato in MB100

 

post #6

non fai uso del fronte di salita, LD I0.0 è solo una interrogazione che in step 5 diventa U E 0.0

prova a rimuovere il fronte di salita. Inoltre il fronte di discesa è elaborato dopo una catena di confronti oltre all'interrogazione dell'ingresso

 

le operazioni di confronto in step 5 non sono condizionate dall'interrogazione dell'ingresso come, invece, in step 7 microwin

 

Quote

:UN E 0.0

:UN M 10.7 ; merker libero

:= M 10.1 ; fronte di discesa

:UN E 0.0

:= M 10.7

:

::L MB 100 ;  carica MB100

:L KM 00000000 00000100 ;verificare con i byte scambiati

:OW ; or a word

:T MB 100 ; salva

UNO :UN M 10.1 ; salta se non fronte discesa

:SPB =DUE

:L MB 100

:SRW 1

:T MB 100

DUE :NOP 0

 

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