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

Modbus


Anbefalte innlegg

chrlod skrev (17 minutter siden):

GND er vel ikke nødvendig her? Er ikke i bruk hos meg hvert fall.

Jord er nødvendig, men som du opplever, det kan virke uten. Det er avhengig av hvor stor spenning det er mellom de to enhetene på hver sin ende av ledningen og hvordan mottaker er laget. Normalt sendes 0 og 1 som forskjell i spenning mellom A og B inngang/utgang. Hvis jord ikke er tilkoblet så kan spenning på inngang forskyves slik at inngang varierer mellom feks 45 og 50V istedenfor å ligge mellom 0 og 5V.

 

 

 

In a differential system the voltage produced by the driver appears across a pair of signal lines that transmit only one signal. A differential line driver will produce a voltage from 2 to 6 volts across its A and B output terminals and will have a signal ground (C) connection. Although proper connection to the signal ground is important, it isn't used by a differential line receiver in determining the logic state of the data line

3.8 Shielding and grounding considerations

The signal ground conductor is often overlooked when ordering cable. An extra twisted pair must be specified to have enough conductors to run a signal ground. A two-wire system then requires two twisted pairs.

https://library.e.abb.com/public/c3d83d330fa08cf7c1256f2e003fa9cc/2GCS212011A0050.pdf

Endret av stigvi
Lenke til kommentar
Del på andre sider

chrlod skrev (48 minutter siden):

Mitt VTR300 hadde følgende fabrikkinnstillinger:

(Slave)adresse: 1

Baudrate: 9600

Paritet: Even

 

Ellers er det jo store forskjeller i registeradresse innenfor samme modell. Har du funnet flere «modbus manualer» og testet forskjellige varianter?

Hos meg endte jeg opp med å måtte trekke fra 1 fra registeradressen i den beste manualen jeg fant. 

Takk, skal prøve ein dag og sjå kva eg får til.

 

Ja, eg har prøvd masse. Uansett så burde eg fått svar. Eg anar ikkje kva eg driv med igrunn, i alle fall fram til det fungerar. Har også prøvdt høge verdiar, der ein normalt skulle fått feil tilbake sjølv om ein ikkje traff eit gyldig register.

chrlod skrev (48 minutter siden):

Mitt VTR300 hadde følgende fabrikkinnstillinger:

(Slave)adresse: 1

Baudrate: 9600

Paritet: Even

 

Ellers er det jo store forskjeller i registeradresse innenfor samme modell. Har du funnet flere «modbus manualer» og testet forskjellige varianter?

Hos meg endte jeg opp med å måtte trekke fra 1 fra registeradressen i den beste manualen jeg fant. 

Takk, skal prøve ein dag og sjå kva eg får til.

 

Ja, eg har prøvd masse. Uansett så burde eg fått svar. Eg anar ikkje kva eg driv med igrunn, i alle fall fram til det fungerar. Har også prøvdt høge verdiar, der ein normalt skulle fått feil tilbake sjølv om ein ikkje traff eit gyldig register.

chrlod skrev (48 minutter siden):

Mitt VTR300 hadde følgende fabrikkinnstillinger:

(Slave)adresse: 1

Baudrate: 9600

Paritet: Even

 

Ellers er det jo store forskjeller i registeradresse innenfor samme modell. Har du funnet flere «modbus manualer» og testet forskjellige varianter?

Hos meg endte jeg opp med å måtte trekke fra 1 fra registeradressen i den beste manualen jeg fant. 

Takk, skal prøve ein dag og sjå kva eg får til.

 

Ja, eg har prøvd masse. Uansett så burde eg fått svar. Eg anar ikkje kva eg driv med igrunn, i alle fall fram til det fungerar. Har også prøvdt høge verdiar, der ein normalt skulle fått feil tilbake sjølv om ein ikkje traff eit gyldig register.

Lenke til kommentar
Del på andre sider

Paritet kan være none, even eller odd. Jeg tipper aggregatet står på none.

Baudrate står nok på 115200 som standard.

 

Litt tungvindt når du har light-panelet, da får du ikke sjekket/endret mye av instillingene.

 

Hvis du legger ut bilde av konfigurasjonen du prøver deg på i modbus scanner så er det litt enklere å se om du burde endre noen verdier.

