Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Mini-guide: Hvordan bruke Modbus (med HomeSeer)


Moskus

Anbefalte innlegg

Du blingser litt. Den interne bussen er Modbus RTU (mellom aggregat og betjeningspanel og IAM). IAM konverterer Modbus RTU til Modbus TCP. Dette står flere plasser i dokumentasjonen fra Systemair.

Om det er samme bus eller om det er 2 atskilte busser på aggregatet er jeg ikke sikker på - meget mulig det er en intern og en ekstern.

 

Du nevner at det brukes et ip interfsce for monitorering - det eneste interfacet som brukes er homeseer. Du må jo ha noen form for grensesnitt hvor du kan lese av en verdi på registeret du spør etter? Alternativt laste ned modbus poll og kjøre registerene der.

det er ingen forskjell på modbus rtu og modbus tcp annet enn at man kan få en høyere hastighet med modbus tcp (Grovt fortalt) Modbus TCP er bare modbus RTU wrapped i ethernet.

 

Mitt aggregat ble levert med første spftware versjon, og jeg hadde ingen problemer med å polle registre.
 

kan du poste skjermbilde av hvordan du poller ett register så kanskje det blir enklere å forstå hvor du stopper opp hen?

Lenke til kommentar
Del på andre sider

Jeg siterer bare supporten fra produsenten i litaugen, jeg skal ikke påstå at de har rett men de har iallefall svart nei på spørsmålet om det er samme bus på HMI og A/B terminalene.

Nå skal det sies at svarene jeg fikk ble kortere jo mer avanserte spørsmålene ble, man vet aldri hvem som sitte og svarer slike support adresser. Men det vil jo være klønete å svare feil på en påstand. Måten displayer blir koblet tilsier at det ikke er modbus med tanke på ende motstand, men protokollen kan jo være lik, de har jo begrenset kabellengden.

Jaja, nok om det. Modbus grensesnittet jeg bruker er ett modbus-rtu til knx interface. Legger ved bilde av oppsettet av modbus busen samt ett bilde som viser hvordan hvert poll settes opp. Jeg har ingen monitorering på dette annet enn det interfacet måtte sende ut av ferdig dekodet data, noe jeg foreløig ikke har fått til å virke.

Forøvrig har jeg prøvd litt forskjellig av innstillinger men kanskje ikke den rette kombinasjonen.Har også forsøkt å endre baudrate på aggregatet samt bytte polarisasjon. Er desverre ikke hjemme igen før om noen uker så får ikke testet så mye til da. Venter også ett kina-interface til da for å feilsøke.

 

Er det noen som har screenshoot av modbus poll testing med VSR-300/500?

2019 01 07 - Virker ikke.jpg

2019 12 23 - Systemair - Virker ikke.jpg

Lenke til kommentar
Del på andre sider

Bare litt oppklaring for Modbus generelt

 

Mer jeg leser om modbus jo tryggere blir jeg på antakelsene mine. Modbus RTU kan bare ha en Master og flere slaver. Det er kun master som poller. D.v.s at RJ11-porten og de andre klemme-terminalene er to separate Modbus RTU busser over RS-485.

 

IAM og alle andre enheter som oversetter til Modbus TCP vil fungere som en RTU-master. Alle klienter som leser via ethernet på TCP vil være en logisk Master men kun på TCP-siden.

 

Hvis man har to RTU-mastere på samme buss vil det bli kollisjoner.

 

Det står i IAM-manualen at det er en RJ10 modbus-kabel og at det er Modbus RTU til TCP konvertering.

 

Så er det forvirringen med gamle hovedkort med Modbus-connector på hovedkortet, hvor det ikke finnes en ekstern koblingsboks.

I mitt tilfelle med SAVE VTR 300 mener jeg HMI touch display er koblet rett til hovedkortet og både RJ11 og knivkontaktene for Modbus var ledige, så min IAM er alene på en RJ11-kontakt. Det hadde vært interessant om IAM også hadde fungert på Modbus-knivkontaktene A(+) og B(-). 

 

