Инструменты пользователя

Инструменты сайта


настройка_modbus

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
настройка_modbus [2022/11/01 00:19]
Sanch-KK [Mapping значений и команд контроллера в регистры Modbus]
настройка_modbus [2023/10/25 01:56] (текущий)
Admin [раздел par]
Строка 26: Строка 26:
   *  "t_heat" - имя параметра устройства.    *  "t_heat" - имя параметра устройства. 
   *  "reg" - регистр (или стартовый HOLDING REGISTER) параметра   *  "reg" - регистр (или стартовый HOLDING REGISTER) параметра
-  *  "ir: - INPUT REGISTER+  *  "ir: - INPUT REGISTER или "reg"- HOLDING REGISTER или "coil": COIL или "din" - DISCRETE INPUT 
   * "map" - правила преобразования  (TBD)   * "map" - правила преобразования  (TBD)
   * "type":"i16" -  указывает, что значение - 16-ти битное число со знаком   * "type":"i16" -  указывает, что значение - 16-ти битное число со знаком
Строка 62: Строка 62:
  
 Отправка происходит, если с момента последнего опроса значение регистра изменилось Отправка происходит, если с момента последнего опроса значение регистра изменилось
 +кроме regs допустимы irs и coils
  
 Или вот пример для сенсора Sensair S8 Или вот пример для сенсора Sensair S8
Строка 85: Строка 86:
              }              }
 </code>              </code>             
 +
 +А вот пример подключения Modbus адаптера кондиционера Haier
 +<code>
 +"modbus":
 +  {
 +    "haier":{"baud":9600,
 +             "poll":{"regs":[[0,3]],"irs":[[0,1]],"coils":[0],"delay":5000},
 +             "par":{
 +                            "pwr":{"coil":0,"map":{"cmd":[1,["OFF",0]],"val":null, "def":"acmode"},"id":1},
 +                            "acmode":{"reg":1,"map":{"cmd":[["FAN_ONLY",4],["HEAT",2],["COOL",1],["DRY",3],["AUTO",5]],"val":null},"id":1},
 +                            "$temp":{"ir":0},
 +                            "$fault":{"ir":1},
 +                            "set":{"reg":0,"id":2},
 +                            "fan":{"reg":2,"id":7,"map":{"cmd":[["OFF",0],["LOW",1],["HIGH",3],["MEDIUM",2],["AUTO",4]]}},
 +                            "lock":{"reg":3,"map":{"cmd":[["OFF",1],["ON",4]]}}
 +                            
 +                    }       
 +       }
 +    
 +  },
 +  
 +"items":
 +    
 +  "ac_2":[14,[128,
 +                  "haier",
 +                  {
 +                  "pwr":{"emit":"home/s_out/ac_2/cmd","@V":null},
 +                  "$temp":{"emit":"home/s_out/ac_2/$temp","@S":null},
 +                  "$fault":{"emit":"home/s_out/ac_2/$fault"},
 +                  "set":{"emit":"home/s_out/ac_2/set"},
 +                  "acmode":{"emit":"home/s_out/ac_2/$mode","@V":null},
 +                  "fan":{"emit":"home/s_out/ac_2/fan","@V":null},
 +                  "lock":{"emit":"home/s_out/ac_2/lock","@V":null}
 +                  }
 +                  ]
 +              ]
 +          }
 +}                
 +</code>
  
 ==== Разделы baud и serial ==== ==== Разделы baud и serial ====
Строка 437: Строка 477:
 Еще лайфхак: Еще лайфхак:
 <code> <code>
-"humpwr":{"reg":39998,"map":{"cmd":[["ON",1],["OFF",0]],"val":null}},+"humpwr":{"reg":39998,"map":{"cmd":[null,["ON",1],["OFF",0]],"val":null}},
 </code> </code>
 В примере выше, в значения регистра будет маппироваться только команда, поступающая на humpwr. Команда ON в 1, команда OFF в 0 В примере выше, в значения регистра будет маппироваться только команда, поступающая на humpwr. Команда ON в 1, команда OFF в 0
 +
 +первый null перед массивом соответствия команда -> значение по умолчанию, которое будет использоваться если не удастся подобрать команду. (null тут можно не указывать)
 +Если не подобрали - пытаемся преобразовать по значению
 +
 Если не использовать "val":null - то значения, отправляемые в humpwr/set будут передаваться в регистр без преобразований. Использование null обеспечивает игнорирование значений (не команд) Если не использовать "val":null - то значения, отправляемые в humpwr/set будут передаваться в регистр без преобразований. Использование null обеспечивает игнорирование значений (не команд)
  
настройка_modbus.1667251158.txt.gz · Последнее изменение: 2022/11/01 00:19 — Sanch-KK