Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:jroboplc:modules:peripherial:upsnano [2018/07/27 12:44] denis [Параметры] |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== promauto.upsnano ====== | ||
- | Модуль для работы с контроллером питания [[doc:jroboplc:ups_devices:ups_nano|upsnano]]. Работают по специализированному протоколу. | ||
- | Требует включения в задачу. | ||
- | |||
- | |||
- | |||
- | <code yaml> | ||
- | plugin.peripherial: | ||
- | module.ups: | ||
- | netaddr: 1 | ||
- | portnum: 1 | ||
- | type: promauto.upsnano | ||
- | enable: on | ||
- | |||
- | plugin.system: | ||
- | module.sys: | ||
- | enable: on | ||
- | shutdown: | ||
- | tag: ups:shutdown | ||
- | value: 1 | ||
- | delay_s: 15 | ||
- | |||
- | plugin.task: | ||
- | module.task_sys: | ||
- | period: 1000 | ||
- | modules: | ||
- | - ups | ||
- | - sys | ||
- | |||
- | </code> | ||
- | |||
- | |||
- | ===== Порядок выполнения запросов ===== | ||
- | - Запись HLDREG | ||
- | - множественная запись (команда 16) | ||
- | - одиночная запись (команда 6) | ||
- | - Запись COIL | ||
- | - множественная запись (команда 15) | ||
- | - одиночная запись (команда 5) | ||
- | - Чтение HLDREG (команда 3) | ||
- | - Чтение INPREG (команда 4) | ||
- | - Чтение COIL (команда 1) | ||
- | - Чтение DSCINP (команда 2) | ||
- | |||
- | ===== Запись регистров ===== | ||
- | Команды записи посылаются только для тех регистров, в теги которых были записаны значения, при этом значение может не отличаться от предыдущего. | ||
- | |||
- | Сначала список регистров просматривается на возможность посылки команды множественной записи - если есть два и более регистра для записи со смежными адресами и у них есть разрешение на множественную запись, то данные регистры записываются командой 16 или 15. Если количество регистров для записи превышает установленный лимит, либо имеется несколько смежных адресов, между которыми есть разрыв, то команда множественной записи посылается необходимое количество раз. | ||
- | |||
- | Далее командой одиночной записи (6 или 5) записываются регистры, имеющие разрешение на одиночную запись и не попавшие в под множественную запись. Для одного тега посылается как минимум одна команда одиночной записи. Две команды для одного тега посылается в случае, если тег имеет тип ''int32'' или ''float32'', т.е. состоит из двух регистров. | ||
- | |||
- | ===== Чтение регистров ===== | ||
- | Команды чтения выполняются не все, а только необходимые для соответствующих областей регистров. Это значит, что имея в списке тегов только HLDREG-теги, запросы чтения будут только для HLDREG-регистров (команда 3). | ||
- | |||
- | Количество запрашиваемых регистров определяется разностью самого старшего и самого младшего адресов. Например, имеем два HLDREG-тега в модуле с сетевым адресом 1: | ||
- | <code> | ||
- | - name: tag1 | ||
- | type: uint16 | ||
- | address: 3 | ||
- | - name: tag2 | ||
- | type: int32 | ||
- | address: 7 | ||
- | </code> | ||
- | В этом случае будет послана команда 3 на чтение шести(а не пяти, т.к. tag2 займет два регистра) регистров начиная с 3-го адреса: | ||
- | 01 03 0003 0006 crc16 | ||
- | |||
- | В случае большого разрыва между считываемыми регистрами команда чтения разбивается на несколько при помощи параметра тега ''readEnd'': | ||
- | <code> | ||
- | - name: tag1 | ||
- | type: uint16 | ||
- | address: 3 | ||
- | - name: tag2 | ||
- | type: int32 | ||
- | address: 7 | ||
- | readEnd: on | ||
- | - name: tag3 | ||
- | type: int32 | ||
- | address: 255 | ||
- | </code> | ||
- | Чтение регистров будет состоять из двух запросов: | ||
- | 01 03 0003 0006 crc16 | ||
- | 01 03 00FF 0001 crc16 | ||