Page 2 of 4

Re: 2560 e Modbus slave

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 17 Apr 2014, 20:49
by suibaf
Che plc usate? Non siemens sicuramente! Ge? Allen Bradley?

Re: 2560 e Modbus slave

PostPosted: 17 Apr 2014, 22:35
by js-bascom
master simulator
Scusa se ti porto fuori binario e non sono di aiuto :D ....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

PostPosted: 17 Apr 2014, 22:41
by suibaf
js-bascom,

non ho capito. Quale programma?

Re: 2560 e Modbus slave

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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.jpg
https://www.dropbox.com/s/0ltagvhjmrj2k ... 20test.jpg

Non 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

PostPosted: 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

PostPosted: 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

PostPosted: 18 Apr 2014, 20:48
by deluca
Perfetto, ecco qui lo screenshot della simulazione
https://www.dropbox.com/s/rmz0qywaoopor ... .22.56.png

funzione 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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.com
Non riesco a capire, sono anni che uso plcsimulator!

Re: 2560 e Modbus slave

PostPosted: 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.png
i 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?