Jump to content
PLC Forum

homeira

Linguaggio St -Sintassi Ed Esempi-

Recommended Posts

step-80

Ho provato ancora,ma sembra non ci sia nulla da fare. Non accetta else if,ma o solo else o solo if. Tutti gli if devono avere il proprio end_if finale,questo è chiaro.

Finchè non salta fuori qualcuno che ha esperienza in merito ad st io continuo ad attendere... :worthy:

Link to post
Share on other sites

zanellatofabio

Risposta al post 31

dichiarazione delle variabili

PROGRAM POU
VAR
Db_fronte1: R_TRIG;
puls_1: BOOL;
M1: BOOL;
END_VAR

codice del POU

Db_fronte1( clk:=puls_1);

M1:= Db_fronte1.Q;

M1 non viene settata come scrivi tu, è semplicemente il fronte quindi dura 1 ciclo di scansione programma.

Bye

Edited by zanellatofabio
Link to post
Share on other sites
zanellatofabio

Risposta al post 36

ELSIF è la sintassi corretta in SoMachine

vedi nell'h.e.l.p -->Editor > Editor ST > testo strutturato ST > istruzione IF

provato ora :

dichiarazione variabili:

PROGRAM POU
VAR

PLS1: BOOL;
PLS2: BOOL;
A: INT;

END_VAR

codice:

A:=0;
IF PLS1 THEN
A:=1;
ELSIF PLS2 THEN
A:=2;
END_IF;

Stiamo comunque scrivendo di ST in SoMachine dentro ad una discussione che come titolo ha Unity .....

Ciao

Edited by zanellatofabio
Link to post
Share on other sites
step-80

Grazie davvero per l'aiuto. Non riuscivo a trovare la guida in linea riguardante ST ma ora ho risolto. Continuavo a scrivere ELSEIF al posto di ELSIF. :(

Per ZanellatoFabio: per il discorso di nominare i db con nomi diversi,tu come gestisci la cosa?

Edited by step-80
Link to post
Share on other sites
zanellatofabio

db ? cosa sono i db ?

Se parli di Siemens li conosco, ma in SoMachine forse intendi l' area dove dichiari le variabili ?

Beh se parli di questo, allora io oltre alla lista delle GVL mi creo delle altre liste per esempio VAR_HMI oppure VAR_PARAMETRI_LAV

nelle GVL dichiaro le variabili globali di uso generale esempio

impianto_man ; BOOL;

impianto_aut ; BOOL;

FS_pulsante_start : R_TRIG;

nelle VAR_HMI metto le variabili che scambio da e per il pannello

esempio :

hmi_segnalaz_allarme : BOOL;

hmi_pulsante_tacita : BOOL;

hmi_visualizza_pezzi : INT ;

nelle VAR_PARAMETRI_LAV

metto per esempio i parametri di lavoro

Set_tempo_T1:TIME;

Questo è solo per farti un esempio mica che quello che faccio io sia oro colato ... ( anzi non è neanche bronzo )

chi ha più fantasia si scateni di più !

Riallacciandomi al tuo post dove parlavi dei fronti, io uso nominarli come :

FS_fotocel_1 : R_TRIG;

FS_pulsante_start : R_TRIG;

FD_pulsante_start : F_TRIG;

così quando inizi a digitare FS_ allora appare la lista di tutti i fronti di salita ...

Poi tutti i fronti li metto non sparsi nella lista ma li ragruppo, idem per le memorie, i tempi ecc. ecc. infatti avrai notato che se scrivi del codice e introduci un operando nuovo ti appare la finestra di dichiarazione e poi SoMachine te lo scrive alla fine della lista della dichiarazione . Ecco, io in questo caso, lo taglio e lo incollo vicino ai suoi simili !

Poi per esperienza personale, ho notato che quello che per me, appare chiaro e ben fatto, magari agli occhi di un altro è un gran casino e fatto da c...

E lo stesso è viceversa ovvero quando mi sono trovato a decriptare programmi di altri a volte ho pensato lo stesso .