Det jeg sliter med er at de leverer en RJ-11-splitter for å kunne koble på eksternt kontroll-panel sammen med IAM. Hvordan de løser dette kan være noe proprietært. Tror jeg skal spørre han jeg snakker med nå i Latvia angående mine rare svar fra Modbus-forespørsler.

Lenke til kommentar
Del på andre sider

Aggregatet er vel master. Tilkoblede enheter blir (adresserte) slaver.

 

RJ11 splitter er istedenfor å klippe kabel og skjøte..?

2 ledere til strøm (til HMI) og 2 ledere til modbus + evnt ground.

 

Hvilke rare svar får du fra dine modbus-forespørsel? Hvilke registre spør du på?

Endret av MrE
Lenke til kommentar
Del på andre sider

Hvor er det dere leser at hmi er modbus? Noen som har prøvd å lese trafikken på linjen?
Man kan oppdatere software på aggregatet ved hjelp av IAM eller displayet, hvordan skal dette foregå om det er modbus?
Måten det kobles tilsier heller ikke modbus.

Mulig det er forskjell på eldre vsr og ny, modbus registrene ble endret rundt 2017 eller noe sånt.

Lenke til kommentar
Del på andre sider

43 minutes ago, MrE said:

Aggregatet er vel master. Tilkoblede enheter blir (adresserte) slaver.

 

RJ11 splitter er istedenfor å klippe kabel og skjøte..?

2 ledere til strøm (til HMI) og 2 ledere til modbus + evnt ground.

 

Hvilke rare svar får du fra dine modbus-forespørsel? Hvilke registre spør du på?

 

Ikke i følge Systemair i Litauen:

Mitt spm: This meaning the VTR 300 unit is the master and continuously pushing all values to the slaves and polling for change requests? 

Svar: This is not true. VTR 300 is pushing data then when he gets request from Modbus master to push the data.

 

Mine rare svar fra Modbus er nå fikset. Samme fyren som har gitt meg disse svarene la merke til at min Java-Modbus-klient EasyModbus har feil offset. Alle adressene lå 1 for høyt. Når jeg trakk fra 1 på alle spørringene ble det korrekt. 

 

11 minutes ago, bergen77 said:

Hvor er det dere leser at hmi er modbus? Noen som har prøvd å lese trafikken på linjen?
Man kan oppdatere software på aggregatet ved hjelp av IAM eller displayet, hvordan skal dette foregå om det er modbus?
Måten det kobles tilsier heller ikke modbus.

Mulig det er forskjell på eldre vsr og ny, modbus registrene ble endret rundt 2017 eller noe sånt.

 

Jeg har vel ikke lest at HMI er modbus. Så lenge det er koblet på samme fysiske interface som et eksternt panel og IAM kan være må det være Modbus siden IAM er modbus. Hvis det er Touch-panelet som er fast montert på skapet og er koblet i egen plugg/kontakt så kan det være hva som helst.

 

Ett tidligere svar på mine spørsmål om hva som er master og slave, som ikke akkurat gjør det klarere for min del.

 

Your question is a bit unclear for me. But I will try to answer it. You can use IAM as Modbus TCP slave and external control panel. External control panel doesn’t affect IAM Modbus TCP connection. Is it same if You have external control panel and IAM which is connecting to cloud.

 

Litt "- God dag man. - Økseskaft." jeg spurte oprinnelig ikke om TCP men kun seriell-bussen på aggregatene. 

Lenke til kommentar
Del på andre sider

@strips  Man adresserer ikke master i Modbus, man adresserer slavene. HMI (og IAM) adresseres, aggregatet adresseres ikke. Hvis HMI hadde vært slavene ville det vært full krasj med en gang man hekter på 2-3-4-5 panel.

 

