Maxi2570 Inserito: 28 marzo 2013 Segnala Inserito: 28 marzo 2013 A seguito di un altro thread riporto qui la mia soluzione per l'utilizzo di un unico pannello Simatic da 2 CPU. Nel caso particolare ho dovuto usare 2 CPU 315-2 DP in configurazione non ridondata e un pannello SImatic KTP-600 Basic Color. La configurazione HW e' la seguente: CPU A all'indirizzo MPI 2 CPU B all'indirizzo MPI 4 Pannello all'indirizzo MPI 1 Le due CPU lavorano in modalita' master/slave, tale modalita' e' stata implementata "a mano" e non tramite il pacchetto software della Siemens. Per questo sono stati usati i dati globali tramite i quali le 2 CPU si scambiano su 2 DB dedicate 2 bit: un lifebit che pulsa (running) e lo status di master/slave. Cio' che conta per la spiegazione e' sapere che entrambe possono diventare master nel caso capiscano che l'altra CPU non aggiorna piu' il suo lifebit. Nel pannello ho dichiarato i seguenti collegamenti: - link A diretto sulla CPU A all'indirizzo MPI 2 - link B diretto sulla CPU B all'indirizzo MPI 4 - activelink inizialmente diretto all'indirizzo MPI 2 tutte le variabili che si vorranno rappresentare a schermo saranno legate all'activelink, quest'ultimo infatti sara' usato dal pannello per collegarsi alla CPU master tramite la funzione "cambia collegamento". Cambiando il collegamento all'indirizzo 2 si puntera' alla CPU A, cambiandolo all'indirizzo 4 si puntera' alla CPU B. Sono state anche dichiarate le seguenti variabili: - masterswitchA sul collegamento A - masterswitchB sul collegamento B - activelinkvalue dichiarata come variabile interna e che si usera' eventualmente per rappresentare graficamente quale sia il collegamento attivo Quando la CPU A diventa master cambia il valore della variabile masterswitchA (da 0->1 o da 1->0). Alla variabile masterswitchA, sul pannello e' legato l'evento "cambia valore" e, a tale evento sono legate le 2 azioni: - "cambia collegamento" (tramite il quale si impostera' l'indirizzo 2 per il collegamento activelink) - "imposta valore" (tramite il quale si imposta un valore alla variabile activelinkvalue rappresentativo del collegamento A) Allo stesso modo, quando la CPU B diventa master cambia il valore della variabile masterswitchB (da 0->1 o da 1->0). Alla variabile masterswitchB, sul pannello e' legato l'evento "cambia valore" e, a tale evento sono legate le 2 azioni: - "cambia collegamento" (tramite il quale si impostera' l'indirizzo 4 per il collegamento activelink) - "imposta valore" (tramite il quale si imposta un valore alla variabile activelinkvalue rappresentativo del collegamento Per motivi che non comprendo, questo meccanismo funziona solo se le variabili coinvolte nella pagina attiva (io per non sbagliiare le ho messe sul modello dove quindi rappresento A o B come CPU a cui il pannello e' collegato). Ultimamente ho migliorato questo meccanismo in quanto non garantiva il collegamento alla CPU master nel caso di riavvio del pannello. Solo un paio di switch tra A e B garantiva la sincronizzazione ma ovviamente non era accettato dal cliente. Per garantire quindi un autolink alla CPU master ho usato la word di coordinazione che si puo' definire nelle proprieta' di ogni singolo collegamento. Tale word viene continuamente letta dalla CPU e contiene un lifebit proprio del pannello da cui la CPU puo' valutare lo stato del pannello. Nel caso la CPU master si renda conto che il link e' perso (lifebit che non pulsa piu') comincia a cambiare ad intervalli di 1 secondo la variabile masterswitchX dove X e' A o B a seconda di chi sia il master. Tale meccanismo garantisce il riaggancio e tutto fila liscio. Se avete soluzioni alternative... condividete. Grazie e ciao. Massimo
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