Vai al contenuto
PLC Forum


MODBUS RTU 485: protocollo inverter Delta


odx

Messaggi consigliati

Siccome la rete Modbus funziona con un solo master che interroga gli indirizzi degli slave uno a uno, e ne riceve risposta ... mi chiedevo se posso montare un secondo master in sola ricezione a "sniffare" quindi la rete. Ovviamente conosco il protocollo della rete e so cosa aspettarmi nelle varie stringhe ... vorrei solo leggerle.

A cosa serve ? A mettermi in parallelo ad un datalogger che manda i dati verso il web. Alternativa sarebbe andare ad interrogare il web e salvare tutto in un database ... che poi andrei a leggere con WinCC, ma volevo evitare questa parte, in quanto non ho nozioni per andare ad interrogare pagine web .... 

EDITO ... il mio secondo master sarebbe una 1200 siemens con espansione 485 e utilizzerei i blocchetti  TIA modbus per leggere

Link al commento
Condividi su altri siti


Quote

mi chiedevo se posso montare un secondo master in sola ricezione a "sniffare" quindi la rete

 

Questo non è un master. Uno "sniffer"è  un disosotivo passivo che si limita a registrare quello che passa sulla linea.

In pratica tu avresti un ricevitore con interfaccia elettrica RS485,  su cui implementi parte del protocollo modbus. Non avendo un indirizzo conosciuto dal master non verrbbe mai interrogato, però puoi implementare un programma che memorizzi tutti i pacchetti di comunicazione che passano sulla linea. Che poi si possa implementare il programma con blocchi standard siemens non lo so. Sniffer così son facili da farsi con un PC o altro sistema programmabile.

Link al commento
Condividi su altri siti

Ci sarebbero tante belle cose da provare, ma il tempo manca sempre ...

Ho un telecontrollo che legge i dati da inverter di ogni marca e protocollo .... SMA, Siemens, ABB, Danfoss, Fronius, Freesun, Kako, ... e altri ancora. Tanti sono gentili e ti danno il modbus ... ma molti sono stron..... e non ti danno nulla di nulla ... tipo SMA fino allo scorso anno. In quei casi il mio predecessore ha fatto follie per decifrare il tutto, ma ne valeva la pena, c'erano diversi impianti e poi sul web era saltato fuori una sorta di manualino SMA PROTOKOL in tedesco ... e da li pian piano ... ora non hanno più segreti. 
Oggi mi trovo però in uno scontro con Delta ... il primo dopo oltre 200 impianti telecontrollati ... e forse ultimo. Non ritengo valga la pena fare un bagno di sangue, ma nemmeno ho molto tempo da dedicarci. 
Per lavorare con PC e sniffer servirebbero nozioni di C# suppongo ... 

 

So che il loro protocollo si chiama Delta Protokol .... ma non trovo ancora nulla :/

Link al commento
Condividi su altri siti

Ho notato che alcuni li hanno letti col Raspberry ( Che non ho mai usato in realtà ) e caricano i dati su un portale pvoutput ecc ecc ...

Anche li avendo tempo potrei prendere il tutto e scambiare dati al mio 1200... ma nulla.

 

L'emulatore che dici presumo sia inteso su pc ( telnet per assurdo ), ma poi dovrei portare i dati al 1200 per mandarli al telecontrol server basic di Siemens.
Credo che alla fine con qualche bel TA e delle analogiche di ingresso ... risolvo in meno tempo ;)

Se poi il futuro sarà Delta ... :D ... ci lavorerò su

Link al commento
Condividi su altri siti

...ricordo  circa 6/7 anni fa di aver avuto problematiche simili con in mezzo inverter Delta... ma rimarchiati da gefran.  E avevo l'esigenza di interrogare il drive in modus rtu da più punti . La struttura era composta da PLC S7 300 (...vipa !) e pannello PC pro-face (non ricordo chi era master/slave, se riesco a trovare il progetto magari posso essere più preciso) . 

Ricordo di essere riuscito a interrogarlo senza problemi da lato PLC e al contempo  da lato  pc pro-face proprio come uno "sniffer" .

