dcsautomazione Inserito: 27 febbraio 2016 Segnala Inserito: 27 febbraio 2016 Salve a tutti vorrei chiedere un aiuto per l'utilizzo di un CP341 modbus master, dovrei dialogare con uno slave. Ho letto i manuali è ho eseguito passo passo le istruzioni,la comunicazione TXD e RXD si vede i led lampeggiano,l'idirizzo dello slave e 1 e la funzione e la 3 ma non riesco a capire perchè non leggo i valori dei registri dello slave. Qualcuno può darmi un suggerimento? Grazie Salvo B.
dcsautomazione Inserita: 27 febbraio 2016 Autore Segnala Inserita: 27 febbraio 2016 Ho provato con il file di esempio Siemens : U M 120.7 //Trigger SEND UN DB40.DBX 0.0 //SEND_REQ UN DB40.DBX 0.4 //SEND_DONE UN DB40.DBX 0.5 //SEND_ERROR R M 120.7 //Reset Trigger BSEND S DB40.DBX 0.0 //Set SEND_REQ // ------------------------ // Generate edge SEND_REQ // ------------------------ U( O DB40.DBX 0.4 //SEND_DONE O DB40.DBX 0.5 //SEND_ERROR ) U DB40.DBX 0.0 //SEND_REQ R DB40.DBX 0.0 //SEND with REQ=0 // ------------------------ // Supply LEN // ------------------------ L W#16#20 //Length SEND-Data T DB40.DBW 10 //SEND LEN // ------------------------ // SEND with Instance-DB // ------------------------ CALL "P_SND_RK" , "IDB_P_SND_RK" SF :='S' REQ :=DB40.DBX0.0 R :=DB40.DBX0.1 LADDR :=272 DB_NO :=42 DBB_NO :=0 LEN :=8 R_CPU_NO:= R_TYP :='X' R_NO := R_OFFSET:= R_CF_BYT:= R_CF_BIT:= DONE :=DB40.DBX0.4 ERROR :=DB40.DBX0.5 STATUS :=DB40.DBW12 // ------------------------------- // Check "Complete without error" // ------------------------------- U DB40.DBX 0.4 //DONE ? SPBN CON1 //if NO L DB40.DBW 6 //"Complete without Error" + 1 //increment counter T DB40.DBW 6 NOP 0 NOP 0 //further user functions NOP 0 SPA LEAV // ------------------------------- // Check "Complete with error" // ------------------------------- CON1: U DB40.DBX 0.5 //ERROR ? SPBN CON2 //if NO L DB40.DBW 8 //"Complete with error" + 1 //increment counter T DB40.DBW 8 NOP 0 NOP 0 //Error-Handling NOP 0 L 0 L DB40.DBW 12 //if STATUS <> 0 ==I SPB LEAV T DB40.DBW 14 //save STATUS SPA LEAV // ---------------------------- // Check "Error in STATUS" // ---------------------------- CON2: L 0 L DB40.DBW 12 //if STATUS <> 0 ==I SPB LEAV T DB40.DBW 14 //save STATUS NOP 0 // NOP 0 //Error-Handling NOP 0 LEAV: CLR SET = DB41.DBX 0.0 //RCV with EN_R=1 // ------------------------ // RCV with Instance-DB // ------------------------ CALL "P_RCV_RK" , "IDB_P_RCV_RK" EN_R :=DB41.DBX0.0 R := LADDR :=DB41.DBW16 DB_NO :=43 DBB_NO :=0 L_TYP := L_NO := L_OFFSET:= L_CF_BYT:= L_CF_BIT:= NDR :=DB41.DBX0.4 ERROR :=DB41.DBX0.5 LEN :=DB41.DBW10 STATUS :=DB41.DBW12 // ------------------------------- // Check "Receive without error" // ------------------------------- U DB41.DBX 0.4 //NDR ? SPBN CON1 //if NO L DB41.DBW 6 //"Receive without error" + 1 //increment counter T DB41.DBW 6 L DB41.DBW 10 //save RECEIVE-Length T DB41.DBW 4 SPA LEAV // ------------------------------- // Check "Receive with error" // ------------------------------- CON1: U DB41.DBX 0.5 //ERROR ? SPBN CON2 //if NO L DB41.DBW 8 //"Receive with error" + 1 //increment counter T DB41.DBW 8 L 0 L DB41.DBW 12 //if STATUS <> 0 ==I SPB LEAV T DB41.DBW 14 //save STATUS SPA LEAV // ---------------------------- // Check "Error in STATUS" // ---------------------------- CON2: L 0 L DB41.DBW 12 //if STATUS <> 0 ==I SPB LEAV T DB41.DBW 14 //save STATUS LEAV: CLR Non riesco a leggere i valori dei registri:
dcsautomazione Inserita: 28 febbraio 2016 Autore Segnala Inserita: 28 febbraio 2016 Niente da fare avro letto il manuale 20 volte, sembra essere tutto apposto non riesco proprio a capire dove leggere il lavore dei registri dello slave.
Frank681 Inserita: 1 marzo 2016 Segnala Inserita: 1 marzo 2016 Ciao Scusa una domanda che slave stai usando ? Stai comunicando con un PLC slave ?
dcsautomazione Inserita: 2 marzo 2016 Autore Segnala Inserita: 2 marzo 2016 Ciao no si tratta di un sistema di pesatura a canali vibranti con celle di carico per materiali inerti a granuli e una centralina bilanciai. Salvo B.
0.0 Inserita: 3 marzo 2016 Segnala Inserita: 3 marzo 2016 I dati te li trovi nel db43 dal byte 0 in poi. Gli fb non ti restituiscono errori? Nel buffer di diagnostica della CPU ci sono errori riguardo a questa comunicazione?
busanela Inserita: 3 marzo 2016 Segnala Inserita: 3 marzo 2016 Verifica bene il codice dell'esempio: mi ricordo che nel programma Siemens c'è un errore, mi sembra sul puntamento ai merker di appoggio di trasferimento, non ricordo bene dove, ma c'è.
dcsautomazione Inserita: 5 marzo 2016 Autore Segnala Inserita: 5 marzo 2016 Ciao busanella credo che ci sia proprio qualcosa che non va e poi non riesco a leggere tutti i valori in una sola volta esempio se dico leggi dal registro 1 al 150 non legge tutto smette di lampeggiare pure il led rx massimo che posso scrivere e 127. se scrivo leggi dal 50 al 100 allora li legge ma quelli che stanno dal 1 al 49 e tutto a zero. Grazie s.b
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