zanellatofabio Inserito: 25 settembre 2012 Segnala Share Inserito: 25 settembre 2012 Ciao a tutti, ho notato che volendo scambiare un certo numero di variabili tramite il protocollo somachine, tra il plc M238 e il pannello hmi S5T, la comunicazione diventa molto lenta . Le variabili nel pannellino si aggiornano dopo alcuni secondi, provocando fastidiose attese nella visibilità di oggetti e nell'introduzioni di dati . Ora vengono scambiati due elenchi di variabili globali : le persistenti e un altro oggetto che ho chiamato VAR_HMI usando il protocolo somachine che è molto comodo per avere a disposizione in vijeo le variabili del programma in codesys . VAR_GLOBAL PERSISTENT RETAIN Set_T_AF_TR_1: DINT := 30; Set_T_AF_TR_2: DINT := 30; Set_T_AF_TR_3: DINT := 30; Set_T_AF_TR_4: DINT := 30; Set_T_AF_TR_5: DINT := 30; Set_T_AF_TR_6: DINT := 30; Set_T_AF_DOS: DINT := 120; Set_T_AF_TU_1: DINT := 140; Set_T_AF_TU_2: DINT := 140; Set_T_AF_TU_3: DINT := 140; Set_T_AF_TU_4: DINT := 140; Set_T_AF_TU_5: DINT := 140; Set_T_AF_TU_6: DINT := 140; Set_T_AF_TU_7: DINT := 140; Set_T_AF_TU_8: DINT := 140; Set_T_AF_TU_9: DINT := 140; Set_T_AF_TU_10: DINT := 140; Set_T_AF_TU_11: DINT := 140; Set_T_AF_TU_12: DINT := 140; Set_T_AF_BA_1: DINT := 160; Set_T_ctrl_valle: DINT := 50; Set_T_preavv: DINT := 3; Set_T_carico: DINT := 5; Set_T_scarico: DINT := 10; Set_Lunghezza_batt_1: DINT := 1000; Set_mm_imp_batt_1: WORD := 58; M_abl_FRANG: BOOL := TRUE; M_abl_LUN: BOOL := TRUE; M_abl_MAR: BOOL := TRUE; M_abl_MER: BOOL := TRUE; M_abl_GIO: BOOL := TRUE; M_abl_VEN: BOOL := TRUE; M_abl_SAB: BOOL := TRUE; M_abl_DOM: BOOL := TRUE; auto_ORE_ON_1: UINT; auto_MIN_ON_1: UINT; Conta_impulsi_B1: DWORD; END_VAR e VAR_GLOBAL lifebit_hmi: BOOL; hmi_pann_attuale: UINT; hmi_pann_rich_plc: UINT; array_allarmi: ARRAY[0..63] OF BOOL; hmi_PB_mute: BOOL; hmi_PB_reset_mt: BOOL; hmi_PB_set_clock: BOOL; hmi_Allarmi_presenti: BOOL; hmi_Allarme_sirena: BOOL; hmi_lampeggio_all: BOOL; hmi_fc_bilancia: BOOL; hmi_vis_liv_batt: WORD; END_VAR VAR_GLOBAL RETAIN i_Anno: UINT; i_Mese: UINT; i_Giorno: UINT; i_Ore: UINT; i_Minuti: UINT; i_Secondi: UINT; mod_Anno: BOOL; mod_Mese: BOOL; mod_Giorno: BOOL; mod_Ore: BOOL; mod_Minuti:BOOL; mod_Secondi:BOOL; consenso_set_clock: BOOL; u_Day_of_week: UINT; u_Anno: UINT; u_Mese: UINT; u_Giorno: UINT; u_Ore: UINT; u_Minuti: UINT; u_Secondi: UINT; Lunghezza_att_batt_1 :DWORD; hmi_vis_mt: DWORD; hmi_fine_mt: BOOL; END_VAR Le variabili sono distribuite in una trentina di pagine ; ho chesto troppo ? La cosa che non capisco è che pare che il pannello scambi tutte le variabili non quelle che la pagina visualizzata ha inserite . Qulacuno ha riscontrato un problema simile e ha trovato qualche sistema per velocizzare lo scambio dati ? Link al commento Condividi su altri siti More sharing options...
MaxSub Inserita: 26 settembre 2012 Segnala Share Inserita: 26 settembre 2012 Ciao Verifica che in Vijeo in Gestore I/O la velocità di scansione della tua apparecchiatura sia impostata in veloce. COntrolla anche che il baud rate della porta sia il massimo possibile... se ancora non ti basta passa in modbus. Io mi sono lamentato più volte della lentezza del protocollo SoMachine ma ad oggi non ho visto miglioramente. Peccato perchè è comodissimo!! Link al commento Condividi su altri siti More sharing options...
zanellatofabio Inserita: 26 settembre 2012 Autore Segnala Share Inserita: 26 settembre 2012 Grazie MaxSub, visto che il protocollo somachine era già settato tutto al massimo della velocità, oggi pomeriggio ho fatto delle prove col modbus . La comunicazione si velocizza eccome, ma dopo aver provato invano i vari importa ed esporta da lato vijeo e lato somachine per cercare di portare i nomi delle variabili dal programma codesys all'editor delle variabili di vijeo, mi sono bloccato . Ma non esite un modo per fare questo senza scrivere a mano nell'editor di vijeo tutti i nomi delle variabili ? Ciao da Fabio Link al commento Condividi su altri siti More sharing options...
MaxSub Inserita: 28 settembre 2012 Segnala Share Inserita: 28 settembre 2012 Che io sappia no. Di solito copi il nome della variabile da SoMachine in Vijeo e poi imposto l'indirizzo. In modbus è un casino se ti serve avere a pannello delle variabili persistent. Io mi sono inventato una soluzione ma è lunghina da spiegare... se dovesse servirti fammi sapere. Ciao Link al commento Condividi su altri siti More sharing options...
pidds Inserita: 21 novembre 2012 Segnala Share Inserita: 21 novembre 2012 Ciao, beh per scambiare delle variabili in modbus basta allocarle, ovviamente quelle persistenti non possono essere allocate, l'unico modo è copiare le variabili allocate nelle persistenti mentre il programma gira e al primo giro dopo il riavvio scrivere le persistenti nelle variabili allocate. if first_cycle then var_modubus:=persistent_variable; else persistent_variable:=var_modbus; end_if ciao 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