Vai al contenuto
PLC Forum


Pulsanti campanello - Problemino Per Stuzzicare La Mente...


adb3s

Messaggi consigliati

Non sono un programmatore professionista, ma capita di fare qualche prg, anche abbastanza complesso.

Normalmente uso l'S7-200, ma questa volta mi ritrovo a dover rifare il sw di una macchina con tre assi che hanno il controllo di velocità e di coppia equipaggiata con un 313C.

Il sw attualmente in uso funziona, ma ha qualche problema secondario.

Il mio problema (credo sia banale...ma non ne salto fuori) è che se comando l'uscita analogica (coppia e velocità) solo con il segmento 1 tutto funziona (avanti e indietro). Se voglio invertire il moto abilitando anche il segmento2 non funziona più e mi gira sempre in una direzione (quella dell' ultimo "L").

Le righe seguenti chiariranno:

segmento 1

A "PULS_X1_PIU

L 5000

T "VEL_1"

L 5000

T "TRQ_1"

S "AZION_1"

segmento 2

A "PULS_X1_MENO"

L -5000

T "VEL_1"

L 5000

T "TRQ_1"

S "AZION_1"

segmento 3

AN "PULS_X1_PIU"

AN "PULS_X1_MENO"

R "AZION_1"

Nel programma esistente vengono usate le stesse tecniche, a parte l'= al posto di set e reset, il DB al posto di costanti.

Inoltre io richiamo la sub routine FC2 (che contiene i blocchi descritti) con CC mentre l'altro usa CALL.

Nell' s-200 c'è la funzione "MOV".

Nell' S-300 sono necessari "L" e "T" per fare la stessa cosa, giusto?

:) chi mi aiuta vince il peluche di cemento... a parte gli scherzi, grazie in anticipo

Modificato: da adb3s
Link al commento
Condividi su altri siti


Matteo Montanari

nel tuo caso, senza mettere nessuna condizione utilizzi sempre l'ultimo valore scritto nella variabile "VEL_1" che equivale a "-5000". devi comunicare al sistema di utilizzare il valore "5000" quando hai "PULS_X1_PIU" mentre quando hai "PULS_X1_MENO" deve utilizzare il valore "-5000".

utilizza il linguaggio a contatti (KOP), prova a convertire i segmenti seguenti e capirai come realizzare il tutto.

A "PULS_X1_PIU

SPBNB _000

L 5000

T "VEL_1"

_000: NOP 0

segmento 2

A "PULS_X1_MENO"

SPBNB _001

L -5000

T "VEL_1"

_001: NOP 0

segmento 3

A "PULS_X1_PIU

O "PULS_X1_MENO"

SPBNB _002

L 5000

T "TRQ_1"

_002: NOP 0

segmento 4

A(

A "PULS_X1_PIU

O "PULS_X1_MENO"

)

S "AZION_1"

A(

AN "PULS_X1_PIU"

AN "PULS_X1_MENO"

)

R "AZION_1"

prova a settare il linguaggio in tedesco o italiano A -> U quasi nessuno utilizza il formato inglese/americano

chi mi aiuta vince il peluche di cemento

puoi tenerlo tu...

Non sono un programmatore professionista

non è un problema

ma capita di fare qualche prg, anche abbastanza complesso

si cresce ad ogni piccolo passo.

Modificato: da keosmm
Link al commento
Condividi su altri siti

Ciao, L e T sono dei comandi assoluti :huh: , ovvero vengono eseguiti senza preoccuparsi della condizione che gli hai posto prima :angry: .

Per questo motivo devi mettere dei salti a delle etichette, come i ha suggerito keosmm. :P

Good Luck, Jake B)

Link al commento
Condividi su altri siti

adb3s visto che non sei un programmatore esperto (e questo in ogni caso non conta nulla) ti suggerisco di programmare in KOP e poi tradurre tutto in AWL così da capire meglio come lavora S7.

Se tu avessi scritto i tuoi tre segmenti in KOP non ci avresti "consultati" poichè i salti necessari per eseguire correttamente le tue istruzioni in AWL, vengono automaticamente generati in KOP il quale linguaggio sottintende già, nel solo "disegno", una sequenzialità delle istruzioni. Tu potrai seguirne il flusso molto chiaramente, quando ON-LINE, poichè si colora se l'istruzione viene eseguita o è semplicemente VERA.

Mi viene in mente anche un'altra cosa: nota bene che è sempre l'ultima istruzione quella che effettivamente darà il risultato finale, quindi fai bene attenzione e usa con parsimonia le istruzioni SET e RESET che spesso possono creare inconvenienti se agiscono su uno stesso bit in più parti nel programma. Alla stessa maniera si può ritenere identica l'istruzione MOVE (SET/RESET di più bit).

