2560 e Modbus slave

Sezione dedicata al sistema di sviluppo BASCOM-AVR per i micro AVR
At90s, Attiny, Atmega e Xmega

Re: 2560 e Modbus slave

Postby deluca » 17 Apr 2014, 14:55

@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?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: 2560 e Modbus slave

Postby suibaf » 17 Apr 2014, 18:36

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?
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby deluca » 17 Apr 2014, 20:10

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.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: 2560 e Modbus slave

Postby suibaf » 17 Apr 2014, 20:49

Che plc usate? Non siemens sicuramente! Ge? Allen Bradley?
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby js-bascom » 17 Apr 2014, 22:35

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.
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)

Re: 2560 e Modbus slave

Postby suibaf » 17 Apr 2014, 22:41

js-bascom,

non ho capito. Quale programma?
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby js-bascom » 17 Apr 2014, 22:44

Quello che hai indicato a einstein qui viewtopic.php?p=4279#p4279
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)

Re: 2560 e Modbus slave

Postby einstein » 18 Apr 2014, 07:11

@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
User avatar
einstein
 
Posts: 88
Joined: 01 Mar 2014, 15:10
Location: Siracusa

Re: 2560 e Modbus slave

Postby js-bascom » 18 Apr 2014, 07:33

Ecco lo schermo vuoto, c'e' qualche trucco per farlo lavorare? https://www.dropbox.com/s/wr9m142duw5v6 ... 20copy.jpg
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)

Re: 2560 e Modbus slave

Postby js-bascom » 18 Apr 2014, 07:41

Falso allarme, funziona!!! Dovevo solo aprire un nouvo file, ora vedro' se comunica con uno dei miei boards.
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)

Re: 2560 e Modbus slave

Postby js-bascom » 18 Apr 2014, 08:37

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.
John Samperi
Ampertronics Pty. Ltd.
www.ampertronics.com.au
* Electronic Design * Custom Products * Contract Assembly
User avatar
js-bascom
 
Posts: 176
Joined: 23 Mar 2013, 02:53
Location: Sydney, AUSTRALIA Ex Nunziata, Mascali (CT)

Re: 2560 e Modbus slave

Postby suibaf » 18 Apr 2014, 19:55

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?
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby deluca » 18 Apr 2014, 20:04

@suibaf,
andiamo con ordine, adesso provo a simulare il tuo codice .... e ti aggiorno.
lato slave hai un plc reale o un simulatore?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: 2560 e Modbus slave

Postby deluca » 18 Apr 2014, 20:48

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.....
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: 2560 e Modbus slave

Postby suibaf » 18 Apr 2014, 23:04

Lato slave ho il tuo stesso simulatore modbus.
mmmm non a me non va! :(
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby suibaf » 19 Apr 2014, 11:28

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!
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby deluca » 19 Apr 2014, 12:52

@suibaf,
tu stai spedendo su 2 slave diversi, giusto? slave2 e slave3.
mandami il codice che provo a simularlo.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: 2560 e Modbus slave

Postby suibaf » 19 Apr 2014, 14:04

Deluca,

in realtà non ho necessità di spedire a 2 slave diversi, l'ho fatto per provare a vedere se cambiava qualcosa!
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby suibaf » 19 Apr 2014, 18:27

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!
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: 2560 e Modbus slave

Postby deluca » 19 Apr 2014, 18:29

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?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

PreviousNext

Return to BASCOM-AVR

Who is online

Users browsing this forum: No registered users and 30 guests

cron