@bergen77  Koblingen tilsier faktisk at det kan være modbus. Vi vet at IAM er modbus, og IAM hektes sammen med HMI. Det er derfor nærliggende å tro at HMI også er modbus.

At man kan oppdatere software fra displayet betyr nok mer at man kan starte oppdateringen fra displayet, såfremt man har IAM-modulen.

 

Jeg regner med vi alle snakker om Systemair SAVECair-aggregatene, som ble lansert 2017. Forskjell på VTR og VSR er at VTR er vegghengt modell og VSR er loftsmodell. Nummer bak modell er luftmengde. Automatikk er lik på alle aggregatene.

Lenke til kommentar
Del på andre sider

Nei man kan oppdatere kun ved hjelp av displayet slik jeg har blitt forklart, da må displayet ha ny software.
Jeg har fortsatt ikke tro på at det er en ren modbus forbindelse til displayene.
Det er det jeg blir forklart fra Litauen. Sikkert samme karen som svarer deg.

Men det er igrunn mindre viktig om det er modbus eller noe annet. Det er terminalene A og B som skal brukes og der er aggregater modbus slave.

 

Could you please explain to me how IAM can be a Modbus TCP gateway when connected to the "display line" RS485?

SAVE units have it is own internal communication protocol between displays, IAM and mainboard.

When IAM is configured as Modbus TCP gateway, IAM becomes converter from SAVE unit internal communication protocol to Modbus TCP communication protocol.

Endret av bergen77
Lenke til kommentar
Del på andre sider

@MrE, enig angående Modbus master. Det er noe her som ikke henger på greip. Systemair sier at aggregatet  ikke er master. 

 

@bergen77, Det står i IAM-manualen at den går på Modbus og oversetter fra Modbus TCP til Modbus RTU, samt at det følger med en RJ10-modbuskabel.

 

Aggregatene har modbus-adresse 1 og IAM har modbus-adresse 2. Hvis det kun er slaver som er adresserte så er både IAM og aggregat slaver. HMI er kanskje master?

 

Eller så har @bergen77 rett og det er noe annet proprietært i tillegg.

 

Argh ?

 

Sitat fra Modbus variabel-listen får meg til å tro at HMI / kontrollpanel er master og at A/B-terminalene er en egen buss da man som regel slenger på en 3. part Master for å lese ut Modbus RTU. 

Quote

1 Information
Modbus is a serial communication protocol used for transmitting information over serial lines between electronic devices. The device requesting the information is called “Master”, while devices supplying the requested information are “Slaves”. When it comes to planning data communication for open, multi-vendor industrial control systems, Modbus is
the first choice of end users and integrators alike.


The Modbus/RTU protocol defines how a “master” device polls one or more “slave” devices to read and write data in real time by means of RS232, RS422, or RS485 serial data communication. Modbus/TCP, an extension of Modbus/RTU, defines how Modbus/RTU and Modbus/ASCII messages are encoded within and transported over TCP/IP-based networks. Modbus/TCP is just as simple to implement and flexible to apply as the original Modbus/RTU.


1.1 Physical layer
New Systemair controls have standard and readily available Modbus/RTU over three-wire (A, B and GND) RS485 on the Connection Board (CB) and Modbus/TCP over TCP/IP using Internet Access Module (available as an accessory - Art. No. 211243). For Modbus/TCP connection over TCP/IP using Internet Access Module refer to the IAM quick guide.


Slave address: 1 to 247
Baud rate: 9600 to 115200
Parity: None, Even, Odd
Stop bits: 1 (fixed)


Parameters can be changed in Modbus page (Service -> Communication -> Modbus) in the Control Panel.

 

Lenke til kommentar
Del på andre sider

Nå fikk jeg også denne fra Litauen:

Quote

Communication between IAM and SAVE VTR 300 external control panel has no relation with Modbus.

 

Det er forsåvidt den eneste fornuftige forklaringen. Når det snakkes om konvertering på IAM så kan forsåvidt transporten av Modbus RTU være noe helt annet på RJ11-pluggen.