Consiglio sempre di scrivere, quanto più possibile, ciascun bit una volta sola in tutto il programma (anche solo per esercizio) utilizzando l'assegnazione "=" con relativa autoritenuta così da crearti da te le istruzioni S e R.

In questo modo sarai più che certo che il determinato bit verrà scritto solo in un punto del programma con minime probabilità di errore (e debug molto veloce).

Dal mio punto di vista ciò detto sopra non è una regola fissa, finchè si parla di bit in genere, ma deve essere praticamente obbligatorio per la gestione delle uscite.

Link al commento
Condividi su altri siti

  • 2 years later...

E' un problema che mi sono posto stamattina mentre aspettavo il bus, guardando due pulsanti di due campanelli civili... (lo so la mattina assonnato faccio brutti pensieri)

Ho 2 campanelli azionati dal loro rispettivo pulsante, se volessi , azionando un dispositivo (es. un deviatore o altro) che da quel momento suonino solo se si premono entrambe i pulsanti altrimenti niente , come potrei fare? Ho pensato ad un deviatore tra l'uscita del primo pulsante e l'ingresso del secondo , ma in quel caso il primo campanello suonerebbe comunque con il suo pulsante....

La soluzione deve essere il piu' possible semplice operativamente (cioe' per l'operatore che deve fare il cambio as esempio la sera)

Non mi prendete per matto ma mi e' sorto sto quesito stamattina e mi attanaglia.

Link al commento
Condividi su altri siti

Boh! certamente mettendo in serie i due pulsanti normalmente aperti che comandano i campanelli se non si pigiano contemporaneamente i campanelli non suonano ma la soluzione mi sembra piuttosto facile per cui evidentemente non ho capito bene il quesito.Ciao

Link al commento
Condividi su altri siti

non dirmi che di notte ti suonano il campanello e non riesci a dormire......... :rolleyes: :rolleyes:

Bhe non un paio di rele ed un selettore fai tutto.....un po di interblocchi...ma non so se cerchi qualcosa di gi commerciale....

ciao

Link al commento
Condividi su altri siti

non dirmi che di notte ti suonano il campanello e non riesci a dormire.........

:lol::lol: No!!!... :lol:

Mi e' venuto in mente stamattina sto problemino e mi ci stavo incartando... Della serie "tutti i riferimenti a fatti e persone e' puramente casuale"... Non e' un circuito che devo realizzare era solo un mio dubbio.

Boh! certamente mettendo in serie i due pulsanti normalmente aperti che comandano i campanelli se non si pigiano contemporaneamente i campanelli non suonano ma la soluzione mi sembra piuttosto facile per cui evidentemente non ho capito bene il quesito.Ciao

Infatti non e' cosi' semplice perche' normalmente ogni campanello dovrebbe funzionare con il solo proprio pulsante mentre nel momento in cui aziono il dispositivo da definire , i campanelli si azionano solo se premo entrambe i pulsanti

Link al commento
Condividi su altri siti

E' l'uovo di Colombo (non il tenente).

Ecco lo schemino.... mi spiace averlo realizzato con Paint ma qui non ho altro installato. Gli interuttori dei campanelli sono in realtà pulsanti, ma il simbolo era complesso da realizzare con paint.

campanelowx0.gif

Link al commento
Condividi su altri siti

Non avevo capito cosa intendessi.

Però mi sorge un dubbio "logico".... durante il comportamento normale suonano "normalmente", ma durante il funzionamento particolare suonano assieme (sarebbe impossibile che non lo facessero) ??? Secondo me non ha senso !

Link al commento
Condividi su altri siti

Si suonano insieme, praticamente premendo uno dei due pulsanti non succede nulla , premendoli insieme suonano entrambe i campanelli.

Se mi ritenete matto :blink: non assecondatemi!!! :lol:

Link al commento
Condividi su altri siti

Pare a me o così può funzionare?

A parte le posizioni sul disegno, ho inserito un invertitore e in deviatore "accoppiati", nel senso che DEVONO muoversi insieme.

Tipo un copritasto doppio con sotto inv e dev affiancati.

Se vanno ognuno per conto loro non rispondo delle conseguenze... :)

c'è da girare un po' coi fili, però...

PS: nell'immagine è tutta fase, il neutro non l'ho messo per niente.

http://img401.imageshack.us/my.php?image=invdevqh8.jpg

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