# omron.fins

Универсальный модуль для устройств, работающих по протоколу FINS.

Описание протокола кратко, подробно rus, подробно eng.

    plugin.peripherial:
      enable: on

      module.fins1:
        portnum:  1
        type:     omron.fins

        maxDataSize:  200

        tags:
          - name:          out_b0
            type:          bool
            region:        48
            address:       3200
            bit:           0

          - name:          out_b7
            type:          uint16
            region:        48
            address:       3200
            bit:           7

          - name:          inps
            address:       3300
            cmdread:       multi

          - name:          ai_0
            type:          int16
            address:       3302
            cmdread:       multi

          - name:          ai_1
            type:          int16
            address:       3303
            cmdread:       multi

          - name:          bigval
            type:          int32
            address:       3456

## Параметры

Числовые значения во всех конфигурационных файлах jroboplc, в т.ч. и модуля omron.fins, задаются в десятичном виде.

Параметр | Умолчание | Описание
--- | --- | ---
maxDataSize | `250` | Максимальное количество байт данных в запросе. Максимально возможное значение 2000.
tags | - | Список тегов. Количество тегов может быть любым.
tags
name | - | Имя тега
cmdread | `area` | Команда чтения:
`area` - чтение области несколько смежных адресов подряд одного региона
`multi` - выборочное чтение несмежных адресов из любых регионов
address | `0` | Адрес регистра
bit | `0` | Номер бита от 0 до 15. Только для битовый регионов с длиной элемента 1
region | `176` | Регион (код области памяти). См. описание протокола стр.122 (rus). Внимание! Не все значения регионов из описания поддерживаются.
access | `rw` | Доступ:
`ro` - только чтение
`wo` - только запись
`rw` - чтение и запись
type | `uint16` | Тип тега:
`bool`
`int16`
`uint16`
`int32`
`float16`
`float32`
inverted | `off` | Инверсия значения (только для типов тега `bool`).
readEnd | `off` | Последний регистр в запросе чтения командой AREA.
enable | `on` | Разрешение чтения и записи тега.
tracktag | `-` | Имя тега слежения для выполнения принудительной повторной записи. Предназначено для тегов с `access=WO`. Тег слежения должен быть определен в этом же модуле. Запись инициируется, если последнее записанное значение отличается от значения, получаемого от тега слежения.

## Порядок выполнения запросов

- множественная запись (команда 01 02)
- множественное чтение `area` (команда 01 01)
- выборочное чтение `multi` (команда 01 04)

Количество запросов рассчитывается автоматически.

## Запись

Команды записи посылаются только для тех регистров, в теги которых были записаны значения, при этом значение может не отличаться от предыдущего.

Если количество регистров для записи превышает установленный лимит, либо имеется несколько смежных адресов, между которыми есть разрыв, то команда множественной записи посылается необходимое количество раз.

## Чтение

Команда `area` предназначена для чтения одного или нескольких смежных, либо относительно близко расположенных адресов из одного региона.

Команда `multi` предназначена для чтения любого количества любых адресов в любых регионах. Данная команда не может быть применена для тегов типа `int32` и `float32`.

## Дополнительные теги

AnswerStatus | Код завершения первой неудачной операции чтения или записи после сброса тега. Коды смотреть в описании протокола стр.113 (rus). Для сброса установленного в теге значения, записать в тег 0.

## Коды регионов

- CIO bit: 48
- WR bit: 49
- HR bit: 50
- AR bit: 51
- DM bit: 02
- EM bit: 32-44
- TIM флаг завершения: 09
- CNT флаг завершения: 09

- CIO word: 176
- WR word: 177
- HR word: 178
- AR word: 179
- DM word: 130
- EM word: 160-172
- TIM значение: 137
- CNT значение: 137