Vai al contenuto
PLC Forum


linguaggio strutturato : differenza di istruzioni


The Running Man

Messaggi consigliati

The Running Man

Cosa cambia effettivamente usando queste due istruzioni, all'atto pratico è come fare SET e RESET in entrambi i casi

 1)

 MOTOR S: START;

 MOTOR R:STOP;

 

oppure

2)

IF START THEN

MOTOR := TRUE ;

END_IF

 

IF STOP THEN

MOTORE :=FALSE;

END_IF

 

 

Grazie a tutti

Link al commento
Condividi su altri siti


The Running Man

ho usato usato il linguaggio ST su una piattaforma CODESYS, mi risualtano entrambi scritti nella maniera corretta ( manca ovviamente la parte di dichiarazione delle variabili) e

funzionano nella stessa maniera, ma mi chiedo cosa cambia effettivamente tra una e l'altra opzione

Link al commento
Condividi su altri siti

Personalmente, non mi sono mai imbattuto in un sistema che, in strutturato, accetti una scrittura del tipo:

MOTOR S: START;

 

Link al commento
Condividi su altri siti

Quote

ho usato usato il linguaggio ST su una piattaforma CODESYS, mi risualtano entrambi scritti nella maniera corretta ( manca ovviamente la parte di dichiarazione delle variabili) e

funzionano nella stessa maniera, ma mi chiedo cosa cambia effettivamente tra una e l'altra opzione

 

Ho usato in passato SoMachine di Schneider Electric e,programmando in ST , confermo che entrambi i metodi producono lo stesso effetto. La sintassi è esatta in entrambi i casi(anche se la nr 1 ammetto sia insolita ..ma esatta).

 

La differenza fra le 2 credo la faccia il tempo di esecuzione (ma potrei sbagliarmi, dipende sempre da come il software traduce il listato in linguaggio macchina) a favore del primo sistema. Usando l'IF solitamente vengono tirati in ballo JUMP che altrimenti non sarebbero usati.

 

ethgetrtgy.png.618f813ba3e00ca6705ad495dcadf516.png

 

Per dire, questo quello che viene tradotto usando GxWorks2 di Mitsubishi( non codesys) per fare il SET e RESET del bit M0, nei 2 sistemi. Le prime 4 righe sono relative al sistema nr 1, il resto al sistema nr 2. Sono 4 righe contro 10...e se il programma è di una certa entità la differenza in esecuzione potrebbe non essere cosi trascurabile.

Link al commento
Condividi su altri siti

Ma non ce la fai a dire la tua senza le battutine ? 

 

Quote

come ho già detto prima possiamo essere, anzi lo dobbiamo, tolleranti sulle espressioni linguistiche

 

Quote

dite che la forma < MOTOR S: START;  > è coretta

 

Ti eri buttato avanti?

 

Quote

poi pubblicate il listato dove si legge tutt'altra cosa

 

Cioè? 

 

Comunque se ti riferisci al fatto che la forma corretta della prima opzione è :

 

Motore S = Motor_start; 
Motore R = Motor_Stop; 

 

E non: 

 

Motore S: Motor_start; 
Motore R: Motor_Stop; 

 

hai ragione , è stata solo una svista.Mi sto già versando l'olio bollente giu per la schiena per penitenza.

 

Quote

è più efficente sul piano concettuale della seconda

 

ma perchè io cosa avevo detto?

 

 

 

Link al commento
Condividi su altri siti

Oh ma che ti gira male stasera? Mestruazioni? Coronavirus? 🙁
 

So perfettamente la differenza tra uguaglianza e assegnazione, ma sono sempre disposto ad imparare. Se ne sai più di me , illuminami. Ma per favore, senza battutine da 3a elementare grazie. 

Come dicevo è stata una svista, come lo è stata probabilmente per l’autore del post. Ma tu continui con i tuoi interventi da zitella acida. 

 

Invece di prendere per i fondelli, perchè non ci investi col tuo sapere? 

Link al commento
Condividi su altri siti

Livio Orsini

Se la discussione coninuasse con questo tono sarei costretto a chiuderla e, nel caso, anche a prendere qualche altro provvedimento regolamentare.

Link al commento
Condividi su altri siti

Sono calmissimo😊. Ma se ho scritto qualcosa di sbagliato mi piacerebbe saperlo, senza inutili giri di parole. 
Chiedo scusa se ho alzato i toni. 

Link al commento
Condividi su altri siti

The Running Man

Scusate , ma non pensavo di causare tutto questo flame

 

Comunque c'è un errore mio di trascrizione nel primo post, di seguito metto la versione corretta.

 

MOTOR S= START;

MOTOR R=STOP;

 

Confermo che questa versione mi viene accettata dal codesys senza problemi.

18 ore fa, batta ha scritto:

Personalmente, non mi sono mai imbattuto in un sistema che, in strutturato, accetti una scrittura del tipo:

MOTOR S: START;

 

 

Errore mio di trascrizione, scusami, ecco quella corretta

 

MOTOR S= START;

 

 

Link al commento
Condividi su altri siti

The Running Man
12 ore fa, Yiogo ha scritto:

comincia a distinguere le ugualianze dalle assegnazioni, poi andiamo avanti

 

