github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/doc/content/ru/docs/plugins/modbus/modbus_tcp.md (about)

     1  
     2  ---
     3  title: "Modbus tcp"
     4  linkTitle: "modbus tcp"
     5  date: 2021-10-20
     6  description: >
     7  
     8  ---
     9  
    10  В системе **Smart Home** реализован плагин Modbus TCP, который обеспечивает взаимодействие с устройствами по протоколу Modbus TCP.
    11  Плагин предоставляет метод `ModbusTcp(func, addr, count, command)`, позволяющий отправлять команды и получать данные по указанному протоколу.
    12  
    13  Аргументы метода `ModbusTcp`:
    14  
    15  1. `func`: Код функции Modbus, указывающий тип операции, которую следует выполнить с устройством.
    16  2. `addr`: Адрес устройства Modbus, к которому отправляется команда.
    17  3. `count`: Количество регистров или битов, которые следует прочитать или записать.
    18  4. `command`: Команда, которую необходимо выполнить, указывающая дополнительные параметры и настройки.
    19  
    20  Пример использования:
    21  
    22  ```javascript
    23  const COMMAND = []
    24  const FUNC = 'ReadHoldingRegisters'
    25  const ADDRESS = 0
    26  const COUNT = 16
    27  
    28  const response = ModbusTcp(FUNC, ADDRESS, COUNT, COMMAND);
    29  console.log(response);
    30  ```
    31  
    32  Метод `ModbusTcp` позволяет отправлять команды Modbus TCP, выполнять чтение или запись регистров и получать данные от устройств. 
    33  Вы можете использовать этот метод в вашем проекте **Smart Home** для взаимодействия с устройствами, поддерживающими протокол Modbus TCP.
    34  
    35  {{< alert color="warning" >}}Для работы с modbus rtu устройством требуется настроенная **нода**{{< /alert >}}
    36  
    37  ### Настройка:
    38  
    39  * slave_id `1-32`
    40  * address_port `localhost:502`
    41  
    42  ### Команды:
    43  
    44  * произвольный набор
    45  
    46  ### Атрибуты
    47  
    48  * произвольный набор
    49  
    50  ### Статус
    51  
    52  * произвольный набор
    53  
    54  ----------------
    55  
    56  ### Доступные функции
    57  
    58  **1 битные функции**
    59  
    60  ReadCoils           
    61  ReadDiscreteInputs  
    62  WriteSingleCoil     
    63  WriteMultipleCoils
    64  
    65  **16 битные функции**
    66  
    67  ReadInputRegisters          
    68  ReadHoldingRegisters        
    69  ReadWriteMultipleRegisters  
    70  WriteSingleRegister         
    71  WriteMultipleRegisters
    72  
    73  
    74  ----------------
    75  
    76  ### javascript свойства
    77  
    78  * ENTITY_ID
    79  * ModbusRtu
    80  * entityAction
    81  * Action
    82  
    83  ```coffeescript
    84  # константа с уникальным id устройства
    85  const ENTITY_ID
    86  ````
    87  
    88  ```coffeescript
    89  # выполнение команды(функции) на устройсте:
    90  result = ModbusTcp func, addr, count, command
    91  ```
    92  
    93  |  значение  | описание  |
    94  |-------------|---------|
    95  | func | функция для выполнения на устройстве  |
    96  | addr | Адрес первого регистра (40108-40001 = 107 =6B hex)  |
    97  | count | Количество требуемых регистров (чтение 3-х регистров с 40108 по 40110) |
    98  | command | Команда |
    99  
   100  
   101  ```coffeescript
   102  # функция-обработчик события действий:
   103  entityAction = (entityId, actionName, args)->
   104  ```
   105  
   106  |  значение  | описание  |
   107  |-------------|---------|
   108  | entityId | уникальное id устройства  |
   109  | actionName | системное наименование действия  |
   110  | args | Type: Attribute |
   111  
   112  {{< alert color="warning" >}}Объект **Action** доступен в скриптах действий и скриптах закрепленных за устройством.{{< /alert >}}
   113  ```coffeescript
   114  state = {
   115    new_state: 'ENABLED',
   116    attribute_values: {
   117      heat: false
   118    },
   119    settings_value: {},
   120    storage_save: true
   121  } 
   122  # сохранение состояния 
   123  EntitySetState ENTITY_ID, state
   124  ```
   125  
   126  |  значение  | описание  |
   127  |-------------|---------|
   128  | new_state | уникальное системное наименование состояния |
   129  | attribute_values | значения атрибутов ранее определенных для устройства |
   130  | settings_value | значения настроек ранее определенных для устройства |
   131  | storage_save | признак записи среза состояния в БД |
   132  
   133  ----------------
   134  
   135  ### пример coffeescript кода
   136  
   137  ```coffeescript
   138  # ModbusTcp
   139  # ##################################
   140  "use strict";
   141  
   142  checkStatus = ->
   143    COMMAND = []
   144    FUNC = 'ReadHoldingRegisters'
   145    ADDRESS = 0
   146    COUNT = 16
   147  
   148    # выполнение команды(функции) на устройсте:
   149    res = ModbusTcp FUNC, ADDRESS, COUNT, COMMAND
   150    print res.error
   151    print res.result
   152    print res.time
   153  
   154  # функция-обработчик события действий:
   155  entityAction = (entityId, actionName, args)->
   156    switch actionName
   157      when 'ON' then doOnAction()
   158      when 'OFF' then doOffAction()
   159      when 'CHECK' then checkStatus()
   160      when 'ON_WITH_ERR' then doOnErrAction()
   161  
   162  ```
   163  
   164