La mappatura dettagliata per la lettura delle variabili dell'inverter me la aveva girata  proprio gefran, ricordo all'inizio di averci  lavorato un bel po, ma poi tutto è andato bene  . 

 

 

 

 

Link al commento
Condividi su altri siti

Quote

Ho notato che alcuni li hanno letti col Raspberry ....

 

Raspberry una volta configurata è un micro pc con linux come  OS, quindi gira praticamente tutto quello che gira su Linux.

 

Comunque con un po di pazienza basta avere un PC con hyperterminal e sniffi tutto quello che transita sulla linea. Se i dati da scambiare non sono molti ti può bastare hyperterminal.

Link al commento
Condividi su altri siti

Investirò del tempo per migliorare le mie conoscenze in quel campo Livio, grazie.

 

@ Platinoiridi

 

A quanto ho visto, gli inverter Delta Solivia ( fotovoltaico ) comunicano con un protocollo proprietario di cui non riesco a trovare per ora traccia sul web. Ad esempio SMA utilizza lo SMA Protocol, ma in rete c'erano documentazioni e alla fine lo abbiamo implementato, non nego che non è stato così facile, ma funziona ora.
Ho guardato i GeFran ( che ad oggi hanno dismesso il settore fv ) , ma sembrano diversi.

Link al commento
Condividi su altri siti

odx, scusami ma non avevo ben capito che si trattava di drive per fotovoltaico . In effetti sono a conoscenza che Gefran ha chiuso il settore fotovoltaico .

Io ho usato inverter Delta (serie VFD) per pilotare pompe idrauliche, e all'epoca i drive che utilizzavo erano proprio i Delta rimarchiati Gefran .

Adesso (per curiosità) ho guardato in rete il catalogo e in effetti mi pare di capire che anche per quella fascia di prodotto Gefran non usa più Delta . 

 

 

 

 

Link al commento
Condividi su altri siti

Sto cercando quel che posso sul protocollo ... al momento ho qualcosa, ma non mi basta ... o almeno non riesco a capire:


Inoltre qua non riesco a capire se ci sono eccezioni nel protocollo ... SMA ad esempio utilizza il 7D nella stringa e come chiusura, ma se è nella stringa, il 7D va messo in XOR con 20 e shiftato tutto avanti

 
cmds = [
['\x00\x09','Serial',11,0,'',100],
['\x10\x07','Date Code',11,0,'',100],
['\x10\x01','DC Cur1',0,10.0,'A',100],
['\x10\x02','DC Volts1',0,1,'V',100],
['\x10\x03','DC Pwr1',0,1,'W',100],
['\x10\x04','DC Cur2',0,10.0,'A',100],
['\x10\x05','DC Volts2',0,1,'V',100],
['\x10\x06','DC Pwr2',0,1,'W',100],
['\x10\x08','AC Volts',0,1,'V',100],
['\x10\x09','AC Power',0,1,'W',100],
['\x11\x07','AC I Avg',0,10.0,'A',100],
['\x11\x08','AC V Avg',0,1,'V',100],
['\x11\x09','AC P Avg',0,1,'W',100],
['\x13\x03','Day Wh',0,1,'Wh',100],
['\x13\x04','Uptime',0,1,'min',100],
['\x00\x01','01',1,0,'',100],
['\x00\x02','02',0,1,'',100],
['\x00\x03','03',0,1,'',100],
['\x00\x04','04',11,0,'',100],
['\x00\x05','05',11,0,'',100],
['\x00\x06','06',0,1,'',100],
['\x00\x07','07',11,0,'',100],
['\x00\x08','08',11,0,'',100],
['\x00\x40','FW Version',10,0,'',100],
['\x20\x05','AC Temp',0,1,'o',100],
['\x21\x08','DC Temp',0,1,'o',100]

 
Link al commento
Condividi su altri siti

Trovato !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

 Lo posto qua nel caso qualcun'altro ci sbatta la testa ....

Vedete se è il caso di modificare il titolo forse ... lascio a vostra discrezione

 

 

 

 

DC Curr 1, Command (Hex) 10, SubCommand (Hex) 01

Send: 02 05 01 02 10 01 A0 3C 03

Port event received 02 06 01 04 10 01 00 01 02 D1 03 - Data: [0,1] (IDC1)

 

 

DC Volts 1, Command (Hex) 10, SubCommand (Hex) 02

Send: 02 05 01 02 10 02 E0 3D 03

Port event received 02 06 01 04 10 02 00 C7 72 83 03 - Data: [199] (VDC1)

 

 

AC Current, Command (Hex) 10, SubCommand (Hex) 07

Send: 02 05 01 02 10 07 20 3E 03

Port event received 02 06 01 04 10 07 00 02 A2 D1 03 - Data: [0,2] (IAC)

 

 

AC Voltage, Command (Hex) 10, SubCommand (Hex) 08

Send: 02 05 01 02 10 08 60 3A 03

Port event received 02 06 01 04 10 08 00 E9 D2 9D 03 - Data: [233] (VAC)

 

 

AC Power, Command (Hex) 10, SubCommand (Hex) 09

Send: 02 05 01 02 10 09 A1 FA 03

Port event received 02 06 01 04 10 09 01 04 42 80 03 - Data: [260] (PAC)

 

 

DC Temp, Command (Hex) 21, SubCommand (Hex) 08

Send: 02 05 01 02 21 08 75 AA 03

Port event received 02 06 01 04 21 08 00 00 1D EF 03 - Data: [0] (DCTemp)

 

 

AC Temp, Command (Hex) 20, SubCommand (Hex) 05

Send: 02 05 01 02 20 05 B5 FF 03

Port event received 02 06 01 04 20 05 00 0E 0C 14 03 - Data: [14] (ACTemp)

 

 

AC I Avg, Command (Hex) 11, SubCommand (Hex) 07

Send: 02 05 01 02 11 07 21 AE 03

Port event received 02 06 01 04 11 07 00 02 A3 2D 03 - Data: [0,2] (IACAVG)

 

 

AC V Avg, Command (Hex) 11, SubCommand (Hex) 08

Send: 02 05 01 02 11 08 61 AA 03

Port event received 02 06 01 04 11 08 00 E9 D3 61 03 - Data: [233] (VACAVG)

 

 

AC P Avg, Command (Hex) 11, SubCommand (Hex) 09

Send: 02 05 01 02 11 09 A0 6A 03

Port event received 02 06 01 04 11 09 00 3D 82 FE 03 - Data: [61] (PACAVC)

 

 

Serial No, Command (Hex) 00, SubCommand (Hex) 01

Send: 02 05 01 02 00 01 AD FC 03

Port event received 02 06 01 0C 00 01 30 30 30 30 30 30 30 30 36 35 69 56 03 - Data: [0000000065] (SerNoShort)

 

 

 

 

 

 

 

 

Inv Type, Command (Hex) 00, SubCommand (Hex) 00

Send: 02 05 01 02 00 00 6C 3C 03

Port event received 02 06 01 15 00 00 06 12 44 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2C 55 74 03 - Data: [Type:6 Model:3.0 EU G3 DE              ,] (InvType)

 

 

Part No, Command (Hex) 00, SubCommand (Hex) 08

Send: 02 05 01 02 00 08 6D FA 03

Port event received 02 06 01 0D 00 08 45 4F 45 34 36 30 31 30 32 36 36 C2 63 03 - Data: [EOE46010266] (PartNo)

 

 

Day Kwh, Command (Hex) 13, SubCommand (Hex) 03

Send: 02 05 01 02 13 03 21 0D 03

Port event received 02 06 01 04 13 03 00 10 63 59 03 - Data: [16] (EToday)

 

 

UP Time, Command (Hex) 13, SubCommand (Hex) 04

Send: 02 05 01 02 13 04 60 CF 03

Port event received 02 06 01 04 13 04 00 1C D2 9D 03 - Data: [28] (TToday)

 

 

FW Ver, Command (Hex) 00, SubCommand (Hex) 40

Send: 02 05 01 02 00 40 6D CC 03

Port event received 02 06 01 05 00 40 02 32 1B 71 D4 03 - Data: [2.50.27] (FWVer)

 

 

DC Pwr 1, Command (Hex) 10, SubCommand (Hex) 03

Send: 02 05 01 02 10 03 21 FD 03

Port event received 02 06 01 04 10 03 00 00 62 D1 03 - Data: [0] (PDC1)

 

 

DC Pwr 2, Command (Hex) 10, SubCommand (Hex) 06

Send: 02 05 01 02 10 06 E1 FE 03

Port event received 02 06 01 04 10 06 00 00 72 D0 03 - Data: [0] (PDC2)

 

 

DC Curr 2,  Command (Hex) 10, SubCommand (Hex) 04

Send: 02 05 01 02 10 04 60 3F 03

Port event received 02 06 01 04 10 04 00 00 D3 10 03 - Data: [0] (IDC2)

 

 

DC Volts 2, Command (Hex) 10, SubCommand (Hex) 05

Send: 02 05 01 02 10 05 A1 FF 03

Port event received 02 06 01 04 10 05 00 00 82 D0 03 - Data: [0] (VDC2)

Link al commento
Condividi su altri siti

Altre info utili !

Send: 02 05 01 02 10 08 60 3A 03

It's broken down like this:

02 – STX character, start text
05 – ENQ character, indicating this message is a request
01 – Inverter address
02 – Number of bytes to follow excluding 2xCRC and ETX
10 – MSB of data address
08 – LSB of data address
60 – MSB of CRC (guess)
3A – LSB of CRC (guess)
03 – ETX character, end of text.

The inverter responds with this (also from earlier post):
Port event received 02 06 01 04 10 08 00 F4 12 94 03

02 – STX
06 – ACK character, acknowledge
01 – Inverter address
04 – Number of bytes to follow
10 – MSB of data address
08 – LSB of data address
00 – MSB data
F4 – LSB data
12 – MSB of CRC (guess)
94 – LSB of CRC (guess)
03 – ETX character, end of text.

In this case the data is 0x00F4 = 244 dec. As stated in another thread this is VAC.

Some addresses of other data:
00 00 – Type
00 01 – SerNum
00 08 – PartNum
10 01 – IDC1
10 02 – VDC1
10 03 – PDC1
10 07 – IAC
... and so forth. I've figured out a lot and can post the lot if your interested. The responses are sometimes ASCII, sometimes decimal, always ending in 03 (ETX).

Link al commento
Condividi su altri siti

bel lavoro ODX, magari può servire ad altri. Cos'è il protocollo dell'inverter Delta Solivia?

Se così modifico il titolo in modo da far capire immediatamente di cosa si tratta.

Link al commento
Condividi su altri siti

Si  Delta Solivia.

Nel mio caso ho 3 inverter monofase da 3.3 e 3 inverter trifase da 20 , ma suppongo non cambia il protocollo ... ( SMA invece lo cambia per ogni tipologia di inverter ... un bagno di sangue, e li ha cambiati pure dopo ultimo aggiornamento fw per la rimozione dei trasfo )
Suppongo ci sia tutto, il terminatore 03 dovrebbe non creare problemi. SMA termina con 7D e fa casino ... presumo volutamente ... nel protocollo, che deve essere verificato ad ogni lettura.

 

Va detto che SMA però da un paio di anni circa, fornisce optional un adattatore modbus ..che prima non esisteva e comunque alcuni inverter te li da in modbus se vai a leggere la sua webbox

Link al commento
Condividi su altri siti

SandroCalligaro

Bel lavoro!

 

Caso mai fosse utile, come sniffer seriale che può funzionare "in parallelo" ad altri programmi che usano la porta, ho trovato tempo addietro questo.

Funziona piuttosto bene, ed è uno dei pochi a permettere appunto di vedere il traffico generato da altri programmi, senza interferire.

Link al commento
Condividi su altri siti

  • 2 weeks later...
  • 1 year later...
  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...