Endret av MrE
Lenke til kommentar
Del på andre sider

Takk for gode svar

Christoffer skrev (2 timer siden):

@TurboJens Har du monterte endemotstander? 120Ohm i hver ende, men på så kort strekk virker det sikkert med 60ohm i en ende også.

 

Eg fulgte ei gammal oppskrift på dette og der var det aldri snakk om noko slikt. Kanskje det er grunnen til at eg aldri fekk det til med det forrige ventilasjonsanlegget eg hadde heller... 

 

MrE skrev (17 minutter siden):

Paritet kan være none, even eller odd. Jeg tipper aggregatet står på none.

Baudrate står nok på 115200 som standard.

 

Litt tungvindt når du har light-panelet, da får du ikke sjekket/endret mye av instillingene.

 

Hvis du legger ut bilde av konfigurasjonen du prøver deg på i modbus scanner så er det litt enklere å se om du burde endre noen verdier.

Takk for ideear, skal sjekke meir, men er på reise denne veka og hw er frakobla så får ikkje leika noko remote. 

Lenke til kommentar
Del på andre sider

TurboJens skrev (20 timer siden):

Eg fulgte ei gammal oppskrift på dette og der var det aldri snakk om noko slikt. Kanskje det er grunnen til at eg aldri fekk det til med det forrige ventilasjonsanlegget eg hadde heller... 

 

Det kan nok være en viktig faktor ja, noen enheter har denne innebygd men den må stortsett aktiveres via en jumper men man kan like gjerne bruke en vanlig motstand over terminalene.

Lenke til kommentar
Del på andre sider

TurboJens skrev (1 time siden):

Stussa på det, men det blei enklare å lese med eit mellomrom mellom xD

Flaut, men bytta til 2 120 Ohm motstand.. fortsatt timeout på timeout.


Fant eit skjermbilde på det store internettet som viste "Good" så reknar med at eg bør få eit treff til slutt.

Lenke til kommentar
Del på andre sider

TurboJens skrev (2 timer siden):

Flaut, men bytta til 2 120 Ohm motstand.. fortsatt timeout på timeout.


Fant eit skjermbilde på det store internettet som viste "Good" så reknar med at eg bør få eit treff til slutt.

Ser at den muligens var litt tråkig å lese ja 

 

Da er det egentlig først å sjekke at kabling er korrekt A til A og B til B og så at parametre for baud rate og paritet er korrekt. Har kranglet nok med modbus og vet at det men ganger er litt vanskelig å få til. 

Lenke til kommentar
Del på andre sider

Christoffer skrev (21 timer siden):

Ser at den muligens var litt tråkig å lese ja 

 

Da er det egentlig først å sjekke at kabling er korrekt A til A og B til B og så at parametre for baud rate og paritet er korrekt. Har kranglet nok med modbus og vet at det men ganger er litt vanskelig å få til. 

 

Etter meir banning og prøving så kom eg over denne tråden her, som kan vere relevant for andre: 

Som du sa, det kunne vere litt vanskeleg dette men med PC programmet fann den anlegget umiddelbart med eit USB/RS485 adapter, etterpå kunne eg bruke CAS Modbus scanner både på USB adapteret og TCP adapteret. Forstå det den som kan, men eg heller mot at sidan anlegget mitt ikkje er kommisjonert skikkeleg så har det aldri vore ein PC tilkobla, noko eg antar at faktisk er meininga. Og at PC programmet sender ein "magisk pakke" til ventilasjonsanlegget for å få ting i gang. Tydeleg at alle innstillingar i anlegget mitt var uforandra frå std.

 

Då begynne den kjekke delen av jobben, men heldigvis mange ting i den tråden som er "ferdig utvikla" allereie så då reknar eg med det ordnar seg.

 

Takk for alle konstruktive bidrag.

 

For referanse, eg har no ein 120 Ohm motstand i kvar ende, usikker på om det er nødvendig, men det virkar i alle fall.

2018404534_Screenshot2022-10-19204113.png.53ceed20bdf5beaf8dbc3c28138b1ffe.png

 

 

 

755236914_Screenshot2022-10-19204324.png.50b6bbd161503c4726a07a0da6782c5c.png

 

