Page 2 of 4
Re: 2560 e Modbus slave
Posted:
17 Apr 2014, 14:55
by deluca
@suibaf, ho abbastanza esperienza con Modbus e altrettanto con la lib di bascom che tralaltro è affidabilissima.
Mi sa che stiamo creando un pò di confusione.
Quando parli di 2560-comunicazione master.... (tanto per chiarire le idee)......
Il PLC spedisce una richiesta funzione, il micro è in ascolto, riconosce la funzione, elabora i dati da spedire, prepara il pacchetto aggiungendo il CRC, e lo rispedisce al PLC? ......o altro?
Re: 2560 e Modbus slave
Posted:
17 Apr 2014, 18:36
by suibaf
Ciao,
si ho anche io abbastanza esperienza con modbus, con plc essenzialmente e con strumentazione in campo. Con i micro no.
Comunque concettualmente, al 2560 stò facendo fare il master.......colui che interroga gli slave. Lo slave nel mio caso è un simulatore di slave che uso forse da 10 anni (
http://www.plcsimulator.org/). Se dici che è stabile ovviamente ci credo, avrò qualche altro problema, ho un convertitore rs485-->rs232 in mezzo, ma è di ottima qualità, non voglio credere che non funzioni bene, l'ho sempre usato qui in laboratorio. L'ho usato per esempio per i test per la comunicazione con l'rfid (che funziona alla grande finalmente) senza sbagliare un bit. Ci devo lavorare sopra ancora un pò, è possibile che stia sbagliando qualcosa. Per cosa usi modbus?
Re: 2560 e Modbus slave
Posted:
17 Apr 2014, 20:10
by deluca
Molti degli apparati attorno agli acceleratori, dal controllo del vuoto alla criogenia, dall' RF al controllo dei canali magnetici, comunicano in modbus con i plc distribuiti lungo le linee di accelerazione.
Si tratta chiaramente di apparati per il controllo di processo di tipo slow-control.
Proprio in questi gg stiamo completando l'interfaccia tra un PLC ed una fpga-board per la generazione di segnali di timing molto veloci e molto complessi. Il PLC riceve e trasmette in modbus molti parametri alla scheda fpga, un microcontrollore fa da bridge convertendo il protocollo modbus (linea rs485) in un protocollo proprietario ed usando la SPI per trasferire i dati circa la struttura del fascio alla fpga. La cosa particolare è che il microcontrollore è sintetizzato su fpga altera, è compatibile AVR ma runna a 150MIPS.
Re: 2560 e Modbus slave
Posted:
17 Apr 2014, 20:49
by suibaf
Che plc usate? Non siemens sicuramente! Ge? Allen Bradley?
Re: 2560 e Modbus slave
Posted:
17 Apr 2014, 22:35
by js-bascom
master simulator
Scusa se ti porto fuori binario e non sono di aiuto
....ma ti funziona bene il programma scaricato da radzio? Io l'ho scaricato pero' mi da solo uno schermo vuoto.
Re: 2560 e Modbus slave
Posted:
17 Apr 2014, 22:41
by suibaf
js-bascom,
non ho capito. Quale programma?
Re: 2560 e Modbus slave
Posted:
17 Apr 2014, 22:44
by js-bascom
Quello che hai indicato a einstein qui
viewtopic.php?p=4279#p4279
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 07:11
by einstein
@js-BASCOM
a me il programma funziona anche se adesso devo capire meglio come usarlo. devo anche fare il firmware per il micro, diciamo che sto lavorando sulla versione slave-modbus.
lo sto usando con xp e non mi da schermo vuoto.
ciao
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 07:33
by js-bascom
Ecco lo schermo vuoto, c'e' qualche trucco per farlo lavorare?
https://www.dropbox.com/s/wr9m142duw5v6 ... 20copy.jpg
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 07:41
by js-bascom
Falso allarme, funziona!!! Dovevo solo aprire un nouvo file, ora vedro' se comunica con uno dei miei boards.
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 08:37
by js-bascom
Allora funzionano gli input register e gli input status, lo offset e di zero invece di uno.
https://www.dropbox.com/s/cz4wcghwkjir6 ... 20test.jpghttps://www.dropbox.com/s/0ltagvhjmrj2k ... 20test.jpgNon sono sicuro come o se e' possibile scrivere al board come faccio con Modview.
E grazie di avermi incorraggiato ad usare dropbox einsten.
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 19:55
by suibaf
Sempre a proposito di Modbus. Ho due comandi consecutivi:
- Code: Select all
Print #3 , Makemodbus(2 , 6 , 100 , Rcv_buff(8));
Waitms 500
Print #3 , Makemodbus(2 , 6 , 110 , Rcv_buff(10));
Però solo la prima viene eseguita, la seconda no! Se tolgo la prima allora mi viene eseguita la seconda!
Dove sbaglio?
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 20:04
by deluca
@suibaf,
andiamo con ordine, adesso provo a simulare il tuo codice .... e ti aggiorno.
lato slave hai un plc reale o un simulatore?
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 20:48
by deluca
Perfetto, ecco qui lo screenshot della simulazione
https://www.dropbox.com/s/rmz0qywaoopor ... .22.56.pngfunzione 6, e con un refresh-time di 500mSec incremento il valore sul registro all'indirizzo zero.
sto effettuando altri test.....
Re: 2560 e Modbus slave
Posted:
18 Apr 2014, 23:04
by suibaf
Lato slave ho il tuo stesso simulatore modbus.
mmmm non a me non va!
Re: 2560 e Modbus slave
Posted:
19 Apr 2014, 11:28
by suibaf
Pensando di riuscire a prenderlo in giro ho fatto:
- Code: Select all
If Mem_modbus = 0 Then
Print #3 , Makemodbus(2 , 6 , 100 , Rcv_buff(8));
Mem_modbus = 1
Else
Print #3 , Makemodbus(3 , 6 , 110 , Rcv_buff(10));
Mem_modbus = 0
End If
Niente da fare esegue sempre e solo la prima operazione. Se cancello la prima , allora esegue la seconda!
Re: 2560 e Modbus slave
Posted:
19 Apr 2014, 12:52
by deluca
@suibaf,
tu stai spedendo su 2 slave diversi, giusto? slave2 e slave3.
mandami il codice che provo a simularlo.
Re: 2560 e Modbus slave
Posted:
19 Apr 2014, 14:04
by suibaf
Deluca,
in realtà non ho necessità di spedire a 2 slave diversi, l'ho fatto per provare a vedere se cambiava qualcosa!
Re: 2560 e Modbus slave
Posted:
19 Apr 2014, 18:27
by suibaf
Deluca,
credo sia il mio simulatore a non funzionare bene, anche se i sembra che tu usi lo stesso:
http://www.plcsimulator.org/Ho provato con un altro e funziona:
www.modbustools.comNon riesco a capire, sono anni che uso plcsimulator!
Re: 2560 e Modbus slave
Posted:
19 Apr 2014, 18:29
by deluca
Ho avuto modo di simulare il codice che hai postato altrove..., attenzione che lì ti bacchettano
- Code: Select all
'-----------------------------------------------------------------------------------------
'rs485-modbus-master_2560.bas
'FS
'-------------------------------------------------------------------------------
$regfile = "m2560def.dat" ' used micro
$crystal = 16000000 ' used xtal
$hwstack = 40
$swstack = 40
$framesize = 40
'-------------------------------------------------------------------------------
$lib "modbus.lbx" ' specify the additional library
'the libray will call a routine for UAR0,UART1,UAR2 and/or UAR3.
'when you get an error message that a label is not found with _SENDCHAR3 or _SENDCHAR4 then add these labels
'when you later use these routines you might get a duplicate label error and then you need to remove them
Config Print2 = Portc.0 , Mode = Set 'porta seriale per Modbus
Config Pinc.0 = Output
Rs485dir Alias Portc.0 'make an alias
'set direction register to output
Rs485dir = 0 ' set the pin to 0 for listening
'configure the second UAR for RS485/MODBUS. Make sure all slaves/servers use the same settings
Config Com3 = 19200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'use OPEN/CLOSE for using the second UART
Open "Com3:" For Binary As #3
'dimension some variables
Dim W As Word
'Print "RS-485 MODBUS master"
Do
Waitms 500
Incr W ' delay
Print #3 , Makemodbus(2 , 6 , 100 , W);
Waitms 200
Print #3 , Makemodbus(2 , 6 , 110 , W);
Loop
Close #3
_sendchar0:
_sendchar1:
_sendchar4:
End
e........... come pensavo funziona, vedi qui:
https://www.dropbox.com/s/jz6mvrwpcsf6x ... .21.22.pngi 2 registri vengono aggiornati senza prb. ho inoltre aumentato la freq di rate portando a 100mSec il delay tra i print.
Stai simulando o usando un plc reale?