jonny812 Inserito: 19 luglio 2007 Segnala Inserito: 19 luglio 2007 Salve a tutti, devo programmare un PLC CompactLogix utilizzando RSLOGIX 5000; fin'ora ho sempre utilizzato RSLOGIX 500 e mi trovo, adesso, in enorme difficoltà. Ad esempio io sono abituato a scrivere l'SFC e poi tradurlo in LADDER: però non riesco a trovare nell'RSLOGIX 5000 dove stanno i bit interni B3:0/0 e dove stanno gli ingressi I0:0 e le uscite O:0/0. Potete darmi una mano. Grazie
Luca Bab Inserita: 19 luglio 2007 Segnala Inserita: 19 luglio 2007 RSLOGIX 5000 non lavora piu' ad indirizzamento fisicoma a dichiarazione simbolico di variabileAttenzione che per I/O ti devi ( e di solito serve ) farti delle immagini di processoMi sembra che invece di andare avanti AB sta' tornando indietroCiaoLuca
Henon Inserita: 19 luglio 2007 Segnala Inserita: 19 luglio 2007 I Data File B3, T4,C5,R6,N7 etc li puoi ricreare a tuo piacimento come nel SLC500 e come nel PLC5.Devi semplicemente creare delle Tag di Array [0..255] di tipo Integer per i B3,di tipo Timer per i T4, di tipo Counter, mentre per gli R6 non serve, perchè per ogni istruzione del ControlLogix ogni registro ha una particolare struttura anche molto differente dai classici Registri R6 che usavi nel SLC.In Pratica non hai più nessun limite.Puoi divertirti nel creare Casting di dati dai formati pià svariatiNon è buona cosa fare delle immagini di processo, perchè cosi facendo, rovini quelle caratteristiche di performance che ha il ControlLogix.Devi sempre usare le Alias.Altrimenti se hai più Task, ti trovi ad avere dei dati non sincronizzati, con il processo.Penso che tra qualche giorno capirai ed userai perfettamente questa nuova architettura.Il Vantaggio è enorme, perchè tutti i tuoi nuovi applicativi, non sono pià legati all' Hardware dell' impianto, e cosi facendo in softwarelo potrai riutilizzare, facilmente.Cioè Software senza Radici, non come piante con radici inestricabili.Il Progresso che è stato fatto è evidente, e non mi sembra che la RockellSoftware stia tornando indietro, ma anzi vola.
Luca Bab Inserita: 20 luglio 2007 Segnala Inserita: 20 luglio 2007 Senza buttarla sulla polemica ma restando in ambito costruttivoNon è buona cosa fare delle immagini di processo, perchè cosi facendo, rovini quelle caratteristiche di performancefarmi un'immagine degli Input a inizio programma , rovino le performance ???a volte un ingresso che all'interno della scansione mi cambia , potrebbe darmi problemi , forse perche' tutti i plc che ho usato sino ad ora la facevano , preferisco un'immagine per evitare che mi capitiIl Vantaggio è enorme, perchè tutti i tuoi nuovi applicativi, non sono pià legati all' Hardware dell' impiantoIn qualsiasi plc esiste gia' da tempo la funzione trova I0.0 sostituisci con I10.0 e la configurazione HW non e' legata al SWTi diro' che la mia esperienza con questo SW e' risultata molto negativa , poiche' per capirci qualcosa ( che fosse facile anche per altri ) mi sono trovato a dare il simbolico come fosse un'indirizzo assoluto ( in modo che si possa fare una corrispondenza tra schema elettrico e programma PLC )Il Progresso che è stato fatto è evidenteLe variabili si dichiaravano in quel modo nel mondo PC 20 anni fa' Altrimenti se hai più Task, ti trovi ad avere dei dati non sincronizzati, con il processoNel metodo tradizionale cio' non ti puo' capitareCredo che l'utilizzo dei task a tempo , aveva senso 10 anni fa' quando la potenza di calcolo dell CPU era limitata e per aver qualcosa di veloce dovevi fare qualcos'altro lento , Con le CPU di adesso non credo abbiano piu' sensoIl Progresso che è stato fatto è evidenteNon lo vedo come progresso , Poiche' il PLC usando M20.0 era' un po' piu' comodo che BIT_MEM_PARTEN_MOTOR_ON , sia da ricordarsi che da cercare per chi non aveva fatto il programma.Da schema se non va' la valvola collegata all'uscita A20.0 , con un serch di A20.0 in 10 secondi vedevo perche' , con questo sistema e' un po' piu' complicato poiche' devi capire come e' stata chiamata , Mi sembra che in questo modo il SW diventa piu' "personale" ( del tipo che ci capisce qualcosa solo quello che l'ha fatto )Ovviamente sono punti di vista e pareri dettati anche dal gusto personale .CiaoLuca
Henon Inserita: 21 luglio 2007 Segnala Inserita: 21 luglio 2007 (modificato) Hi LucaSembra che non digerisci le novità che quasi tutti i grandi gruppi dell’automazione tendono di apportare.Comunque vedrai che col tempo, anche gli altri costruttori seguiranno questa strada, oppure la hanno già intrapresa.Ora cerco di dire il perché devi fare le cose in questa maniera:Fare le immagini degli Inputs e aggiornare gli Outputs in un punto solo delProcesso comporta che se tu hai delle Task che girano ad esempio in pochissimi ms,(si può arrivare sino a 0.1ms per una task. Periodica), questi dati sono fuori sincronismo con i vari processi.Inoltre devi pensare che oltre alle Task Periodiche, vi sono le Task ad evento,queste ultime se acquisiscono istantaneamente un evento, le Tags devono essere immediatamenteaggiornate.Poi anche altri Processi come il Motion-Planner porta avanti dei processi che sono svincolati dalProcesso portato avanti nelle Task.Molte Tags devono essere prodotte e condivise tra più CPU (MultiProcessor)Per questo motivo se vincoli in un solo punto l’aggiornamento delle Tags ti trovi ad usare unControlLogix come un normale PLC, quindi non ha senso usare tale Strumento perApplicazioni cosi Banali come in un PLC classico. Infatti ora questi strumenti come il ControlLogix non vengono chiamati PLC ma ora si usaIl Termine PAC ( Programmable Automation Controllers ) Infatti devi pensare al ControlLogix come un qualcosa che è molto diverso da un semplice PLC,è molto più performante in diverse tipologie di Processi.Per questo motivo più che essere limitate le performance, questo strumento vienePiuttosto usato in maniera non appropriata, e declassato delle sue eccezionali caratteristiche.Poi il Ricablaggio degli I/O comporta molto tempo, e possibilità di errore, Con la Famiglia Logix semplicemente usi le tue vecchie sorgenti super collaudate, nel tuo nuovo progetto, senza vincoli.Infatti non devi staccare tutte le Radici della tua pianta (Ricablaggio degli I/O), e il trapiantodi una parte o tutta delle tue sorgenti è indolore e rapidissimo. Qualche persona potrebbe avere delle difficoltà nel gestire delle Tag che sono flottanti in In una esecuzione completa nella Main-task Ciclica, ma se una persona sa programmareCon metodo e con gli opportuni criteri, non troverà nessuna differenza rispetto all’aggiornamentoCon un immagine di processo classica di un PLC.Le Dichiarazioni delle Tags è molto facile, ed è una buona cosa.Se tu pensi anche 20 anni fa le macchine avevano moltissime parte cablate in maniera Elettromeccanica, e Riutilizzare tale funzioni in una nuova macchina comportava molto tempo e denaro. Per questo Motivo si è usato la Logica Programmabile come i PLCCon lo stesso principio Oggi si cerca di svincolare il più possibile Hardware (Indirizzamento degli I/O) dal Software di Controllo, ed è per questo motivo che si utilizza questo metodo.Anche in Altri PLC non si dovrebbe mai usare direttamente nel sorgente del Software richiamiDiretti agli I/O, ma si preferisce fare delle attribuzioni su degli Appoggi come DataBlock o altro(DB Siemens ) In questa maniera il tuo software non ha delle radici con l’ Hardware del Sistema.E nel prossimo Riutilizzo ti trovi a perdere molte meno ore di adattamento Software.L’ Uso delle Tasks o le ripartizioni delle Risorse di un Sistema è sicuramente una buona cosa.Altrimenti potresti a tua insaputa (nella Realizzazione del Software) utilizzare tutte le risorsePer cose banali, ed a essere penalizzato, su quei processi che richiedono tempi di risposta estremamente veloce. (Guarda agli OB a Tempo presenti in Siemens)Luca se vuoi usare il ControlLogix come ad esempio un Siemens lo puoi fare benissimo,Marker creai una Tag Chiamata “M” , Type:= Base; DataType := SINT[65536]; Style:= Binary Timer creai una Tag Chiamata “T” , Type:= Base; DataType := Timer[65536]Counter creai una Tag Chiamata “Z” , Type:= Base; DataType := COUNTER[65536] DB creai una Tag Chiamata “DB1” , Type:= Base; DataType := SINT[65536]; Quindi per Esempio:Nel tuo programma puoi usare il Marker M[20].0 che corrisponde al tuo M20.0oppure il Timer T[125] che corrisponde al tuo Timer T125Poi ricorda che la Task Ciclica è paragonabile all' OB1Le Task Periodiche sono similari agli OB35 Le Task ad Evento può essere paragonata al OB40 Poi fai come hai detto tu una Coppia dei vari Inputs in una Tag di questo tipo:Input creai una Tag Chiamata “E” , Type:= Base; DataType := SINT[65536]Una cosa similare la fai per le Uscite in questa maniera:Output creai una Tag Chiamata “A” , Type:= Base; DataType := SINT[65536]In questa maniera crei le Immagini di Processo degli I/OPer Creare delle DB strutturate o DB associate a Funzioni (Istanza) ti creiUna Struttura UDT e poi usi questa Struttura per costruire una TAG chiamata ad esempio DB201.Se vuoi avere delle FB parametrizzate ed istanziate puoi crearti una Instruction ADD-ONIn questa maniera il metodo di programmazione sarà molto simile al Ambiente Step7Se studi bene questo prodotto vedrai che potrai crearti tutto il tuo mondo di Programmazione che più di soddisfa. Modificato: 21 luglio 2007 da Henon
jonny812 Inserita: 23 luglio 2007 Autore Segnala Inserita: 23 luglio 2007 ma come faccio ad associare un tag ad un ingresso o uscita fisica? dove sta il bit first pass S:1/15 di attivazione del PLC? ma poi, leggendo il manuale è veramente possibile programmare direttamente in SFC senza passare per la traduzione in Ladder?
Luca Bab Inserita: 23 luglio 2007 Segnala Inserita: 23 luglio 2007 Ciao Henone grazie della bella risposta , non del solito tipo "preferisco questo , quello non mi piace " ma dal tipo che conosce bene la cosa Sembra che non digerisci le novità che quasi tutti i grandi gruppi dell’automazione tendono di apportare.In effetti hai ragione , spero che non tutti i gruppi vadano su quella stradaPoiche' io credo che il PLC deve essere piu' semplice ed intuitivo possibile , se questa e' la strada che tutti prenderanno , ha poco senso usare dei PLC , ma puoi passare direttamente ad un PC .ControlLogix come un normale PLC, quindi non ha senso usare tale Strumento perApplicazioni cosi Banali come in un PLC classico.Effettivamente io lo uso come un plc classico , poiche' faccio macchine relativamente semplici .Solo che non capisco come mai quando un cliente chiede AB , vuole il control con la CPU piu' grossa , anche in una macchina che potrebbe andare con il 200 , forse e' solo un caso ( gia' 4 clienti ) ma altri clienti quando hanno a specifica non AB , ti chiedono solo il brand , poi il prodotto lo scegli tu.Con lo stesso principio Oggi si cerca di svincolare il più possibile Hardware (Indirizzamento degli I/O) dal Software di Controllocerto , ma c'e' modo e modo . Un blocco parametrizzato con variabile di ingresso il sensore non va' bene ???E comunque , preferisco sempre il ricablaggio , poiche' il programma resta molto piu' leggibilePoi il Ricablaggio degli I/O comporta molto tempo, e possibilità di erroreSul molto tempo non sono d'accordo , sulla posiibilita' di errore invece si'Nel tuo programma puoi usare il Marker M[20].0 che corrisponde al tuo M20.0questo e' proprio il modo che il 90% dei programmi che ho visto ( e fatto ) usato , poiche' sicuramente piu' intuitivo e tra un blocco e l'altro , M20.0 me la ricordo , ma allora mi chiedo : perche' non lasciare tutto come prima ??? perche' devo escogitare trucchetti per indirizzare in "pseudo" assoluto ???Siccome la realta' in cui io lavoro e' quella del prototipo e del poco tempo di consegna , quindi adoro le cose semplici e veloci ( non solo siemens , ma anche omron ed il vecchio SLC500 )Comunque , per finire , ti faccio solo un piccolo esempio ( molto reale )In una ditta ci sono 3 programmatori che fanno SW , Con AB la Memoria di partenza motori e' :Prog 1 MEM_MOT_STAProg 2 BIT_MOT_RUNProg 3 MEM_CONS_PART_MOTIn SIEMENS da circa 18 anni ( anche in S5 ) E' la M21.7E pensa che questi 3 lavorano nella stessa ditta , pensa ad un utilizzatore finale che ha macchine provenienti da molte ditte sparse per tutto il mondo , quando il povero manutentore dovra' trovare perche' quella elettrovalvola non si attiva.CiaoLuca
rddiego Inserita: 23 luglio 2007 Segnala Inserita: 23 luglio 2007 onestamente io capisco di più MEM_MOT_STA che non M21.7, quest'ultimo non mi dice niente, la tag precedente mi sembra palese che indichi una memoria motore start. Tu vorresti che tutti e tre i programmatori si allineino: fatelo!Non ti è chiaro MEM_MOT_STA PRIM FRIC LES : ci si mette d'accordo START_MOTORE come a suo tempo si è stabilito M21.7Tieni conto che il fatto di usare memoria non allocata permette una maggiore flessibilità della memoria del processore con conseguente aumento della velocità (come in effeti il buon AB). E' un miglioramento enorme. E' solo questione di abitudine: il mio capo era (ed è) come te però con Telemecanique: a lui piace %MWxxx e riesce a sento a programmare senza i suoi indirizzi.
Luca Bab Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 Tieni conto che il fatto di usare memoria non allocatascusa , ma non viene comunque allocata all'avvio della cpu ???con conseguente aumento della velocità (come in effeti il buon AB). E' un miglioramento enormeMa ce ne era bisogno di un aumento di velocita' ??? ( da SLC500 probabilmente si , ma e' un prodotto vecchio ) Non ti è chiaro MEM_MOT_STA PRIM FRIC LES : ci si mette d'accordo START_MOTOREIl problema e' che quando il SW ti da' piu' liberta' , ognuno si sbizzarisce facendo del suo meglio.Da non scordarsi che Siemens se vuoi lo usi in simbolico o in assoluto a seconda di cosa stai facendo al momento.Prova a tenere aperti 2 blocchi di 2 programmi e visualizzarne uno in simbolico , con il copia incolla del simbolo ti cambia direttamente l'indirizzo assoluto.START_MOTOREe' in italiano , ad un inglese non gli va bene . Cosa devo fare , devo ridichiarare tutte le variabili se la macchina va' in italia o all'estero ???CiaoLuca
rddiego Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 ok ok mi sembra che non ci sia verso. L'importante è fare programmi funzionanti e il più possibile comprensibili
Luca Bab Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 Guarda che se controbatti le mie dichiarazioni , ho solo piacere , poiche' non credo di essere nel giusto al 100% ma secondo me e' un sistema DIVERSO che mi comporta dei problemi che magari hai gia' affrontato e risolto ( tipo quello della lingua , visto che il cliente grosso ultimamente vuole anche il SW tradotto )L'importante è fare programmi funzionanti e il più possibile comprensibilivolevo solo aggiungere che ultimamente a quello che dici si e' anche aggiunto "nel minor tempo possibile"CiaoLuca
Henon Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 Ciao Johnny812Visto che ho un attimo di tempo, ti riporto un esempio che già avevo messo da parteEcco l'esempio:Se tu hai un modulo di uscite digitali 1756-OB32 inserito nello per esempio nello slot2 Quando usi RsLogix5000 devi inserire nella sezione “I/O Configuration” un Nuovo Modulo,premi il pulsante destro del mouse e ti esce la voce “New Module …”.Cosi facendo potrai inserire nello Slot2 il tuo modulo 1756-OB32, l’inserimento del nuovo Hardware è facilitato perché c’è un Menu di selezione ed aiuto, diviso per classi.Quando inserisci il Modulo, in maniera automatica nelle Tags del Controllore “Controller Tags”Ti troverai una Struttura dati che si Chiama “Local:2” Questa Tag contiene tutti i dati riguardanti questo modulo.Local:2:O è un DINT dove tu puoi scrivere e comandare le Uscite DigitaliLocal:2:I sono gli stati attuali delle Uscite (Viene usato quando un altro Porocessore deve leggereLo stato di uscite digitali, di un Modulo di cui non è proprietario)Local:2:C sono le Configurazioni delle uscite, (Filtri,Cos,Fusibile Elettronico,etc..)Su Alcuni Moduli trovi oltre alle Sigle O;I;C anche la Sigla S, indicano gli Stati “States” del Modulo.Quindi ha Programma in un Rung puoi comandare un Uscita scrivendo (OTE Local:2:O.Data.12)In questo caso comandi il Bit12 del Modulo Locale 2.Chiaramente in questo modo hai sempre un vincolo HardwareNella sorgente del tuo Programma.Per evitare di essere vincolati al Hardware e dove ogni volta Ricablare tutti gli I/O del tuo SoftwareTi consiglio di creare una TAG con Associazione all’ Indirizzo Fisico “Local:2:O.Data.12”.In questo modo il tuo software può funzionare anche senza la parte hardware, quindi può essere testato senza avere fisicamente tutti i moduli presenti (In una CPU oppure con l’emulatore).Quando devi Riutilizzare il Sorgente creato in un'altra applicazione, non hai nessun vincolo, eIl tempo si riduce moltissimo (Si Risparmia, come tempo e come flessibilità nell’ eventuale fusionedi più parti di software).Per Creare questa Tag devi fare in questa maniera :Se vuoi avere una tag condivisa tra più task o Processori in rete: Devi crearla nella Sezione “Controller-Tags”.Se invece la devi usare solo in un Programma facente parte di una Task: Allora la devi creareNella “Program-tags“ del Programma desiderato (Ogni task può contenere sino a 32 programmi)Quindi con il tasto destro Seleziona “New Tag…” Ora nel Name inserisci il Nome della Tag (Crea sempre un Nome in Inglese, perché internazionale)Il Commento “Description” invece potrà essere anche in Doppia Lingua (Inglese/Altra)Nella Voce “Type” seleziona “Alias” (Perché appunto devi creare l’associazione con Hardware)Alla Voce “Alias for” devi inserire indirizzo Fisico (Aiutati con il Browser Freccetta in giù)Ed infatti devi scrivere “Local:2:O.Data.12”La Voce “Data Type” sarà solo Bool,La Voce “Scope :” indica su quale Programma o Controllore creare questa Tag.Lo Stile “Stile” può essere scelto a seconda di come preferisci la rappresentazione del dato.Per il Nome devi usare delle Regole ed infattiLa sintassi per creare questo nome deve avere uno standard. Ad esempio quello Ungherese o similare,Io per Esempio ho introdotto queste Modifiche:Il Nome non deve essere molto Lungo (Max 16 caratteri)Il Nome Contiene dei Suffissi Che indicano :L’Ordine o la Sintassi è la Seguente : Suffisso + Ubicazione + NomeDispositivo + AzioneIn Pratica prima Specificare il Suffisso del Dispositivo in Esame , Poi Specificare quale parte o dispositivo di Controllo fa parte, In Nome del Dispositivo (Se Pompa, PompaAcqua, Evacuatore1, ScaricatoreFinale, etc), l’ Azione che Esegue (Alza, Abbassa, Start, Stop, etc) Questa Sintassi è utile perchè normalmente ordinando le TAGs in Ordine Alfabetico, è molto più facile individuarle. Esempio : LS_Pmp3_MnLvlPanoramica dei Suffissi usati per i Dispositivi :Sonde Termice, Xlicson, PTC o altro [bOOL] TProb_ Tprob_MotSlave, Tprob_PumpProximity,sensori in generale LS_ LS_Wagon_LimitPosLampade Lamp_ Lamp_Line_Automatic, Lamp_FaultsElettroValvole EV_ EV_Burner_Enable, EV_Mandrel_UnlockSelettori Sel_ Sel_Pump1_Enable, Sel_ManAutoPulsanti But_ But_StartPump, But_Pump_StartContatto TL (Stato del TL) TL_ TL_Form_Driver, TL_Fling_InverterUscita per TL TL_ TL_Driver_Slave Chiaramente tra Contatto e TL la Tag sarà un Input oppure Output Riferimenti analogici Ref_ Ref_120M3, Ref_Pumps Asse (Master,Slave etc sono più che accettabili) Axle_ Master, Slave, Axle_Mandrel1, Axle_Roll Uscite di Segnale per Consensi ad Esterno Out_ Out_GoodPipe, Out_LineRun Ingressi Generici di Consenso o Altro Inp_ Inp_WaterOK, Inp_DecoilerReady, Inp_WelderReadyAllarmi Alarm Alarm_Bull[5].29, Alarm_Gunter[15].31 Dif, OneShot, etc Ons Ons_UpRoll, Ons_AutomaticTimer Timer Timer_delay_Auto, Timer Time_Out T Delay, Dly Pulse, PlsIn Pratica sono tutti quei criteri che usano anche chi programma con linguaggi più evoluti.In ogni azienda si hanno delle convenzioni, e si cerca di adottare uno standard, per tutteQuelle persone che dovranno usare questo sofware, o Riutilizzare.I Criteri si usati sono quelli in linguaggi come VisualBasic, C, Delphi, etc. Le Associazioni o Alias possono essere comprendere anche altre Tag, le quali a loroVolta possono avere delle Associazioni.Comunque eseguendo una ricerca “Go To Cross Reference” tutti i punti dove vengono usate Queste Tag vengono trovati, e vengono trovate anche le Tag ad esse associate.
Henon Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 Scusa se il testo precedente ha perso un pò le Tabulazioni e gli spazi, in alcuni punti non si capisce molto, però spero di essereti stato utile.Ciao Johnny812
Luca Bab Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 però spero di essereti stato utilea me sicuramente , mi hai dato delle buone dritte ( anche se resto della mia idea )Grazie , ciaoLuca
Ron the bon Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 Io mi associo a cio' che ha detto Henon.Programmando sia con S7 che con RSLogix5000 preferisco il secondo.Specialmente quando devo copiare parte di un programma in un'altra macchina. Con dei drag&drop si fa in un attimo senza perdere ore a controllare se i Merker o i DB sono gia' in uso ed eventulamente modificare il programma.Certo che utilizzare RSLogix5000 per azionare 5-10 pompe e mettere tutt onella ContinuosTask e' come vedere un vecchietto in Ferrari a 40km/h.La potenza delle cpu ho potuto vederla in azione con motori (fino a 15) con diverse camme elettroniche e suddivisi in diverse cpu.Ron
Henon Inserita: 24 luglio 2007 Segnala Inserita: 24 luglio 2007 Rispondo a Johnny812 su come usare il Bit di Sistema "First-Pass"che nel SLC è S:1/15Nella ControlLogix ma anche per gli altri controllori della famiglia Logix (FlexLogix,CompactLogic,etc..)devi scrivere "S:FS"S:FS First Scan flag S:N Negative flagS:Z Zero flagS:V Overflow flagS:C Carry flagS:MINOR Minor Fault flagComunque puoi creare anche un Programma nella Sezione "Power-Up Handler" questo programma viene eseguito al riavvio del Controllore.Mentre la Flag S:Fs la puoi usare dove vuoi nel programma.
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