Vai al contenuto
PLC Forum


Operazioni shift e rotazione


Messaggi consigliati

Inserito:

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.


Inserita:

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

Inserita:

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

Inserita:

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

Inserita:

Grazie mille per questo utile FB tra poco programma e ti faccio sapere.

  • 2 weeks later...
Inserita:

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

Inserita:

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

 

Inserita:

Grazie mille vi faccio sapere come si comporta il programma

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