Lenke til kommentar
Del på andre sider

8 minutter siden, strips skrev:

Nå fikk jeg også denne fra Litauen:

 

Det er forsåvidt den eneste fornuftige forklaringen. Når det snakkes om konvertering på IAM så kan forsåvidt transporten av Modbus RTU være noe helt annet på RJ11-pluggen.

Det kan godt være dette stemmer, og er vel den eneste forklaringen man ikke trenger å sette spørsmålstegn på. Får se om jeg gidder å hekte på RTU gateway en day mellom HMI og aggregat ?

 

Mens dere er igang med systemair avd litauen - kan dere spør hva som må skiftes for å oppgradere ett VSR 300 aggregat til VSR 500 aggregat? Er det bare viftene? Aggregatene ser ut til å like store fysiske mål...

De var ikke like store nei..

Endret av MrE
Lenke til kommentar
Del på andre sider

Tror ikke vi skal bruke så mye tid på den andre busen, den skal ikke brukes til noe uansett. Jeg får stadig ikke noe ut fra terminalene A og B, men må nok vente til jeg får interface til å teste. Men oppsettet burde være likt som på deres rtu/tcp gateway. Noen av dere som kan teste å polle registerene 6000-6005? Det skal være klokken på ventilasjonen. Jeg må i tillegg til å sette registeret rett også sette konvertering til knx rett.

Lenke til kommentar
Del på andre sider

33 minutter siden, bergen77 skrev:

Tror ikke vi skal bruke så mye tid på den andre busen, den skal ikke brukes til noe uansett. Jeg får stadig ikke noe ut fra terminalene A og B, men må nok vente til jeg får interface til å teste. Men oppsettet burde være likt som på deres rtu/tcp gateway. Noen av dere som kan teste å polle registerene 6000-6005? Det skal være klokken på ventilasjonen. Jeg må i tillegg til å sette registeret rett også sette konvertering til knx rett.

 

6000 ga ingen resultat. 6001 til 6006 viste dato og klokke

image.png.bb80d8002c0ca7de064db3a597eea0e8.png

 

 

 

 

EDIT:

 

Kjørte registrene gjennom CAS Modbus scanner.

Function 03 Read holding register.

Det som er under offset er adressen man finner i systemair variable list. Kanskje du kan prøve å benytte det som står under standard adress. Det har vel noe med hvordan ditt adapter leser adresser.

image.png.f6b92722e5645cae35d1985a70675920.png

Endret av MrE
Lenke til kommentar
Del på andre sider

6000 - 6006 var registerene vi sjekket for å finne ut at jeg måtte trekke fra 1 på alle adressene i EasyModbus. 

 

Dump fra scriptet mitt.

6001, returned: 2020, REG_TIME_YEAR
6002, returned: 1, REG_TIME_MONTH
6003, returned: 7, REG_TIME_DAY
6004, returned: 16, REG_TIME_HOUR
6005, returned: 1, REG_TIME_MINUTE
6006, returned: 52, REG_TIME_SECOND


 

Lenke til kommentar
Del på andre sider



 
6000 ga ingen resultat. 6001 til 6006 viste dato og klokke
image.png.bb80d8002c0ca7de064db3a597eea0e8.png
 
 
 
 
EDIT:
 
Kjørte registrene gjennom CAS Modbus scanner.
Function 03 Read holding register.
Det som er under offset er adressen man finner i systemair variable list. Kanskje du kan prøve å benytte det som står under standard adress. Det har vel noe med hvordan ditt adapter leser adresser.
image.png.f6b92722e5645cae35d1985a70675920.png


Takk for den, skal kikke litt på der i kveld, får testet noe remote men ikke med noe modbus software. Polaritet er også utfordrene å endre remote.
Lenke til kommentar
Del på andre sider

Forsøkte en rekke oppsett i går kveld uten å lykkes. Prøvd å polle 6006 og 46006 med flere alternative oppsett.

