Maxi2570 Inserito: 22 marzo 2013 Segnala Inserito: 22 marzo 2013 Salve a tutti. Vi pongo un quesito nella speranza che qualcuno possa aiutarmi a risolvere un problema di ridondanza. La configurazione HW e' la seguente: STAZIONE A CPU 315-2 DP CP 342-5 CP 341 RS422/485 STAZIONE B CPU 315-2 DP CP 342-5 STAZIONE "REMOTA" ET200M/LINK IM 153-2 ET200M/LINK IM 153-2 MODULO 32 DIGITAL INPUT MODULO 32 DIGITAL OUTPUT Potete anche vedere la configurazione della rete da questa immagine. Attualmente tutti i moduli non danno alcun errore (nessun LED acceso e nessun errore evidenziato da eventuali OB). Mentre la diagnostica del modulo CP 342 mi da' errore nel collegamento appunto tra le due CPU come evidenziato da questa immagine. Il software e' configurato in questo modo. Nella OB1 della stazione A richiamo questo codice AWL CALL "SWR_START" AG_KENNUNG :='A' // PLC-Classification: A for Station A DB_WORK_NO :="DB_WORK_NO" // Work DB for SWR DB_SEND_NO :="DEL_DB_SEND_NO" // Send DB for SWR DB_RCV_NO :="DEL_DB_RCV_NO" // Receive DB for SWR MPI_ADR :=4 // MPI-address of other station LADDR :=260 // Base address of CP VERB_ID :=1 // Connection no. of redundancy coupling DP_MASTER_SYS_ID:=1 // Identification of DP-mastersystem (HW-config) DB_COM_NO :="DB_COM_NO" // Instance-DB of FB 101 DP_KOMMUN :=1 // Identification of DP-master ADR_MODUS :=1 // Interval for CPU I/Q addressing PAA_FIRST :=0 // Address of first redundant outputbyte PAA_LAST :=3 // Address of last redundant outputbyte MB_NO :=20 // First flagbyte used within redundant user program MB_LEN :=50 // Amount of flagbytes used within redundant user program IEC_NO :=150 // First instance DB used for redundant iec counters or timers IEC_LEN :=19 // Amount of instance DBs used within redundant user program DB_NO :=101 // First DB used within redundant user program DB_NO_LEN :=11 // Amount of DBs used within redundant user program SLAVE_NO :=3 // Profibus address of first used DP-slave (IM 153-3) SLAVE_LEN :=1 // Amount of used DP-slaves SLAVE_DISTANCE :=1 // Configuration of IM 153-3 interface DB_A_B_NO :="DB_A_B_NO" // Send DB for non redundant data from Station A to B DB_A_B_NO_LEN :=W#16#1E // Amount of used data bytes within Send DB DB_B_A_NO :="DB_B_A_NO" // Receive DB for non redundant data from Station B to A DB_B_A_NO_LEN :=W#16#1E // Amount of used data bytes within Receive DB RETURN_VAL :="DB_A_B_NO".CPU_A.FC100_RET_VAL // Block return value EXT_INFO :="DB_A_B_NO".CPU_A.FC100_EXT_INFO // Extended information Nella OB1 della stazione B richiamo questo codice AWL CALL "SWR_START" AG_KENNUNG :='B' // PLC-Classification: A for Station A DB_WORK_NO :="DB_WORK_NO" // Work DB for SWR DB_SEND_NO :="DEL_DB_SEND_NO" // Send DB for SWR DB_RCV_NO :="DEL_DB_RCV_NO" // Receive DB for SWR MPI_ADR :=2 // MPI-address of other station LADDR :=260 // Base address of CP VERB_ID :=1 // Connection no. of redundancy coupling DP_MASTER_SYS_ID:=1 // Identification of DP-mastersystem (HW-config) DB_COM_NO :="DB_COM_NO" // Instance-DB of FB 101 DP_KOMMUN :=1 // Identification of DP-master ADR_MODUS :=1 // Interval for CPU I/Q addressing PAA_FIRST :=0 // Address of first redundant outputbyte PAA_LAST :=3 // Address of last redundant outputbyte MB_NO :=20 // First flagbyte used within redundant user program MB_LEN :=50 // Amount of flagbytes used within redundant user program IEC_NO :=150 // First instance DB used for redundant iec counters or timers IEC_LEN :=19 // Amount of instance DBs used within redundant user program DB_NO :=101 // First DB used within redundant user program DB_NO_LEN :=11 // Amount of DBs used within redundant user program SLAVE_NO :=3 // Profibus address of first used DP-slave (IM 153-3) SLAVE_LEN :=1 // Amount of used DP-slaves SLAVE_DISTANCE :=1 // Configuration of IM 153-3 interface DB_A_B_NO :="DB_A_B_NO" // Send DB for non redundant data from Station A to B DB_A_B_NO_LEN :=W#16#1E // Amount of used data bytes within Send DB DB_B_A_NO :="DB_B_A_NO" // Receive DB for non redundant data from Station B to A DB_B_A_NO_LEN :=W#16#1E // Amount of used data bytes within Receive DB RETURN_VAL :="DB_A_B_NO".CPU_A.FC100_RET_VAL // Block return value EXT_INFO :="DB_A_B_NO".CPU_A.FC100_EXT_INFO // Extended information Nella OB35 di entrambe le stazioni richiamo questo codice AWL CALL "SWR_ZYK" , "DB_COM_NO" // Call of FB 101 'SWR_ZYK' with instance DB DB_WORK_NO :="DB_WORK_NO" // Work DB for SWR CALL_POSITION:=TRUE // Call_Position = TRUE at begin of redundant program RETURN_VAL :="DB_A_B_NO".CPU_A.FB101_RET_VAL_IN // Block return value EXT_INFO :="DB_A_B_NO".CPU_A.FB101_EXT_INFO_IN // Extended information // Begin of redundant user program U DB5.DBX 9.1 // Check if station is Master SPB END CALL "REDUNDANT SW CALLS" // End of redundant user program END: NOP 0 CALL "SWR_ZYK" , "DB_COM_NO" // Call of FB 101 'SWR_ZYK' with instance DB DB_WORK_NO :="DB_WORK_NO" // Work DB for SWR CALL_POSITION:=FALSE // Call_Position = False for end of redundant program RETURN_VAL :="DB_A_B_NO".CPU_A.FB101_RET_VAL_OUT // Block return value EXT_INFO :="DB_A_B_NO".CPU_A.FB101_EXT_INFO_OUT // Extended information Da cui si dovrebbe evincere che la chiamata al software ridondato e' eseguita solo nel caso in cui la stazione sia master. Per capire chi sia effettivamente la master ho inserito nella stazione A del codice che tiene attivsata l'uscita A 3.0 mentre nella stazione B tengo sempre attivata l'uscita A 3.1. Ebbene se spengo la CPU della stazione A effettivamente l'unica uscita attivata e' quella della B (A 3.1) e viceversa. Se pero' mi collego online con lo Step7 vedo che il sw ridondato viene eseguito in entrambe le stazioni che pertanto non sembrano essere sincronizzate. La riprova ce l'ho dal fatto che una piccola funzione che attiva in sequenza le uscite A 0.0 - A 0.7 dimostra chiaramente lo sfasamento delle due sequenze pertanto dei valori della DB che uso come appoggio. Qualcuno ha un'idea di dove sto sbagliando? Grazie in anticipo a chi avra' la cortesia di aiutarmi. Massimo
Reverendo bit Inserita: 23 marzo 2013 Segnala Inserita: 23 marzo 2013 (modificato) Primo: L'FC100 "SWR_START" deve essere richiamato in OB100 e non su OB1. Secondo: Il software ridondato lo richiami su OB1 richiamando all'inizio ed alla fina FB100. Esempio: Segmento3 CALL "SWR_ZYK" , DB5 // Call of FB 101 'SWR_ZYK' with instance DB DB_WORK_NO :=DB1 // Work DB for SWR CALL_POSITION:=TRUE // Call_Position = TRUE at begin of redundant program RETURN_VAL :="MW6" // Block return value EXT_INFO :="MW8" // Extended information U DB5.DBX 9.1 // Check if station is Master SPB END Richiamo il software ridondato Segmento9 END: NOP 0 CALL "SWR_ZYK" , DB5 // Call of FB 101 'SWR_ZYK' with instance DB DB_WORK_NO :=DB1 // Work DB for SWR CALL_POSITION:=FALSE // Call_Position = FALSE at END of redundant program RETURN_VAL :="MW10" // Block return value EXT_INFO :="MW12" // Extended information Il DB5 è il DB di istanza per la ridondanza software dove la db5.dbw8 è la word della parola di stato della ridondanza, ed indica: Se la stazione è master o slave (DB5.DBX 9.1 significa che è riserva e quindi salta l'esecuzione del software ridondato eseguendolo nella stazione master) Identifica se la stazione è A o B etc. etc. Poi se ho ben capito usi su entrambe le stazioni la CP342-5 per l'accoppiamento di ridondanza e va bene, ed una CP 341 solo sulla stazione A, tieni presente che se vuoi che la comunicazione sulla 341, sia sempre attiva la CP va montata sull'ET200, altrimenti sarà funzionante solo se è master la stazione A. Scarica il manuale della ridondanza da questo link , qui troverai risposta alle tue domande https://www.google.i...8,d.ZWU&cad=rja Saluti Reveredno PS. Secondo e terzo posto "Forza Ferrari" Modificato: 23 marzo 2013 da Reverendo bit
Reverendo bit Inserita: 23 marzo 2013 Segnala Inserita: 23 marzo 2013 Altra cosa, come gestisci il collegamento di comunicazione della Simatic HMI verso i controllori con due indirizzi MPI diversi? Ti allego una foto di una configurazione simile dove: il collegamento di ridondanza e effettuato con la porta MPI, mentre Il collegamento su ET200M, e quello verso il pannello è stabilito con la porta profibus della CPU, solo che tra il pannello e le cpu ci sono due reapeter alimentati solo uno per volta dalla cpu master, cosi il pannello vede sempre e solo un collegamento attivo con lo stesso indirizzo. Saluti
Maxi2570 Inserita: 25 marzo 2013 Autore Segnala Inserita: 25 marzo 2013 Grazie per la risposta. Dunque, ho sbagliato a scrivere sul forum che richiamo la parte di codice di inizializzazione dalla OB1, in effetti e' chiamata durante l'inizializzazione e dunque nella OB100. Le chiamate cicliche poi avvengono nella OB35 piuttosto che nella OB1 ma sempre in maniera ciclica. Ho provato a spostare la chiamata sulla OB1 ma il risultato e' il medesimo: Le CPU non si sincronizzano e mi risultano entrambe MASTER.
Maxi2570 Inserita: 25 marzo 2013 Autore Segnala Inserita: 25 marzo 2013 Interessante il discorso del HMI collegato a due repeater. Hai qualche dettaglio in piu' ? Che componenti sono esattamente? Grazie
Reverendo bit Inserita: 25 marzo 2013 Segnala Inserita: 25 marzo 2013 Allora facciamo un po il punto della situazione: I blocchi da usare per la ridondanza attraverso il CP 342-5 sono: FC 100 'SWR_START' Il blocco deve essere richiamato nel programma di avvio (OB 100). FB 101 'SWR_ZYK' Il blocco deve essere richiamato nel programma ciclico o comandato a tempo. Il blocco va sempre richiamato prima e dopo l'elaborazione del programma utente ridondato. FC 102 'SWR_DIAG' Il blocco deve essere richiamato nell'OB di diagnostica (OB 86). FB 104 'SWR_AG_COM' Il blocco supporta la gestione del trasferimento dati e viene richiamato dall'FB 101 'SWR_ZYK' in background. L'utente deve solo caricare il blocco nelle due CPU. Nota L'FB 104 'SWR_AG_COM' richiama i blocchi FC 5 'AG_SEND' e FC 6 'AG_RCV' in background. Questi blocchi sono componenti di NCM S7 e devono essere caricati dall'utente in entrambe le CPU. Confermi? Altra cosa importante sono i DB1, DB2 e DB3, quetsi sono i DB di sistema che le CPU utilizzano per scambiare i dati e vengono creati automaticamente al primo avvio (Sotp Run). Attenzione, perchè questi saranno creati con una lunghezza necessaria per la quantità di dati mappata su FC100, quando modifichi la lunghezza ricordati di mettere entrambe le CPU in stop, cancellare i tre DB e procedere di nuovo al passaggio stop run per ricreare i DB con una lunghezza corretta. Dove verifichi se la CPU è master o no?
Reverendo bit Inserita: 25 marzo 2013 Segnala Inserita: 25 marzo 2013 Dimenticavo, hai dichiarato il collegamento in Net PRO?
Maxi2570 Inserita: 26 marzo 2013 Autore Segnala Inserita: 26 marzo 2013 Dunque, ho verificato tutte le condizioni che mi hai indicato e ti confermo che e' tutto a posto. Per progettare il tutto ho seguito del resto il manuale Siemens che corrisponde. Per verificare chi sia il master o lo slave uso la word di stato e, come indicato sul manuale Siemens, in particolare il bit DB5.DBX9.1 (dove DB5 e' la mia DB_COM_NO ovvero l'istanza della FB101). E' proprio questo bit che mi risulta ON su entrambe le CPU. Siccome l'esempio del manuale usa proprio questo bit per decidere se chiamare la parte di software ridondata o meno, nel mio caso entrambe le CPU richiamano tale parte di software (erroneamente). Se analizzo la DB5 online posso vedere i seguenti valori a runtime che rappresentano errori di sincronia tra le cpu. STAZIONE A DB5.DBW4 RETURN_VAL oscilla tra W#16#8013 e W#16#8015 DB5.DBW6 EXT_INFO oscilla tra W#16#8013 e W#16#0000 DB5.DBW8 STATUSWORT fissa a W#16#8025 STAZIONE B DB5.DBW4 RETURN_VAL W#16#8015 DB5.DBW6 EXT_INFO W#16#0000 DB5.DBW8 STATUSWORT W#16#8029 A quale collegamento ti riferisci su net pro? Ti riporto l'immagine della configurazione attuale e del dettaglio del collegamento tra le due cp342. https://docs.google.com/document/d/1WEQm1rzfULK9gP8ambONe5pslWvwM-7NLYQ6sk7WHzc/edit?usp=sharing https://docs.google.com/document/d/1YV1roIAHjTJY-PzRacr5eu3sfhSnwC8dPQsl0yXYUrQ/edit?usp=sharing Per caso hai il software di esempio che fornisce la Siemens nel CD menzionato nel manuale? Potresti inviarmelo? Grazie infinite per il supporto. Massimo
Reverendo bit Inserita: 26 marzo 2013 Segnala Inserita: 26 marzo 2013 A quale collegamento ti riferisci su net pro? Il NET PRO oltre ad mostrare in modo grafico la rete serve anche per impostare i collegamenti dichiarati, se non ricordo male l'unico caso in cui non si devono dichiarare i collegamenti in un progetto con ridondanza software, e se si usa la porta MPI per la ridondanza, se si usa una CP esterna come nel tuo caso si deve dichiarare il collegamento. Dichiarare un collegamento non è altro che dire alla CP chi sono i partner che partecipano alla comunicazione, selezionando la cp tasto dx inserisci collegamento. Controlla bene il manuale io ricordo di aver letto qualcosa del genere, o controlla anche nei progetti d'esempio. Se riesco come torno in ufficio do una controllata a i miei progetti.
Maxi2570 Inserita: 26 marzo 2013 Autore Segnala Inserita: 26 marzo 2013 Bingo!!! Nelle proprieta' del collegamento tra le due CP 342 non avevo abilitato un'opzione. Precisamente, doppio click sul collegamento e si accede alle proprieta' del collegamento. Poi si passa sul tab "impostazioni di rete" e quindi si preme "Opzioni". A quel punto ho abilitato il check "Considera la seguente configurazione di rete" indicando come Master DP il nodo 2 (vedi precedenti post). Appena ho salvato la configurazione le due CPU si sono sincronizzate e (ora passo a verificare piu' approfonditamente) tutto sembra funzionare come da manuale. Grazie per il supporto!
Maxi2570 Inserita: 27 marzo 2013 Autore Segnala Inserita: 27 marzo 2013 Se ti interessa posso dirti come ho risolto io il collegamento MPI tra 2 CPU e 1 HMI senza l'ausilio di repeater. Magari apro una nuova discussione. Ciao, Massimo
Reverendo bit Inserita: 28 marzo 2013 Segnala Inserita: 28 marzo 2013 Certo che si! Io ho adottato la soluzione dei reapeter, perchè il pannello non supportava gli script, con pannelli che supportano gli script puoi decidere di cambiare indirizzo del collegamentoa fronte di un'evento di perdita di comunicazione. Comunque sia posta la tua soluzione è sempre gradito avere nuove informazioni. Saluti Reverendo.
Maxi2570 Inserita: 28 marzo 2013 Autore Segnala Inserita: 28 marzo 2013 Ciao, ho postato con titolo "Condivisione di 1 pannello Simatic tra 2 CPU via MPI" Saluti, Max
anarchico Inserita: 30 giugno 2015 Segnala Inserita: 30 giugno 2015 Salve ho collegato una cp 342-5 sul rack di una CPU 315-2DP,pr utilizzarlo come master di una terza rete profibus. Fino a quando non gli inserisco slave (IM151) sulla sua rete tutto funziona alla perfezione. Non appena gli metto un IM151 la cp va in errore con la seguente dicitura: Il master DP ha assunto il funzionamento polling con i suoi slave DP. I dati utili reali (non i dati sostitutivi) vengono inviati e ricevuti. Cosa significa?
Giuseppe Signorella Inserita: 30 giugno 2015 Segnala Inserita: 30 giugno 2015 (modificato) Ciao anarchico, Accodarsi a discussioni esistenti, e sopratutto vetuste, oltre a creare confusione, e anche contro il regolamento del forum. (Che ti invito a leggere). Ti invito amche ad aprire una nuova tutta tua. *****************Questa discussione è chiusa********************* Modificato: 30 giugno 2015 da Giuseppe Signorella
Messaggi consigliati