1634961655_Screenshot2022-10-19211451.thumb.png.757de45904381c0100c0d14ca30cff5b.png

Lenke til kommentar
Del på andre sider

  • 2 uker senere...
  • 2 måneder senere...
Curtsy0341 skrev (2 timer siden):

@stigvi jeg har ikke modbus alternativet på min fjernkontroll, som jeg klarer å lese meg fram til behøver jeg muligens en ny fjernkontroll med modbuss støtte. Måtte du bytte din?

Ikke bytte, men kjøpe den som har modbus meny. Teit opplegg og det har vel Østberg innsett iom at de nye aggregatene har modbus aktivert som standard.

Lenke til kommentar
Del på andre sider

stigvi skrev (5 minutter siden):

Ikke bytte, men kjøpe den som har modbus meny. Teit opplegg og det har vel Østberg innsett iom at de nye aggregatene har modbus aktivert som standard.

Flott, da holder det vel å kjøpe denne her: Link? Og må du programmere anlegget på nytt?

 

Snakka med min lokale ventilasjonspimp, han skjønte ikke mye om dette her, men skulle snakke med Östberg og komme tilbake til meg.

Lenke til kommentar
Del på andre sider

  • 2 uker senere...
Curtsy0341 skrev (8 timer siden):

Da var det oppe og gikk her, brukte koden din, funka med en gang. Tusen takk. Nå skal endre litt og legge til litt alarmer og sånt tenkte jeg. Har og relestyring av boost og brannmodus siden jeg allerede hadde koblet det opp som backup.

Jeg har gjort noen endringer jeg også. Et event når esp starter og litt info om hvor effektivt varmeveksler jobber.

 

esphome:
  compile_process_limit: 1
  name: ventilasjon
  platform: ESP32
  board: esp-wrover-kit
  on_boot:
    - priority: -100
      then:
        - delay: 30s
        - homeassistant.event:
            event: esphome.boot
            data:
              message: Ventilasjon Started

wifi:
  ssid: "HEIME5.ORG"
  password: !secret heime_wifi
  domain: .lan

preferences:
  flash_write_interval: 48h

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  #ap:
  #  ssid: "Stue Co2 Fallback Hotspot"
  #  password: "ppHXTW3jIUEL"

#captive_portal:

# Enable logging
logger:
  level: DEBUG
  baud_rate: 0

# Enable Home Assistant API
api:

ota:

uart:
  id: mod_uart
  tx_pin: 17
  rx_pin: 16
  baud_rate: 9600
  stop_bits: 1

modbus:
  id: modbus1
  uart_id: mod_uart
  flow_control_pin: 5
  send_wait_time: 200ms

modbus_controller:
  - id: heru
    ## the Modbus device addr
    address: 1
    modbus_id: modbus1
    command_throttle: 200ms
    update_interval: 10s
    
switch:
  - platform: modbus_controller
    modbus_controller_id: heru
    register_type: coil
    address: 3
    name: "ventilation_away_mode"
  - platform: modbus_controller
    modbus_controller_id: heru
    register_type: coil
    address: 4
    name: "ventilation_alarm_reset"
  - platform: modbus_controller
    modbus_controller_id: heru
    register_type: coil
    address: 2
    name: "ventilation_boost_mode"
  - platform: modbus_controller
    modbus_controller_id: heru
    register_type: coil
    address: 1
    name: "ventilation_overpressure_mode"
  - platform: modbus_controller
    modbus_controller_id: heru
    register_type: coil
    address: 0
    name: "ventilation_unit_on"

select:
  - platform: modbus_controller
    name: "ventilation_boost_speed"
    address: 25
    value_type: U_WORD
    optionsmap:
      "Mye": 4
      "Lite": 3
  - platform: modbus_controller
    name: "ventilation_electric_heater_connected"
    address: 50
    value_type: U_WORD
    optionsmap:
      "Tilkoblet": 1
      "Frakoblet": 0

