Vilket MODBUS bibliotek använder du?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2415
Blev medlem: 5 september 2019, 14:19:58

Vilket MODBUS bibliotek använder du?

Inlägg av DanielM »

Jag har behov utav ett MODBUS bibliotek för C. Jag vet att det finns libmodbus, men denna är bara anpassad för PC. Jag behöver något pålitligt och portabelt som passar inbyggda system, så som PC.
Den ska vara anpassad så att man bara använder t.ex. callbacks (funktionspekare) som anropar t.ex. UART eller USB porten.

Vad rekommenderar ni?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46876
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Vilket MODBUS bibliotek använder du?

Inlägg av TomasL »

https://www.embedded-experts.at/en/shop/
Portad till i stort sett alla embedded-plattformar, fullt portabel.
Finns en fri version också, från samma företag.
DanielM
Inlägg: 2415
Blev medlem: 5 september 2019, 14:19:58

Re: Vilket MODBUS bibliotek använder du?

Inlägg av DanielM »

Jag tänkte liksom öppen källkod :)
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46876
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Vilket MODBUS bibliotek använder du?

Inlägg av TomasL »

Då får du nog leta, då det inte, mig veterligen finns någon fungerande.
Så länge du inte gör kommersiella saker kan du använda deras fria version av biblioteket, naturligtvis under förutsättning att du är ok med och följer deras licens.
https://www.embedded-experts.at/en/freemodbus/about/
Användarvisningsbild
ojz0r
Inlägg: 272
Blev medlem: 14 september 2007, 19:38:04
Ort: Småland

Re: Vilket MODBUS bibliotek använder du?

Inlägg av ojz0r »

Var en hjälte och skriv ett eget open source bibliotek!
Alla specar ligger ute fritt på organisationens hemsida.
Användarvisningsbild
pi314
Inlägg: 7858
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Vilket MODBUS bibliotek använder du?

Inlägg av pi314 »

Börja med att titta på något av dom som finns. T.ex. libmodbus.
A Modbus library for Linux, Mac OS, FreeBSD and Windows

libmodbus is a free software library to send/receive data with a device which respects the Modbus protocol. This library can use a serial port or an Ethernet connection.

The functions included in the library have been derived from the Modicon Modbus Protocol Reference Guide which can be obtained from www.modbus.org.
https://github.com/stephane/libmodbus

Jag sökte på modbus github

DanielM
Inlägg: 2415
Blev medlem: 5 september 2019, 14:19:58

Re: Vilket MODBUS bibliotek använder du?

Inlägg av DanielM »

ojz0r skrev: 23 november 2024, 18:29:05 Var en hjälte och skriv ett eget open source bibliotek!
Alla specar ligger ute fritt på organisationens hemsida.
Jag har haft dessa planer. Men jag vet inte hur mycket jobb det kan vara.
Modbus är väll bara ett protokoll för minnesadresser som jag har förstått detta. Alltså borde det inte väll vara något svårt med det?

Vi kan ta t.ex. att om man har följande:
  • En callback som läser inkommande data och lagrar detta
  • En while-sats som ständigt läser om nytt inkommande data har lagrats
  • Om nytt inkommande data har lagrats så skall detta läsas.
  • Efter datat har lästs...vad ska man göra då?
Modbus som jag har förstått det så måste man ha en master + slavar. Slavarna ska kommunicera med varandra, via en master. Så om slav1 vill operera data till eller från slav2 så måste det inkommande data till mastern innehålla följande:
  • Vilken adress är slutdestinationen
  • Vad är funktionskoden - Läsa eller skriva
  • Vad är datat som ska appliceras eller hämtas
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46876
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Vilket MODBUS bibliotek använder du?

Inlägg av TomasL »

Nej, du har fattat det hela fullständigt fel, en slav kan enbart kommunicera med en master, finns inga som helst funktioner för något annat.
En slav kan endast svara på en begäran från mastern, dvs om mastern begär data från register x från en slav, så svarar slaven på just detta och ingenting annat.
Mastern skickare ett kommando med eventuell data till slav, slaven tar emot och skickar tillbaka antingen "jag har förstått" eller "något blev fel"

Det finns strikta krav på timing mellan datapaket och mellan meddelanden.
Slaven är alltid beredd att ta emot data från mastern.
Slaven får aldrig någonsin prata på linan om inte Masterns så begärt, dvs enbart som svar på ett kommando från Mastern.

VId Modbus TCP, kallas Slaven för Server och Mastern är Klienten, samma förhållande där, Servern svarar enbart på inkommande data från Klienten, ingenting annat.

Kommunikationen i ett Modbus-system är alltid enkelriktad, dvs Mastern/Klienten initierar ALLTID kommunikationen.

Dvs en Slav/Server kan aldrig någonsin begära data från mastern eller någon annan
Användarvisningsbild
ojz0r
Inlägg: 272
Blev medlem: 14 september 2007, 19:38:04
Ort: Småland

Re: Vilket MODBUS bibliotek använder du?

Inlägg av ojz0r »

Om man gör en egen enhet så finns det dock inget som hindrar att man kör både master/klient och slav/server på samma enhet.
hawkan
Inlägg: 3383
Blev medlem: 14 augusti 2011, 10:27:40

Re: Vilket MODBUS bibliotek använder du?

Inlägg av hawkan »

Det är genomgående att man går ifrån Master o Slave till förmån för
Server/Client, CICO/COCI Controller Out/Controller In, etc.

Jag tror för övrigt att det lib TomasL länkade till hade viss asynkron förmåga
och om jag förstod DanielM rätt så var det vad han önskade.
Det finns många Modbus bibliotek i Arduino-världen, inte asynkrona dock.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46876
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Vilket MODBUS bibliotek använder du?

Inlägg av TomasL »

ojz0r skrev: 24 november 2024, 15:03:32 Om man gör en egen enhet så finns det dock inget som hindrar att man kör både master/klient och slav/server på samma enhet.
Visst kan man göra det, när det gäller TCP är det ju inga problem, per se, dock måste man använda olika TCP-portar för Servern och klienten
När det gäller rtu/ascii så kan de inte dela seriell port, utan det måste vara separata seriella linor.
DanielM
Inlägg: 2415
Blev medlem: 5 september 2019, 14:19:58

Re: Vilket MODBUS bibliotek använder du?

Inlägg av DanielM »

TomasL skrev: 24 november 2024, 14:49:59 Nej, du har fattat det hela fullständigt fel, en slav kan enbart kommunicera med en master, finns inga som helst funktioner för något annat.

En slav kan endast svara på en begäran från mastern, dvs om mastern begär data från register x från en slav, så svarar slaven på just detta och ingenting annat.
Mastern skickare ett kommando med eventuell data till slav, slaven tar emot och skickar tillbaka antingen "jag har förstått" eller "något blev fel"

Det finns strikta krav på timing mellan datapaket och mellan meddelanden.
Slaven är alltid beredd att ta emot data från mastern.
Slaven får aldrig någonsin prata på linan om inte Masterns så begärt, dvs enbart som svar på ett kommando från Mastern.

VId Modbus TCP, kallas Slaven för Server och Mastern är Klienten, samma förhållande där, Servern svarar enbart på inkommande data från Klienten, ingenting annat.

Kommunikationen i ett Modbus-system är alltid enkelriktad, dvs Mastern/Klienten initierar ALLTID kommunikationen.

Dvs en Slav/Server kan aldrig någonsin begära data från mastern eller någon annan
Bra! Då vet jag!
hawkan skrev: 24 november 2024, 15:09:41 Det är genomgående att man går ifrån Master o Slave till förmån för
Server/Client, CICO/COCI Controller Out/Controller In, etc.

Jag tror för övrigt att det lib TomasL länkade till hade viss asynkron förmåga
och om jag förstod DanielM rätt så var det vad han önskade.
Det finns många Modbus bibliotek i Arduino-världen, inte asynkrona dock.
Tror ni man kan knycka libmodbus och skriva om det så det passar inbyggda system?
libmodbus är ju ett väldigt påkostat bibliotek, men som sagt är bara anpassad till win, lin, mac.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46876
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Vilket MODBUS bibliotek använder du?

Inlägg av TomasL »

Det jag länkade till är framförallt framtaget för inbyggda system, och kan enkelt portas till FreeRTOS (några argument i någon.h fil som talar om att det skall kompileras för FreeRTOS, typ), (tror till och med att det ingår i FreeRTOS som standard)
DanielM
Inlägg: 2415
Blev medlem: 5 september 2019, 14:19:58

Re: Vilket MODBUS bibliotek använder du?

Inlägg av DanielM »

Nu ska den vara 100% portabel att den till och med passar ALLA system.

När jag skriver C kod så skriver jag alltid för C89. Inte för att C89 är en bättre standard. Utan för att många system som finns idag, kompileras med äldre kompilatorer som ej har C11 eller högre.
...och dessutom är jag bäst på skriva kod här på forumet...sådeså! :D
Skriv svar