Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Ridondanza Software Con Cpu315 E Im153-2


Messaggi consigliati

Inserito:

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: (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: da Reverendo bit
Reverendo bit
Inserita:

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

Inserita:

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.

Inserita:

Interessante il discorso del HMI collegato a due repeater. Hai qualche dettaglio in piu' ? Che componenti sono esattamente?

Grazie

Reverendo bit
Inserita:

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:

Dimenticavo, hai dichiarato il collegamento in Net PRO?

Inserita:

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:
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.

Inserita:

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!

Inserita:

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:

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.

Inserita:

Ciao,

ho postato con titolo "Condivisione di 1 pannello Simatic tra 2 CPU via MPI"

Saluti,

Max

  • 2 years later...
Inserita:

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: (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: da Giuseppe Signorella
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...