sensor:
  - platform: wifi_signal
    name: "Ventilasjon WiFi Signal"
    update_interval: 300s

  - platform: template
    name: "ventilation_heat_cold_recovery_efficiency"
    id: "heat_cold_recovery_efficiency"
    lambda: |-
        if (id(recovering_heat).state == false || id(exhaust_air_temperature).state == id(outdoor_temperature).state)
          return 0.0;
      
        return 100.0 * (id(heat_recovery_wheel_temperature).state - id(outdoor_temperature).state) / (id(exhaust_air_temperature).state - id(outdoor_temperature).state);
        //return 100.0 * (id(exhaust_air_temperature).state - id(waste_air_temperature).state) / (id(exhaust_air_temperature).state - id(outdoor_temperature).state);
    accuracy_decimals: 0
    update_interval: 60s
    unit_of_measurement: "%"
  - platform: template
    name: "ventilation_expected_waste_temperature_diff"
    lambda: |-
        double e = id(exhaust_air_temperature).state - id(heat_cold_recovery_efficiency).state * (id(exhaust_air_temperature).state - id(outdoor_temperature).state) / 100.0;
        return id(waste_air_temperature).state - e;
    accuracy_decimals: 1
    update_interval: 60s
    unit_of_measurement: "°C"
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_outdoor_temperature"
    id: "outdoor_temperature"
    register_type: read
    address: 1
    value_type: S_WORD
    unit_of_measurement: "°C"
    device_class: temperature
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
      - or:
        - throttle: 30min
        - delta: 2.0
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_supply_air_temperature"
    register_type: read
    address: 2
    value_type: S_WORD
    unit_of_measurement: "°C"
    device_class: temperature
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
      - or:
        - throttle: 30min
        - delta: 2.0
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_exhaust_air_temperature"
    id: "exhaust_air_temperature"
    register_type: read
    address: 3
    value_type: S_WORD
    unit_of_measurement: "°C"
    device_class: temperature
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
      - or:
        - throttle: 30min
        - delta: 2.0
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_waste_air_temperature"
    id: "waste_air_temperature"
    register_type: read
    address: 4
    value_type: S_WORD
    unit_of_measurement: "°C"
    device_class: temperature
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
      - or:
        - throttle: 30min
        - delta: 2.0
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_heat_recovery_wheel_temperature"
    id: "heat_recovery_wheel_temperature"
    register_type: read
    address: 6
    value_type: S_WORD
    unit_of_measurement: "°C"
    device_class: temperature
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
      - or:
        - throttle: 30min
        - delta: 2.0
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_current_supply_fan_speed"
    register_type: read
    address: 26
    value_type: S_WORD
    unit_of_measurement: "rpm"
    filters:
      - or:
        - throttle: 30min
        - delta: 50.0
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_current_exhaust_fan_speed"
    register_type: read
    address: 27
    value_type: S_WORD
    unit_of_measurement: "rpm"
    filters:
      - or:
        - throttle: 30min
        - delta: 50.0
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_current_heating_power"
    register_type: read
    address: 28
    value_type: S_WORD
    unit_of_measurement: "W"
    filters:
      - multiply: 6.6667
      - sliding_window_moving_average:
          window_size: 64
          send_every: 64
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_current_heat_cold_recovery_power"
    register_type: read
    address: 29
    value_type: S_WORD
    unit_of_measurement: "%"
    lambda: |-
        if (id(recovering_heat).state == false)
          return 0.0;

        return x;
    filters:
      - multiply: 0.3921569
      - or:
        - throttle: 60s
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_filter_days_left"
    register_type: read
    address: 19
    value_type: S_WORD
    unit_of_measurement: "days"

number:
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_temperature_setpoint"
    register_type: holding
    address: 1
    value_type: S_WORD
    unit_of_measurement: "°C"
    min_value: 15
    max_value: 30
    