Anche i commenti che finora abbiamo sempre omesso sono una parte importante :

FS_fotocel_1 : R_TRIG; // fronte di salita della fotocellula contapezzi 1

suona meglio che leggere il solo nome della variabile

Edited by zanellatofabio
Link to post
Share on other sites
step-80

Buonasera ragazzi

rispolvero questa discussione per chiedere una cosa:

c'è qualcuno di voi che usa il linguaggio ST,in particolare su Somachine,e si trova meglio rispetto al ladder anche per eseguire istruzioni per lo più di logica booleana?

Sto scrivendo(cosi per prova)porzioni di codice che prima avevo steso in ladder (set/reset,temporizzatori,fronti di salita e discesa) in linguaggio st per valutare pregi e difetti di uno rispetto all'altro.

Qualcuno vuole riportare la propria opinione ? Ve ne sarei davvero grato

Grazie

Matteo

Link to post
Share on other sites
Roberto Gioachin

Giudizio del tutto personale:

ST per operazioni di calcolo, la rappresentazione è simile alla matematica che conosciamo.

Ladder o CFC per operazioni logiche, la rappresentazione grafica della logica è molto più immediata e velocizza il debug.

Link to post
Share on other sites
step-80

Grazie per il tuo giudizio. Mi sto cimentando in operazioni per lo piu di logica booleana in ST, per valutare se effettivamente la differenza è notevole.

Credo che lo sforzo piu grande risieda nel cambiare metodo di ragionamento; uno abituato a ragionare a contatti incontra non poche difficoltà a ragionare da informatico.

Devo dire peró che mi aspettavo peggio, molto peggio: certo il ladder ha dei vantaggi innegabili ma anche ST una volta compreso ha il suo fascino. Vedo poco utile per l'uso che ne faccio io il ciclo FOR, ma magari in futuro mi ricrederó

Approfitto per fare una domanda: se in ladder inserisco un contatto come fronte di salita, come è possibile lo stesso in ST?

Voglio dire, inserisco si il blocco R_TRIG mettendo come CLK il contatto interessato, è questa l'unica soluzione?

Chiedo perchè in LD esiste sia la possibilità del fronte singolo( ----I P I-----) che il modulo appunto R_TRIG che restituisce un segnale alto una scansione interrogando uno o piu operandi.

Immagino sia la stessa cosa, ma magari mi sono perso qualcosa..

Grazie

Link to post
Share on other sites
lelos

ciao

il linguaggio st è molto usato da chi arriva dall'informatica.

La scrittura di un programma non rappresenta grosse difficoltà, il problema è il debug di programmi di una certa lunghezza.

Lo uso per i calcoli matematici di qualsiasi genere e lo uso anche anche per la gestione degli assi (sempre in ambito matematico) .Lo utilizzo per creare funzioni o librerie che richiamo nei programmi.

Link to post
Share on other sites
step-80

sono partito per gioco a buttar giu qualche riga in st, e mi sono accorto che è molto meglio di ció che mi aspettavo. Con un po di fantasia anche le funzioni booleane non rappresentano un problema.

Sempre per gioco (e per sfida) mi sono messo a buttar giu un programmino che mi ha sempre dato del filo da torcere; forte della tecnica "a step" imparata qui sul forum e del linguaggio st mi sono messo a scrivere il ciclo di un semplice pick'n'place presente su una mia macchina.

Esso si compone di quattro attuatori pneumatici:

- asse orizzontale corsa 200 mm

- asse verticale corsa 100 mm

- cilindro rotante a 360* con corsa regolabile

- pinza di presa.

La pinza di presa è montata sull'attuatore rotante che a sua volta è montato sull'asse verticale ; l'asse verticale è solidale con il carrello dell'asse orizzontale.

La 'particolarità' del ciclo sta nel fatto che ad un certo punto della sua esecuzione a seconda dello stato di un selettore l'asse z deve compiere due movimenti diversi.

Appena ho tempo posteró il codice da me scritto, cosi da poter iniziare(spero) una discussione interessante.

Matteo

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...