Mjukvara till PC, modbus master och slav

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
FormerMazda
Inlägg: 6085
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Mjukvara till PC, modbus master och slav

Inlägg av FormerMazda »

Söker nåt som låter mig ansluta en del energimätare via ett par olika seriella gränssnitt till en PC, och sen att PCn i sig blir en slav att läsa från.

Svårt att beskriva på annat vis, men det kanske är tydligt nog eller ger sig med trådens utveckling.

Helst gratis såklart! :D
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Mjukvara till PC, modbus master och slav

Inlägg av TomasL »

Gratis får du svårt att hitta.
Användarvisningsbild
pi314
Inlägg: 5827
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Mjukvara till PC, modbus master och slav

Inlägg av pi314 »

Kan libmodbus vara en start?
The most popular Open Source library to communicate with Modbus devices.
• RTU (serial) and TCP (Ethernet) support
• available for Linux (packaged), FreeBSD, Mac OS and Windows
• written in C
• great test coverage and documentation
• security audits
• no dependencies
/Pi
FormerMazda
Inlägg: 6085
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: Mjukvara till PC, modbus master och slav

Inlägg av FormerMazda »

Gratis är alltid svårt, men går det så är det bättre för plånboken såklart.
Men skulle en licens vara <500kr så är det kanske inget att orda om, dock brukar det ju vara gratis, eller ett mindre lands BNP för en licens..

Libmodbus låter ganska bra i en första anblick!
Men på 2min skumning av sidan så är jag nog inte med på vad exakt det är, av namnet att döma och "written in C" så antar jag att det ett lib jag använda till egen kod, typ om jag skriver nåt i VB.Net eller liknande?
Användarvisningsbild
pi314
Inlägg: 5827
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Mjukvara till PC, modbus master och slav

Inlägg av pi314 »

pi314 skrev: 7 augusti 2023, 12:40:28 Kan libmodbus vara en start?
The most popular Open Source library to communicate with Modbus devices.
• RTU (serial) and TCP (Ethernet) support
• available for Linux (packaged), FreeBSD, Mac OS and Windows
• written in C
• great test coverage and documentation
• security audits
• no dependencies
/Pi
Edit: Jag glömde länkarna innan...
https://libmodbus.org

Github:
https://github.com/stephane/libmodbus
Senast redigerad av pi314 7 augusti 2023, 13:58:07, redigerad totalt 1 gång.
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Mjukvara till PC, modbus master och slav

Inlägg av Icecap »

Jag gjorde ett system som läste en MODBUS via RS485. Det var ganska enkelt då det bara var seriell kommunikation.

Att läsa data lite varstans ifrån o samla i en central enhet är inget problem.

At göra en t.ex. seriell länk för att andra kan hämta de värden via MODBUS protokoll är enkelt.

Jag använde ingen lib eller annat färdigt.
Användarvisningsbild
pi314
Inlägg: 5827
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Mjukvara till PC, modbus master och slav

Inlägg av pi314 »

Jag spanade in Modbus för ett drygt halvår sedan när jag insåg att jag troligen behöver det för ett projekt en bit ner på projektlistan.

Jag uppfattar det som ett bibliotek med funktioner för att kommunicera med något som har Modbus. Seriellt eller via TCP/IP.

FormerMazda: Det är ju inte helt uppenbart vad det är som du vill göra.

Här finns 15 exempel.
https://github.com/topics/libmodbus

Ett av exemplen är detta.
Modbus Client C Program with libmodbus-3.0.6 for Energy Meters
https://github.com/asura22nov/modbus-testing

/Pi
FormerMazda
Inlägg: 6085
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: Mjukvara till PC, modbus master och slav

Inlägg av FormerMazda »

Jag beskrev inte supertydligt, men i sin grund är inte mycket att beskriva.

Men mer exakt är det 3st elmätare av ett fabrikat, i en RS485-slinga med unika IDn.
I en annan slinga sitter två andra mätare, också med unika IDn förstås.
Två slingor för det är olika kommunikationshastigheter och paritet och så.

Alla dessa mätare vill jag läsa värden ur, och göra dom tillgängliga för läsning på en tredje seriell port.

PCn har jag, gränssnitten löser sig, det är mjukvaran då.
Kommer ju behöva konfas för att läsa på en knippe register från olika IDn på slingorna.

Sen som sagt så får man sätta upp en knippe register som håller alla värden för läsning från PCn.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Mjukvara till PC, modbus master och slav

Inlägg av sodjan »

En enkel PLC som sköter Modbus trafiken och sedan gör data tillgängligt (kan vara annan gränssnitt/protokoll än Modbus).
FormerMazda
Inlägg: 6085
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: Mjukvara till PC, modbus master och slav