binary_sensor:
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_exhaust_fan_alarm"
    register_type: discrete_input
    address: 21
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_exhaust_filter_alarm"
    register_type: discrete_input
    address: 23
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_filter_timer_alarm"
    register_type: discrete_input
    address: 24
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_freeze_alarm"
    register_type: discrete_input
    address: 12
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_freeze_protection_a_level"
    register_type: discrete_input
    address: 26
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_freeze_protection_b_level"
    register_type: discrete_input
    address: 25
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_low_rotor_temperature_alarm"
    register_type: discrete_input
    address: 14
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_low_supply_alarm"
    register_type: discrete_input
    address: 13
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_supply_filter_alarm"
    register_type: discrete_input
    address: 22
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_pulser_alarm"
    register_type: discrete_input
    address: 19
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_rotor_alarm"
    register_type: discrete_input
    address: 10
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_startup_1st_phase"
    register_type: discrete_input
    address: 27
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_startup_2nd_phase"
    register_type: discrete_input
    address: 28
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_supply_fan_alarm"
    register_type: discrete_input
    address: 20
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_temp_sensor_open_circuit_alarm"
    register_type: discrete_input
    address: 17
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_temp_sensor_short_circuit_alarm"
    register_type: discrete_input
    address: 18
  - platform: modbus_controller
    modbus_controller_id: heru
    name: "ventilation_heating"
    register_type: discrete_input
    address: 29
  - platform: modbus_controller
    modbus_controller_id: heru
    id: "recovering_heat"
    register_type: discrete_input
    address: 30

 

Lenke til kommentar
Del på andre sider

Flott, takk igjen. Dette ble bra, har oppdatert koden med endringer, samt laget det litt mer pent i brukegrensesnittet.  Lurer på en ting, min 485 til UART enhet har kun TXD og RXD, ser du i koden har noe som heter flow_control_pin: 5 ref:

stigvi skrev (5 timer siden):
modbus:
  id: modbus1
  uart_id: mod_uart
  flow_control_pin: 5
  send_wait_time: 200ms

 

Jeg har jo ikke denne, så jeg fjerna den linjen, har denne enheten: UART.png.6e207c52c9cb5b377da85732ddbce2c6.png

 

Vet du hva den gjør?

 

501241935_Ventilasjonsanleggdagmodus.thumb.png.8d4d79b64162f922c002a1d13fb69792.png

  • Like 1
Lenke til kommentar
Del på andre sider

Curtsy0341 skrev (5 minutter siden):

Vet du hva den gjør?

RS485 modul | Artigereliv

Jeg bruker denne modulen og på den må jeg sette om den skal være i sende- eller mottaksmodus ved hjelp av pinne 5. Hvis du kan lese og skrive til ditt anlegg uten denne så er alt bare bra.

Jeg stusser litt over at ditt anlegg sender ut luft med en temperatur på 12 grader. Med omtrent samme utetemperatur er min utblåsning på 5 grader.

 

image.thumb.png.0b64464b5882e4acf9d18339dec3b855.png

  • Like 2
Lenke til kommentar
Del på andre sider

stigvi skrev (23 timer siden):

Jeg stusser litt over at ditt anlegg sender ut luft med en temperatur på 12 grader. Med omtrent samme utetemperatur er min utblåsning på 5 grader.

 Ja der sier du noe. Det er også litt støy på den om jeg ser på historikken, viser 30 grader i noen øyeblikk. Er sensoren som heter 

Sitat

sensor.ventilation_waste_air_temperature

De andre sensorene har ikke sånn "støy".

 

1108945612_Skjermbilde2023-01-21kl_12_15_28.thumb.png.826440302c002e9d057596ae0ce0f7a5.png

Lenke til kommentar
Del på andre sider

  • 9 måneder senere...

Kom over denne denne tråden da jeg ønsker å få en Heru 70 T inn i Home Assistant ved hjelp av esphome. Oppdaget at jeg dessverre har en fjernkontroll uten modbus, og ettersom Heru 70 T er fra 2018 så antar jeg den har modbus deaktivert som default (ikke verifisert enda da jeg venter på RS485 modul).

  1. Hvis jeg har forstått det riktig, så er modbus-fjernkontrollen kun nødvendig for å aktivere modbus-funksjonaliteten på kontrollkortet? Man trenger altså ikke fjernkontrollen etterpå for å kunne benytte modbus funksjonaliteten?
  2. Hvis punktet over er forstått riktig: Ettersom 1500kr er mye for en fjernkontroll som kun skal benyttes i noen minutter for å aktivere en funksjon, er det noen som er villig til å låne meg en fjernkontroll mot en liten sum? Er bosatt i Oslo-området, men betaler gledelig frakt frem og tilbake om det finnes en fjernkontroll til låns et annet sted i landet!
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.