Spørs om ikke jeg må vente til jeg har modbus/tcp interfacet og modbus poll software før jeg kommer videre.

Ellers er forhandler treg med å svare vedrørene software og eventuell oppgradering.

Lenke til kommentar
Del på andre sider

18 minutter siden, Moskus skrev:

Interessant! Er det denne: https://freemodbus.com/

Ja, endte opp med den etter å ha prøvd alle gratis programmene jeg fant. Veldig grei og oversiktlig etter en 10-15 minutters fikling.

Modbus poll (https://www.modbustools.com/modbus_poll.html) var egentlig det beste, men gratis-versjonen gjør at man må restarte programmet hvert 10. minutt og det er kun gratis i 30 dager.

  • Like 1
Lenke til kommentar
Del på andre sider

1 hour ago, MrE said:

Ja, endte opp med den etter å ha prøvd alle gratis programmene jeg fant. Veldig grei og oversiktlig etter en 10-15 minutters fikling.

Modbus poll (https://www.modbustools.com/modbus_poll.html) var egentlig det beste, men gratis-versjonen gjør at man må restarte programmet hvert 10. minutt og det er kun gratis i 30 dager.

Før i gamledager satte man klokken frem 50 år før man installerte programmer med begrenset prøvetid, og deretter skrudde man tilbake tiden. Den gang alt det magiske fantes i en ini-fil.

Lenke til kommentar
Del på andre sider

Lagde et script for å kalkulere antall dager igjen til filterbytte ut i fra høy og lav 16bits registere for sekunder. 

 

Register 7005 og 7006.

 

Script:

Sub Main(ByVal Parms As Object)

	Dim Debug As Boolean = False
	Dim logName As String = "RemainingFilterTime"

	Dim devVentilatorFilterChangeDays As Integer = 848
	Dim devRefLoBits As Integer = 846
	Dim devRefHiBits As Integer = 847


	' seconds in two 16 bit registers, low and high
	Dim secondsLoBits As UInt16
	Dim secondsHiBits As UInt16
	Dim seconds As UInt32
	Dim days As UShort



	If Debug Then hs.WriteLog(logName, "Started")

	Try

		secondsLoBits = Convert.ToUInt16(hs.DeviceValue(devRefLoBits))
		If Debug Then hs.WriteLog(logName, "secondsLoBits: " & secondsLoBits)
		secondsHiBits = Convert.ToUInt16(hs.DeviceValue(devRefHiBits))
		If Debug Then hs.WriteLog(logName, "secondsHiBits: " & secondsHiBits)

		seconds = Convert.ToUInt32(secondsLoBits + (secondsHiBits * 65536))
		If Debug Then hs.WriteLog(logName, "seconds:" & seconds)

		days = CUShort(seconds / 60 / 60 / 24)
		If Debug Then hs.WriteLog(logName, "days: " & days)

		hs.SetDeviceValueByRef(devVentilatorFilterChangeDays, days, True)
		hs.WriteLog(logName, "Set VentilatorFilterChangeDays to " & days & " and trigger)")

	Catch ex As Exception
		hs.WriteLog(logName, "Exception " & ex.ToString)
		hs.WriteLog(logName, "StackTrace: " & ex.StackTrace)
	End Try

End Sub

Filterbytte.thumb.png.53e70d8c87b6ea9ef37b2a5f909809d6.png

 

  • Like 1
Lenke til kommentar
Del på andre sider

8 hours ago, bergen77 said:

Timer vel?

? Noe jeg har bommet på? Holdt på litt sent i går så skal ikke se bort i fra det.

Jeg mener dager, Det er mellom 5 og 6 måneder igjen til filterskifte. Se den øverste enheten "VentilatorFilterChangeDays" De to nederste verdiene er sekunder til filterskifte, to 16 bit register representerer et 32bits tall. Den ene er de 16 høyeste bitsene og den andre er de 16 laveste. 

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.