Inlägg av FormerMazda »

Faktum är att det är en PLC som ska få mätvärdena i slutänden, men då jag inte är så vass på att sätta upp modbuskommunikation i den tänkte jag försöka åtminstone bara behöva läsa över ett gränssnitt med den.
Och dessutom läsa data formaterad som jag själv satt upp på register jag vet om.

Men, det kommer kanske inte förenkla massor i vilket fall. Annat än att loggning av mätarställning kan ju bli enklare via PCn mot via PLCn.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Mjukvara till PC, modbus master och slav

Inlägg av H.O »

Om det finns något färdigt som gör det du vill vet jag inte men jag använder Python med PyModbus för att läsa ett antal (7 tror jag det är) slavar via MODBUS RTU samt göra en del av denna data tillgänglig via MODBUS TCP. PyModbus kan alltså vara båda server och klient.
FormerMazda
Inlägg: 6085
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: Mjukvara till PC, modbus master och slav

Inlägg av FormerMazda »

Verkar som att det är som jag trodde, man får kompilera ihop sitt egna program för detta.
Inte helt säker på att jag är så sugen på det, men jag kanske tänker för mycket på framtidskompatibilitet.

Jag tror väl jag löser programmeringen, men det är ju en tröskel att sätta upp miljön och komma igång.

Nåväl, terrängen är sonderad, bara att väga för och nackdelar och ta beslut på det. :)
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Mjukvara till PC, modbus master och slav

Inlägg av H.O »

Jag måste rätta mig själv lite...
Jag använder (tydligen) minimalmodbus som RTU-klient och pyModbusTCP (inte att förväxla med pyModbus....) som TCP-server. I mitt fall så tillkom TCP-servern senare i ett tillstånd av featurecreep :-)

Hur som helst, med de två Python-biblioteken så kan det i sin enklaste form se ut så här.
Här läses två värden från en Carlo Gavazzi EM111 via MODBUS RTU och görs tillgängliga i register 0 respektive 1 på MODBUS TCP servern. För test körde jag HMI Droid för att läsa och presentera värdena från TCP-servern:

Kod: Markera allt

from time import sleep
import minimalmodbus
from pyModbusTCP.server import ModbusServer, DataBank

# Create the RTU connection for the EM111
meter = minimalmodbus.Instrument('COM1', 1)   # Meter connected at COM1 and has save address 1
meter.serial.baudrate = 9600
meter.serial.timeout = 0.5

# Create the MODBUS TCP server
server = ModbusServer("192.168.10.198", 5003, no_block=True)

try:
    server.start()
    print("MODBUS TCP Server started")
    
except:
    server.stop()
    print("Could not start MODBUS TCP Server")


while True:
    try:
      Frequency = meter.read_register(0x000F, 0, 3, False)
      Voltage = meter.read_register(0x0000, 0, 3, False)
      print("F:", Frequency/10, " V:", Voltage/10)

      DataBank.set_words(0,[Voltage])
      DataBank.set_words(1,[Frequency])
   
    except IOError:
        print("Failed to read from meter")

    except ValueError:
        print("Value error")

    except TypeError:
        print("Type Error")
   
    except KeyboardInterrupt:
      print("Abort, stopping server")
      server.stop()
      raise

    except:
        print("Something else went wrong")

    sleep(1.0)
Skärmklipp.PNG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
FormerMazda
Inlägg: 6085
Blev medlem: 27 februari 2006, 14:59:36
Ort: Tranås (Jönköping)

Re: Mjukvara till PC, modbus master och slav

Inlägg av FormerMazda »

Såg ju onekligen enkelt ut!
Ska nog kika lite på det ändå kanske..
Användarvisningsbild
AndLi
Inlägg: 17154
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Mjukvara till PC, modbus master och slav

Inlägg av AndLi »

FormerMazda skrev: 8 augusti 2023, 08:07:58 Verkar som att det är som jag trodde, man får kompilera ihop sitt egna program för detta.
Inte helt säker på att jag är så sugen på det, men jag kanske tänker för mycket på framtidskompatibilitet.

Jag tror väl jag löser programmeringen, men det är ju en tröskel att sätta upp miljön och komma igång.

Nåväl, terrängen är sonderad, bara att väga för och nackdelar och ta beslut på det. :)
Jag är ganska säker på att jag använt ett modbus lib till pyton för lite tester... då behöver du ju inte kompilera :)

Körde även libmodbus för ett c program, finns med Ubuntu så makefilen blev inte alls komplicerad!

Sen är ju inte modbus protokollet för serieport överdrivet komplicerat, så man kan ju enkelt slänga ihop de funktioner man behöver..
Skriv svar