valeria.dea Inserito: 25 marzo 2014 Segnala Share Inserito: 25 marzo 2014 Ciao a tutti. Lavoro su un PLC Omron CJ2M collegato in 485 con una centralina Motortech dalla quale vorrei leggere il contenuto di alcuni registri in sequenza. Utilizzo quindi la PMCR per implementare la comunicazione in ModBUS-RTU. Quello che vorrei realizzare è una lettura dinamica dei registri, ovvero decidere volta per volta quanti registri vorrò leggere (in questo caso l'indirizzo del registro di partenza invece sarà fisso). Dal CX-Programmer darò in pasto alla PMCR l'area di memoria in cui è contenuto il numero di registri che vorrò leggere. Il messaggio da inviare è il seguente <a>+[03]+[0B38]+~(R(3),2)+<c> dove vado a leggere dal 3° membro della struttura che passo alla PMCR, il valore che mi indica il numero di registri che voglio leggere. Il messaggio di risposta dovrebbe contenere il valore in byte che attendo come risposta (al netto di indirizzo modbus, function e crc), mentre nel messaggio di invio la costruzione del frame modbus richiede un valore che intende un numero di registri da 16bit, quindi la metà. Se in ricezione al messaggio inviato ci metto qualcosa di questo tipo <a>+[03]+(R(3),1)+(W(13),R(3))+<c> mi leggerà un valore dimezzato di registri perchè il valore che gli passo lo interpreta come numero di byte e non come numero di registri a 16bit. C'è qualcuno che conosce la maniera per dirgli qual è il valore corretto oppure dovrò ovviare prevedendo un membro in struttura che mi dica anche il valore dei byte? Sarebbe più soddisfacente fare il lavoro "pulito" e non dovergli ripetere una info già interpretabile. Spero di aver spiegato bene il caso. Vi ringrazio. Saluti Valeria 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