Bacchetti Lorenzo Inserito: 23 ottobre 2012 Segnala Share Inserito: 23 ottobre 2012 Buongiorno a tutti, sono nuovo nel mondo Allen & Bradley. Sto sviluppando in ambiente RS Logix 5000 e volevo avere un informazione a riguardo. Premetto che son abituato a programmare in Step 7, e la mia richiesta è la seguente. Dopo aver creato il blocco (routine), come faccio a richiamarlo in stile Step 7, ovvero far comparire un blocco con tutti i parametri IN sulla sinistra e i parametri OUT sulla destra? E' possibile una cosa del genere? Grazie mille, Link al commento Condividi su altri siti More sharing options...
fuzzy logic Inserita: 24 ottobre 2012 Segnala Share Inserita: 24 ottobre 2012 Ci sono due metodi per richiamare una subroutine passando parametri di Input e ricevendo parametri di Output: 1. utilizzo delle istruzioni JSR - SBR - RET, utilizzando Input e Return parameters 2. utilizzo delle Add-On Instructions (AOI) Il secondo metodo credo sia il più simile a quello richiesto. Ti consiglio i seguenti manuali: 1.Logix5000 Controllers General Instructions Reference Manual 2.Logix5000 Controllers Add-on Instructions Programming Manual - fuzzy logic Link al commento Condividi su altri siti More sharing options...
Bacchetti Lorenzo Inserita: 24 ottobre 2012 Autore Segnala Share Inserita: 24 ottobre 2012 Grazie per la risposta. Avrei un altra domanda. Avevo già provato il metodo JSR-SRB-RET, e in merito vorrei sapere: all'interno della subroutine che richiamo scrivo un programma con degli input e output con delle tag generali, senza particolare riferimento ad un movimento. Invece nella main routine ho la necessità di utilizzare delle tag che mi riportino anche il nome del movimento. Quindi nell' istruzione JSR mi ritroverò negli INPUT/OUTPUT delle tag con il nome del movimento, e nelle istruzioni SRB e RET, all'interno della subroutine, mi ritroverò gli INPUT e OUTPUT con delle tag generali. Ora, la mia domanda, come fa la subroutine ad assegnare la corretta tag agli input definiti nell istruzione SRB? e di conseguenza la corretta tag agli output nell'istruzione RET? Segue la posizione definita nell'istruzione JSR?? Ovvero, se nell'istruzione JSR, il primo input par è: "value_a", viene assegnato al primo input par dell'istruzione SRB, anche se ha un nome di tag diverso, ad esempio "general_input_1"? Saluti, Link al commento Condividi su altri siti More sharing options...
rr7788 Inserita: 24 ottobre 2012 Segnala Share Inserita: 24 ottobre 2012 Probabilmente non ho ben capito,ma ogni tag ha un nome univoco, quindi il problema non sussiste, ne approfitto per chiederti come ti trovi con controllogix a differenza di s7 ciao Link al commento Condividi su altri siti More sharing options...
Bacchetti Lorenzo Inserita: 25 ottobre 2012 Autore Segnala Share Inserita: 25 ottobre 2012 Si le tag hanno un nome univoco, però io ho la necessità di utilizzare la stessa subroutine per più movimenti, e che quindi verranno settati da tag diverse. Su siemens richiamavo il blocco, davo le mie condizioni hai parametri IN, il blocco eseguiva e mi restituiva gli OUT. Per quel poco che ho utilizzato A&B posso dire che rispetto a siemens è meno intuitivo collegarsi ONLINE la prima volta, ho perso un po di tempo. Ha però il vantaggio di avere tutti i blocchi contemporaneamente online, molto useful! Un altro vantaggio è il fatto che i valori che ricevo da HMI non devo convertirli in S5Time come su S7, ma ho già un INT da usare a piacere. Una pecca secondo me è che lavorando a tag, devi ogni volta andare a cercarti la tag, e fare copia e incolla, mentre su S7 avevo le mie Memorie e ingressi standard e lo sviluppo era più rapido. Un altra pecca è la mancanza di certi tipi di temporizzatore (PEXT) che ti costringe a usare degli scamuffi. Poi non puoi andare online fino a che non hai la configurazione hardware corretta, quindi se vuoi testare il tuo software in ufficio con la sola CPU devi farti un programma completo di ingressi, remotaggi e inverter, mentre uno di test, solo con la CPU. Un vantaggio secondo me è il modo in cui hanno raggruppato le varie funzioni, per categorie (temporizzatori, contattori, program control). Potrò darti una panoramica migliore a software finito e ad avviamento concluso, per fare un paragone in "ufficio" ed in "campo" tra questi due colossi. Link al commento Condividi su altri siti More sharing options...
fuzzy logic Inserita: 25 ottobre 2012 Segnala Share Inserita: 25 ottobre 2012 (modificato) Lorenzo, è come scrivi tu: il valore del primo Input Parameter dell'istruzione JSR viene passato nel primo dell'istruzione SBR e così via di seguito. Lo stesso vale per le uscite del blocco: il primo parametro dell'istruzione RET corrisponde al primo Output Parameter dell'istruzione JSR. Il nome dei parametri non ha impotanza, nella subroutine saranno sempre le stesse variabili, mentre cambieranno in ogni JSR che richiama il blocco. - fuzzy logic Modificato: 25 ottobre 2012 da fuzzy logic Link al commento Condividi su altri siti More sharing options...
Bacchetti Lorenzo Inserita: 25 ottobre 2012 Autore Segnala Share Inserita: 25 ottobre 2012 Ok, perfetto grazie mille. Già che ci sono volevo farmi un altra domanda. E' possibile usare come PREset di un timer una Tag? ho provato ad inserire un INT come preset su un TON, ma RSLogix mi dice: "Failed to modify the tag value. String invalid."Leggendo l'. vedo che accetta solo valori immediati, quindi numerici. Ho provato ad usare un move della tag al preset del timer ma non funziona. Link al commento Condividi su altri siti More sharing options...
Bacchetti Lorenzo Inserita: 25 ottobre 2012 Autore Segnala Share Inserita: 25 ottobre 2012 Sistemato. Scusatemi, un errore mio!!! semplicemente mi ero dimenticato di richiamare il blocco utilizzato nella main routine!!! Comunque ribadisco: Per utilizzare una TAG come valore di PRESET in un timer si deve utilizzare un MOVE, con source la TAG stessa, e come destination "timer.pre". Grazie per l'aiuto. Link al commento Condividi su altri siti More sharing options...
fuzzy logic Inserita: 25 ottobre 2012 Segnala Share Inserita: 25 ottobre 2012 Le istruzioni Timer dei controllori A-B accettano solo un valore numerico nel campo Preset. Per poter gestire un Preset variabile, occorre eseguire un MOV della tua tag nella tag di preset del timer. Es.: se la tag del timer si chiama MyTimer, l'istruzione MOV dovrà avere come destinazione MyTimer.PRE (il preset è un tipo di dato DINT, il valore di tempo è espresso in msec) - fuzzy logic Link al commento Condividi su altri siti More sharing options...
barolo72 Inserita: 14 novembre 2012 Segnala Share Inserita: 14 novembre 2012 Scusate ma cos'è il temporizzatore (PEXT) ? B. Link al commento Condividi su altri siti More sharing options...
simatic Inserita: 29 novembre 2012 Segnala Share Inserita: 29 novembre 2012 Buongiorno a tutti, anche io sono nuovo del Allen Bradley e vorrei ricollegarmi alla domanda di Lorenzo riguardo alle subroutine parametrizzabili come in Siemens. Sto lavorando con RSLogix500 Pro e con il plc 1747-L531, ho verificato sul manuale d'uso ma non parla di subroutine parametrizzabili. Qualcuno di voi sa se è possibile crearle e come? Grazie Link al commento Condividi su altri siti More sharing options...
fuzzy logic Inserita: 30 novembre 2012 Segnala Share Inserita: 30 novembre 2012 [at]simatic Purtroppo con RSlogix500 e SLC-500 non è possibile. - fuzzy logic Link al commento Condividi su altri siti More sharing options...
del_user_27683 Inserita: 30 novembre 2012 Segnala Share Inserita: 30 novembre 2012 Il richiamo è così: JSR Routine Name (nome delle routine) Inpit Par (1° parametro ingresso) Inpit Par (2° parametro ingresso) Inpit Par (3° parametro ingresso) Return Par (1° parametro uscita) Return Par (2° parametro uscita) nella suborutine PRIMA ISTRUZIONE SBR Inpit Par (1° parametro ingresso) Inpit Par (2° parametro ingresso) Inpit Par (3° parametro ingresso) nella suborutine ULTIMA ISTRUZIONE RET Return Par (1° parametro uscita) Return Par (2° parametro uscita) Note: - il numero di parametri nel richiamo e nella subroutine devono ovviamente corrispondere - la prima istruzione della subroutine deve essere la SBR ma non in un ramo a sè, devono sempre seguire altre istruzioni, in pratica prendi il primo ramo della tua suboroutine e come primo contatto ci metti SBR. ciao Link al commento Condividi su altri siti More sharing options...
simatic Inserita: 30 novembre 2012 Segnala Share Inserita: 30 novembre 2012 Ho capito. Grazie a tutti ragazzi, siete sempre molto preziosi :-) Link al commento Condividi su altri siti More sharing options...
Bacchetti Lorenzo Inserita: 18 dicembre 2012 Autore Segnala Share Inserita: 18 dicembre 2012 Dopo l'istruzione SBR puoi inserire anche un NOP. Ricordarsi che la tag richiamata sulla JSR e poi SBR come in RET devo avere lo stesso data type. questo è fondamentale se no non lavora il meccanismo! Saluti,Dopo l'istruzione SBR puoi inserire anche un NOP. Ricordarsi che la tag richiamata sulla JSR e poi SBR come in RET devo avere lo stesso data type. questo è fondamentale se no non lavora il meccanismo! Saluti, Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora