Vilket MODBUS bibliotek använder du?
Vilket MODBUS bibliotek använder du?
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?
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?
Re: Vilket MODBUS bibliotek använder du?
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.
Portad till i stort sett alla embedded-plattformar, fullt portabel.
Finns en fri version också, från samma företag.
Re: Vilket MODBUS bibliotek använder du?
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/
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/
Re: Vilket MODBUS bibliotek använder du?
Var en hjälte och skriv ett eget open source bibliotek!
Alla specar ligger ute fritt på organisationens hemsida.
Alla specar ligger ute fritt på organisationens hemsida.
Re: Vilket MODBUS bibliotek använder du?
Börja med att titta på något av dom som finns. T.ex. libmodbus.
Jag sökte på modbus github
/π
https://github.com/stephane/libmodbusA 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.
Jag sökte på modbus github
/π
Re: Vilket MODBUS bibliotek använder du?
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å?
- Vilken adress är slutdestinationen
- Vad är funktionskoden - Läsa eller skriva
- Vad är datat som ska appliceras eller hämtas
Re: Vilket MODBUS bibliotek använder du?
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
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
Re: Vilket MODBUS bibliotek använder du?
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.
Re: Vilket MODBUS bibliotek använder du?
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.
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.
Re: Vilket MODBUS bibliotek använder du?
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.
Re: Vilket MODBUS bibliotek använder du?
Bra! Då vet jag!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
Tror ni man kan knycka libmodbus och skriva om det så det passar inbyggda system?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.
libmodbus är ju ett väldigt påkostat bibliotek, men som sagt är bara anpassad till win, lin, mac.
Re: Vilket MODBUS bibliotek använder du?
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)
Re: Vilket MODBUS bibliotek använder du?
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å!
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å!