Posso chiederti se potresti spiegarmi esattamente questo concetto ? ti ringrazio

Link al commento
Condividi su altri siti

Come dicevo qualche post fa, usando SoMachine di Schneider Electric la sintassi 

Motor S = Start

è esatta , non da errori jn compilazione e funziona. Questo in SoMachine come dicevo! Il resto non so. 

Link al commento
Condividi su altri siti

@Yiogo meno male sono riuscito a spiegarmi, ora capisci perchè dicevo che è una sintassi un po insolita? Tanto che ogni volta che devo usarla in compilazione mi da errore perchè tendo sempre ad usare l’assegnazione classica := , mentre va usato solo S =.

Sembra una uguaglianza ma non lo è, se dici che in Codesys classico non funziona significa che probabilmente è una sintassi proprietaria Schneider. 
 

Per dovere di cronaca, tengo a precisare che anche l’istruzione di set e reset di cui parlavo sopra di Mitsubishi è scritta in modo corretta , cioè:

 

SET( “quello che scatena il Set”    ,     “ quello che vuoi Settare); 

 

Naturalmente ”quello che scatena il Set” può essere anche una combinazione complicatissima di bit,confronti fra interi o altro per esempio… L’importante è naturalmente è che il risultato finale dia come uscita un dato di tipo bool(vero o falso). 
Tanto che in ST di Mitsubishi scrivere :

 

IF Start Then 

  Motore:= True; 

End_if;

 

oppure: 

 

SET( Start , Motore); 

 

è la stessa identica cosa . 
esattamente come lo è scrivere: 

 

Motore := True; 

 

e

 

SET ( True , Motore ); 

 

per alzare incondizionatamente un bit. 

 

Con le dovute cautele e attenzioni si potrebbe scrivere anche

 

OUT( True , Motore) ; 

OUT(False , Motore) ;
 

ma è una sintassi che non uso mai. 

 

Link al commento
Condividi su altri siti

51 minuti fa, step-80 ha scritto:

 

SET( “quello che scatena il Set”    ,     “ quello che vuoi Settare); 

 

Naturalmente ”quello che scatena il Set” può essere anche una combinazione complicatissima di bit,confronti fra interi o altro per esempio… L’importante è naturalmente è che il risultato finale dia come uscita un dato di tipo bool(vero o falso). 
Tanto che in ST di Mitsubishi scrivere :

 

SET( Start , Motore);

Caspita questa del SET con la condizione che scatena il SET non la sapevo nonostante uso spesso e da anni Mitsubishi, se ne impara sempre di nuove,

uso sempre l'istruzione semplice del SET "quello che vuoi settare",

grazie a te @step-80

Modificato: da leleviola
Link al commento
Condividi su altri siti

1 ora fa, leleviola ha scritto:

Caspita questa del SET con la condizione che scatena il SET non la sapevo nonostante uso spesso e da anni Mitsubishi, se ne impara sempre di nuove,

uso sempre l'istruzione semplice del SET "quello che vuoi settare",

grazie a te @step-80

@leleviola ma intendi in ladder? Perchè non mi risulta si possa usare l’istruzione Set come dici tu in ST. 
 

Se scrivo SET M0 me lo da errore, lo stesso se scrivo 

IF M100 Then 

  SET M0; 

End_if; 

 

ovviamente se parli di ladder o ladder strutturato esiste l’istruzione SET ma devi anteporre i contatti che vuoi attivino l’istruzione. 

Link al commento
Condividi su altri siti

1 ora fa, step-80 ha scritto:

@leleviola ma intendi in ladder? Perchè non mi risulta si possa usare l’istruzione Set come dici tu in ST. 
 

Se scrivo SET M0 me lo da errore, lo stesso se scrivo 

IF M100 Then 

  SET M0; 

End_if; 

 

ovviamente se parli di ladder o ladder strutturato esiste l’istruzione SET ma devi anteporre i contatti che vuoi attivino l’istruzione. 

infatti ora mi torna che in ST la forma SET M0 non avrebbe senso, mi torna invece che la forma SET(M0,M1) in ST possa essere usata,

mi sembrava un po' strano tutto ciò.

A proppsito sei ancora al GX Works2? io son passato direttamente al 3 dal GX Developer e a parte un adattamento iniziale è tutto un altro andare, non usi ancora FX5?

Link al commento
Condividi su altri siti

26 minuti fa, leleviola ha scritto:

A proppsito sei ancora al GX Works2? io son passato direttamente al 3 dal GX Developer e a parte un adattamento iniziale è tutto un altro andare, non usi ancora FX5?


Ho usato Gx3 solo per un Progetto con Fx5 finora, ma non c è stato gran feeling. Diciamo che credevo che molti dei limiti del 2 fossero stati superati invece per quanto mi riguarda ha ancora tutti i difetti del secondo e pochi pregi. 
Ma forse dipende dal fatto che non l’ho usato molto. 
Uso praticamente tutti robot con i quali scambio parecchi dati e quindi la vecchia e cara serie Q mi torna ancora buona ma è da programmare col Gx2. So che sono usciti prodotti nuovi ma sono pigro e non ho sto gran tempo da dedicare a nuovi esperienti per ora. 

Modificato: da step-80
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...