Внутренние регистры WebHMI — различия между версиями

Материал из WebHMI Wiki
Перейти к: навигация, поиск
 
(не показано 46 промежуточных версий 3 участников)
Строка 1: Строка 1:
В версии WebHMI 1.5 доступны такие внутренние регистры:
+
<languages/>
  
== Dxxx - Data Registers ==
+
<translate>
 +
<!--T:1-->
 +
В версии WebHMI 1.5 доступны такие внутренние регистры.
 +
 
 +
== Cx - Communication registers == <!--T:2-->
 +
<p>Наличие ошибок связи на разных соединениях.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>C0</td><td>Наличие ошибок связи в любом из соединений. 0 означает что ошибок связи нет. Положительное число означает номер соединения в котором есть ошибка связи.</td><td>Номер соединения</td><td>Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>C1</td><td>Наличие ошибки связи в соединении с ID=1. 0 означает что ошибок нет. Положительное число означает ID регистра который не может быть прочитан.</td><td>Номер регистра</td><td>Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>C2</td><td>Наличие ошибки связи в соединении с ID=2. 0 означает что ошибок нет. Положительное число означает ID регистра который не может быть прочитан.</td><td>Номер регистра</td><td>Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>...</td><td>...</td><td></td><td>...</td><td>...</td></tr>
 +
</table>
 +
 
 +
== CDxxx - Connection Disabled registers == <!--T:3-->
 +
<p>Состояние соединения — включено/отключено. Этот регистр позволяет видеть отключен ли обмен по конкретному соединению. Если обмен отключен — система вернет 1. Если обмен не отключен — вернет 0. Запись в данные регистры позволяет программно включать/выключать обмен по нужному соединению. Для отключения обмена нужно записать 1 в соответствующий регистр.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>CD1</td><td>Обмен включен в соединении с ID  = 1.</td><td>Bit</td><td>Read/Write</td></tr>
 +
<tr><td>CD2</td><td>Обмен включен в соединении с ID  = 2.</td><td>Bit</td><td>Read/Write</td></tr>
 +
<tr><td>CD3</td><td>Обмен включен в соединении с ID  = 3.</td><td>Bit</td><td>Read/Write</td></tr>
 +
<tr><td>...</td><td>...</td><td></td><td>...</td></tr>
 +
</table>
 +
 
 +
== Dxxx - Data registers == <!--T:4-->
 
<table border="1" cellspacing="0">
 
<table border="1" cellspacing="0">
 
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
<tr><td>D0</td><td>Обычный регистр для нужнд пользователей.</td><td></td><td>Word</td><td>Read/Write</td></tr>
+
<tr><td>D0</td><td>Обычный регистр для нужд пользователей.</td><td></td><td>Bit, Byte, Word, Double Word</td><td>Read/Write</td></tr>
 
<tr><td colspan="7" align="center">...</td></tr>
 
<tr><td colspan="7" align="center">...</td></tr>
<tr><td>D255</td><td>Обычный регистр для нужнд пользователей.</td><td></td><td>Word</td><td>Read/Write</td></tr>
+
<tr><td>D1999</td><td>Обычный регистр для нужд пользователей.</td><td></td><td>Bit, Byte, Word, Double Word</td><td>Read/Write</td></tr>
 
</table>
 
</table>
Данные в этих регистрах после перезагрузки не сохраняются.
+
Данные в этих регистрах после перезагрузки НЕ сохраняются.
  
== T0 - Time Register ==
+
<!--T:5-->
 +
Пользователю доступны 2000 байт в оперативной памяти. Адрес регистра - это адрес начала фрагмента в блоке памяти.
 +
 
 +
<!--T:6-->
 +
В зависимости от выбранного типа данных на один регистр приходится разное количество байт. Так, можно обращаться к регистру с адресом D12 как к байту. В этом случае будет обращение к одному байту в памяти. Если обратится к регистру с адресом D12 как к слову (Word) то физически будет обращение к двум байтам с адресами D12 и D13 из которых будет составлено слово. Таким образом можно обращаться к отдельным байтам в нужном слове или двойном слове. Система не проверяет адреса регистров на пересечения или наложения. Этот контроль должен быть выполнен пользователем.
 +
 
 +
== DSxxx - Data static registers == <!--T:7-->
 
<table border="1" cellspacing="0">
 
<table border="1" cellspacing="0">
 
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
<tr><td>T0</td><td>Текущее время</td><td>Секунды</td><td>UnixTime</td><td>Read/-</td></tr>
+
<tr><td>DS0</td><td>Энергонезависимый регистр для нужд пользователей.</td><td></td><td>Byte, Word, Double Word</td><td>Read/Write</td></tr>
 +
<tr><td colspan="7" align="center">...</td></tr>
 +
<tr><td>DS1999</td><td>Энергонезависимый регистр для нужд пользователей.</td><td></td><td>Byte, Word, Double Word</td><td>Read/Write</td></tr>
 
</table>
 
</table>
 +
Данные в этих регистрах после перезагрузки СОХРАНЯЮТСЯ. Пользователю доступны 2000 байт в энергонезависимой памяти. Адрес регистра - это адрес начала фрагмента в блоке памяти.
  
== Hx  - Hardware-related registers ==
+
<!--T:8-->
 +
В зависимости от выбранного типа данных на один регистр приходится разное количество байт. Так, можно обращаться к регистру с адресом DS12 как к байту. В этом случае будет обращение к одному байту в памяти. Если обратится к регистру с адресом DS12 как к слову (Word) то физически будет обращение к двум байтам с адресами DS12 и DS13 из которых и будет составлено слово. Таким образом можно обращаться к отдельным байтам в нужном слове или двойном слове. Система не проверяет адреса регистров на пересечения или наложения. Этот контроль должен быть выполнен пользователем.
 +
 
 +
<!--T:9-->
 +
Энергонезависимая память реализована в аппаратной платформа ревизии V5.34 и выше.
 +
 
 +
== Tx - Time registers == <!--T:10-->
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>T0</td><td>Текущее время</td><td>Секунды</td><td>[[https://ru.wikipedia.org/wiki/UNIX-время UnixTime]]</td><td>Read/-</td></tr>
 +
<tr><td>T1</td><td>Время, затраченное на обмен данными со всеми регистрами в предыдущем цикле.</td><td>Милисекунды</td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>T2</td><td>Время, затраченное на обмен данными, обработку всех событий, сценариев, записью в базу данных, записью новых значений в устройства в предыдущем цикле. Фактически, это полный цикл без учета паузы между циклами.</td><td>Милисекунды</td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>T3</td><td>Полное фактическое время предыдущего цикла с учетом паузы между циклами.</td><td>Милисекунды</td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
</table>
 +
 
 +
== Hx  - Hardware-related registers == <!--T:11-->
 
Регистры для чтения состояния оборудования на борту WebHMI
 
Регистры для чтения состояния оборудования на борту WebHMI
 
<table border="1" cellspacing="0">
 
<table border="1" cellspacing="0">
Строка 31: Строка 79:
 
<tr><td>H9</td><td>“External Power Supply”. Работаем на 24В. 1 означает что система работает от внешнего питания.</td><td></td><td>Bit</td><td>Read/-</td></tr>
 
<tr><td>H9</td><td>“External Power Supply”. Работаем на 24В. 1 означает что система работает от внешнего питания.</td><td></td><td>Bit</td><td>Read/-</td></tr>
 
<tr><td>H10</td><td>“Internal Power Supply”. Работаем от аккумулятора. 1 означает что система работает от аккумулятора.</td><td></td><td>Bit</td><td>Read/-</td></tr>
 
<tr><td>H10</td><td>“Internal Power Supply”. Работаем от аккумулятора. 1 означает что система работает от аккумулятора.</td><td></td><td>Bit</td><td>Read/-</td></tr>
<tr><td>H11</td><td>"Reset enabled" - включен таймер на подачу сигнала RESET. 1 означает что система собирается перезагрузиться</td><td></td><td>Bit</td><td>Read/-</td></tr>
+
<tr><td>H11</td><td>"Reset enabled" - включен таймер на подачу сигнала RESET. 1 означает что система собирается перезагрузиться.</td><td></td><td>Bit</td><td>Read/-</td></tr>
 
<tr><td>H12</td><td>“Power OFF enabled”. 1 означает что система собирается выключиться.</td><td></td><td>Bit</td><td>Read/-</td></tr>
 
<tr><td>H12</td><td>“Power OFF enabled”. 1 означает что система собирается выключиться.</td><td></td><td>Bit</td><td>Read/-</td></tr>
 
</table>
 
</table>
 +
 +
== B0 - Sound alert register == <!--T:12-->
 +
<p>С помощью этого регистра можно издавать звуки встроенной в WebHMI пищалкой. В регистр нужно записать значение от 1 до 8. WebHMI издаст соответствующее количество звуковых сигналов. После того как сигналы прозвучат WebHMI перестанет издавать звук. Для повтороного звукового сигнала следует еще раз записать нужное число в этот регистр. </p>
 +
<p>Запись в этот регистр можно организовать с помощью сценариев. Так, например, можно издавать писк при обрыве связи или при наступлении аварийой ситуации. </p>
 +
<p>При чтении из этого регистра всегда будет возвращаться 0.</p>
 +
 +
== DOx - Digital Output registers == <!--T:13-->
 +
<p>Регистры внешних сухих контактов. При запиписи в регистр соответствующий сухой контакт будет замкнут.</p>
 +
<p>С помощью сухих контактов можно организовать управление внешнимим устройствами или же передать сигналы но внешние системы. Например, можно подключить охранную или пожарную системы и передавать им сигналы тревоги.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>DO0</td><td>Сухой контакт номер 1</td><td></td><td>Bit</td><td>Read/Write</td></tr>
 +
<tr><td>DO1</td><td>Сухой контакт номер 2</td><td></td><td>Bit</td><td>Read/Write</td></tr>
 +
</table>
 +
 +
== Ixxx - Intervals == <!--T:14-->
 +
<p>Регистры интервалов. Обычно применяются в условиях событий. Например, если нужно получить событие, которое срабатывает каждые 10 секунд, то можно сравнивать значение регистра I10 c нулем (I10 == 0).
 +
Если нужен интервал 2 минуты то нужно использовать регистр I120.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>I1</td><td>Остаток деления текущего времени на 1</td><td>Секунды</td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>I2</td><td>Остаток деления текущего времени на 2</td><td>Секунды</td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>I3</td><td>Остаток деления текущего времени на 3</td><td>Секунды</td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td colspan="7" align="center">...</td></tr>
 +
</table>
 +
 +
== Rxxx - Random values == <!--T:15-->
 +
<p>Генератор случайных чисел. Rxxx = rand() % xxx.</p>
 +
<p>Значение регистра с номером xxx это остаток от деления случайного числа на xxx (адрес регистра).</p>
 +
<p>Пример: R123 будет возвращать случайные числа в диапазоне от 0 до 122 включительно.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>R2</td><td>Случайное целое в интервале от 0 до 1 (включительно).</td><td></td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>R3</td><td>Случайное целое в интервале от 0 до 2 (включительно).</td><td></td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>R4</td><td>Случайное целое в интервале от 0 до 3 (включительно).</td><td></td><td>Double Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td colspan="7" align="center">...</td></tr>
 +
</table>
 +
 +
== Lx - Linux-related registers == <!--T:16-->
 +
<p>Некоторые наиболее важные метрики операцинной системы.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>L0</td><td>Свободная память</td><td>KiB</td><td>Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>L1</td><td>Свободная память плюс память занятая буферами ОС</td><td>KiB</td><td>Word, Unsigned Int</td><td>Read/-</td></tr>
 +
<tr><td>L2</td><td>1 minute [[http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages load average]]</td><td></td><td>Double Word, Float 32</td><td>Read/-</td></tr>
 +
<tr><td>L3</td><td>5 minutes [[http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages load average]]</td><td></td><td>Double Word, Float 32</td><td>Read/-</td></tr>
 +
<tr><td>L4</td><td>15 minutes [[http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages load average]]</td><td></td><td>Double Word, Float 32</td><td>Read/-</td></tr>
 +
</table>
 +
 +
== Exxx.xxx - Event registers == <!--T:17-->
 +
<p>Регистры из условий. Если условие Х, у которого id = Y, сейчас выполняется, то можно читать некоторые его значения из регистров вида EY.xxx. Только чтение.</p>
 +
<p>Читать можно те значения, которые добавлены в таблицу отчета. Для удобства, каждое такое значение подписано прямо в редакторе условий.</p>
 +
[[Файл:Event_registers.png|800px]]
 +
<p>На этом экране видны регистры E1.0, E1.1, E1.2. Когда условие выполняется то в них будут содержаться соответствующие значения из отчета с id = 1. В данном примере в регистре E1.0 будет время начала выполнения условия в формате [[https://ru.wikipedia.org/wiki/UNIX-время UnixTime]], в E1.1 время его завершения либо 0 если оно еще не завершилось, в E1.2 - значение из регистра "Рецепт" на момент начала события.</p>
 +
 +
== ESxxx - Event State == <!--T:18-->
 +
<p>Регистры состояния условий.</p>
 +
<p>Например, единица в регистре ES2 означает что событие с id=2 сейчас выполняется. Если в регистре ES2 ноль то это это значит что условие не выполняется.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>ES1</td><td>Состояние условия с id=1</td><td></td><td>Bit</td><td>Read/-</td></tr>
 +
<tr><td>ES2</td><td>Состояние условия с id=2</td><td></td><td>Bit</td><td>Read/-</td></tr>
 +
<tr><td>ES3</td><td>Состояние условия с id=3</td><td></td><td>Bit</td><td>Read/-</td></tr>
 +
<tr><td colspan="7" align="center">...</td></tr>
 +
</table>
 +
 +
== ELxxx - Event Length == <!--T:19-->
 +
<p>Регистры длительности событий.</p>
 +
<p>Например, в регистре EL2 будет содержаться длительность в секундах выполнения события с id=2 при условии что это событие сейчас выполняется. Если в регистре EL2 ноль то это это значит что условие не выполняется или его длительность меньше 1 секунды.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Единицы измерения</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>EL1</td><td>Длительность события с id=1</td><td>Секунды</td><td>Double Word</td><td>Read/-</td></tr>
 +
<tr><td>EL2</td><td>Длительность события с id=2</td><td>Секунды</td><td>Double Word</td><td>Read/-</td></tr>
 +
<tr><td>EL3</td><td>Длительность события с id=3</td><td>Секунды</td><td>Double Word</td><td>Read/-</td></tr>
 +
<tr><td colspan="7" align="center">...</td></tr>
 +
</table>
 +
 +
== Sxxx - String == <!--T:20-->
 +
Начиная с версии 1.11.0.3478 в WebHMI добавился новый тип данных - строки. Строки доступны как внутренние регистры Sxxx. Всего доступно 200 таких регистров S1...S200.
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>S1</td><td>Переменная типа строка 1</td><td>String</td><td>Read/Write</td></tr>
 +
<tr><td>S2</td><td>Переменная типа строка 2</td><td>String</td><td>Read/Write</td></tr>
 +
<tr><td>S3</td><td>Переменная типа строка 3</td><td>String</td><td>Read/Write</td></tr>
 +
<tr><td colspan="7" align="center">...</td></tr>
 +
<tr><td>S200</td><td>Переменная типа строка 200</td><td>String</td><td>Read/Write</td></tr>
 +
</table>
 +
 +
== TRxxx - Title of recipe == <!--T:21-->
 +
Начиная с версии 2.7 в WebHMI добавился новый тип внутренних регистров TRxx.
 +
В них содержатся названия рецептов с указанным ID.
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>TR1</td><td>Название рецепа с ID=1</td><td>String</td><td>Read/Write</td></tr>
 +
<tr><td>TR2</td><td>Название рецепа с ID=2</td><td>String</td><td>Read/Write</td></tr>
 +
<tr><td>TR3</td><td>Название рецепа с ID=3</td><td>String</td><td>Read/Write</td></tr>
 +
<tr><td colspan="7" align="center">...</td></tr>
 +
</table>
 +
 +
 +
== WCxxx - Weather Condition registers == <!--T:22-->
 +
<p>Текущая метеоинформация. Группа регистров, предоставляющих погодную информацию на текущий момент в месте установки WebHMI. Данные обновляются примерно каждые два часа. Для работы сервиса требуется интернет-подключение, учетная запись в Level2 и подписка на метеопрогноз. Регистры доступны начиная с версии 2.5.2400.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>WC0</td><td>Время, для которого получены данные.</td><td>Double Word, Unixtime</td><td>Read/-</td></tr>
 +
<tr><td>WC1</td><td>Температура воздуха, градусы Цельсия.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WC2</td><td>Давление, hPa.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WC3</td><td>Относительная влажность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WC4</td><td>Скорость ветра, м/с.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WC5</td><td>Направление, откуда дует ветер, метрологические градусы.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WC6</td><td>Облачность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WC7</td><td>Количество осадков (дождь), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WC8</td><td>Количество осадков (снег), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WC9</td><td>Текстовое описание текущей погоды</td><td>String</td><td>Read/-</td></tr>
 +
</table>
 +
<p>Текстовое описание текущей погоды может быть: Clear, Clouds, Rain, Snow, Thunderstorm, Mist.</p>
 +
 +
== WFxxx - Weather Forecast registers == <!--T:23-->
 +
<p>Прогноз погоды на ближайшие сутки с интервалом 3 часа. Доступен прогноз на семь 3-х часовых интервалов вперед. Данные обновляются примерно каждые два часа. Для работы сервиса требуется интернет-подключение, учетная запись в Level2 и подписка на метеопрогноз. Регистры доступны начиная с версии 2.5.2400.</p>
 +
<p>Регистры аналогичны регистрам WCxxx. Адреса регистров строятся таким образом: [номер интервала] * 10 + [адрес регистра WCxxx].</p>
 +
 +
<!--T:24-->
 +
<p>Пример: <br>
 +
WF1 = Температура воздуха в следующем 3-х часовом интервале.<br>
 +
WF21 = Температура воздуха примерно через 6 часов.<br>
 +
WF31 = Температура воздуха примерно через 9 часов.<br>
 +
И т.д.
 +
</p>
 +
 +
<!--T:25-->
 +
<p>Для более точного понимания на какое время строится прогноз, можно использовать метки времени в регистрах WFx0.</p>
 +
 +
<!--T:26-->
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>WF0</td><td>Интервал 1. Время, для которого получены данные.</td><td>Double Word, Unixtime</td><td>Read/-</td></tr>
 +
<tr><td>WF1</td><td>Интервал 1. Температура воздуха, градусы Цельсия.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF2</td><td>Интервал 1. Давление, hPa.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF3</td><td>Интервал 1. Относительная влажность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF4</td><td>Интервал 1. Скорость ветра, м/с.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF5</td><td>Интервал 1. Направление, откуда дует ветер, метрологические градусы.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF6</td><td>Интервал 1. Облачность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF7</td><td>Интервал 1. Количество осадков (дождь), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF8</td><td>Интервал 1. Количество осадков (снег), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF9</td><td>Интервал 1. Текстовое описание текущей погоды</td><td>String</td><td>Read/-</td></tr>
 +
<tr><td>WF10</td><td>Интервал 2. Время, для которого получены данные.</td><td>Double Word, Unixtime</td><td>Read/-</td></tr>
 +
<tr><td>WF11</td><td>Интервал 2. Температура воздуха, градусы Цельсия.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF12</td><td>Интервал 2. Давление, hPa.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF13</td><td>Интервал 2. Относительная влажность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF14</td><td>Интервал 2. Скорость ветра, м/с.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF15</td><td>Интервал 2. Направление, откуда дует ветер, метрологические градусы.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF16</td><td>Интервал 2. Облачность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF17</td><td>Интервал 2. Количество осадков (дождь), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF18</td><td>Интервал 2. Количество осадков (снег), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF19</td><td>Интервал 2. Текстовое описание текущей погоды</td><td>String</td><td>Read/-</td></tr>
 +
<tr><td>...</td><td>...</td><td>...</td><td>...</td></tr>
 +
<tr><td>WF60</td><td>Интервал 7. Время, для которого получены данные.</td><td>Double Word, Unixtime</td><td>Read/-</td></tr>
 +
<tr><td>WF61</td><td>Интервал 7. Температура воздуха, градусы Цельсия.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF62</td><td>Интервал 7. Давление, hPa.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF63</td><td>Интервал 7. Относительная влажность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF64</td><td>Интервал 7. Скорость ветра, м/с.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF65</td><td>Интервал 7. Направление, откуда дует ветер, метрологические градусы.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF66</td><td>Интервал 7. Облачность, %.</td><td>Word, Int</td><td>Read/-</td></tr>
 +
<tr><td>WF67</td><td>Интервал 7. Количество осадков (дождь), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF68</td><td>Интервал 7. Количество осадков (снег), мм.</td><td>Double Word, Float</td><td>Read/-</td></tr>
 +
<tr><td>WF69</td><td>Интервал 7. Текстовое описание текущей погоды</td><td>String</td><td>Read/-</td></tr>
 +
</table>
 +
<p>Текстовое описание текущей погоды может быть: Clear, Clouds, Rain, Snow, Thunderstorm, Mist.</p>
 +
 +
== WSxxx - Sunset/Sunrize registers == <!--T:27-->
 +
<p>Время восхода и заката солнца в текущих сутках. Для работы сервиса требуется интернет-подключение, учетная запись в Level2 и подписка на метеопрогноз. Регистры доступны начиная с версии 2.5.2400.</p>
 +
<table border="1" cellspacing="0">
 +
<tr><td>Регистр</td><td>Описание</td><td>Тип данных</td><td>Read/Write</td></tr>
 +
<tr><td>WS0</td><td>Время рассветра.</td><td>Double Word, Unixtime</td><td>Read/-</td></tr>
 +
<tr><td>WS1</td><td>Время заката.</td><td>Double Word, Unixtime</td><td>Read/-</td></tr>
 +
</table>
 +
<p>Текстовое описание текущей погоды может быть: Clear, Clouds, Rain, Snow, Thunderstorm, Mist.</p>
 +
</translate>

Текущая версия на 10:05, 13 июля 2017

Другие языки:
English • ‎русский

В версии WebHMI 1.5 доступны такие внутренние регистры.

Cx - Communication registers

Наличие ошибок связи на разных соединениях.

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
C0Наличие ошибок связи в любом из соединений. 0 означает что ошибок связи нет. Положительное число означает номер соединения в котором есть ошибка связи.Номер соединенияWord, Unsigned IntRead/-
C1Наличие ошибки связи в соединении с ID=1. 0 означает что ошибок нет. Положительное число означает ID регистра который не может быть прочитан.Номер регистраWord, Unsigned IntRead/-
C2Наличие ошибки связи в соединении с ID=2. 0 означает что ошибок нет. Положительное число означает ID регистра который не может быть прочитан.Номер регистраWord, Unsigned IntRead/-
............

CDxxx - Connection Disabled registers

Состояние соединения — включено/отключено. Этот регистр позволяет видеть отключен ли обмен по конкретному соединению. Если обмен отключен — система вернет 1. Если обмен не отключен — вернет 0. Запись в данные регистры позволяет программно включать/выключать обмен по нужному соединению. Для отключения обмена нужно записать 1 в соответствующий регистр.

РегистрОписаниеТип данныхRead/Write
CD1Обмен включен в соединении с ID = 1.BitRead/Write
CD2Обмен включен в соединении с ID = 2.BitRead/Write
CD3Обмен включен в соединении с ID = 3.BitRead/Write
.........

Dxxx - Data registers

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
D0Обычный регистр для нужд пользователей.Bit, Byte, Word, Double WordRead/Write
...
D1999Обычный регистр для нужд пользователей.Bit, Byte, Word, Double WordRead/Write

Данные в этих регистрах после перезагрузки НЕ сохраняются.

Пользователю доступны 2000 байт в оперативной памяти. Адрес регистра - это адрес начала фрагмента в блоке памяти.

В зависимости от выбранного типа данных на один регистр приходится разное количество байт. Так, можно обращаться к регистру с адресом D12 как к байту. В этом случае будет обращение к одному байту в памяти. Если обратится к регистру с адресом D12 как к слову (Word) то физически будет обращение к двум байтам с адресами D12 и D13 из которых будет составлено слово. Таким образом можно обращаться к отдельным байтам в нужном слове или двойном слове. Система не проверяет адреса регистров на пересечения или наложения. Этот контроль должен быть выполнен пользователем.

DSxxx - Data static registers

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
DS0Энергонезависимый регистр для нужд пользователей.Byte, Word, Double WordRead/Write
...
DS1999Энергонезависимый регистр для нужд пользователей.Byte, Word, Double WordRead/Write

Данные в этих регистрах после перезагрузки СОХРАНЯЮТСЯ. Пользователю доступны 2000 байт в энергонезависимой памяти. Адрес регистра - это адрес начала фрагмента в блоке памяти.

В зависимости от выбранного типа данных на один регистр приходится разное количество байт. Так, можно обращаться к регистру с адресом DS12 как к байту. В этом случае будет обращение к одному байту в памяти. Если обратится к регистру с адресом DS12 как к слову (Word) то физически будет обращение к двум байтам с адресами DS12 и DS13 из которых и будет составлено слово. Таким образом можно обращаться к отдельным байтам в нужном слове или двойном слове. Система не проверяет адреса регистров на пересечения или наложения. Этот контроль должен быть выполнен пользователем.

Энергонезависимая память реализована в аппаратной платформа ревизии V5.34 и выше.

Tx - Time registers

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
T0Текущее времяСекунды[UnixTime]Read/-
T1Время, затраченное на обмен данными со всеми регистрами в предыдущем цикле.МилисекундыDouble Word, Unsigned IntRead/-
T2Время, затраченное на обмен данными, обработку всех событий, сценариев, записью в базу данных, записью новых значений в устройства в предыдущем цикле. Фактически, это полный цикл без учета паузы между циклами.МилисекундыDouble Word, Unsigned IntRead/-
T3Полное фактическое время предыдущего цикла с учетом паузы между циклами.МилисекундыDouble Word, Unsigned IntRead/-

Hx - Hardware-related registers

Регистры для чтения состояния оборудования на борту WebHMI

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
H0Флаг валидности значения температуры. 1 = значение достоверное, 0 = значение не достоверноBitRead/-
H1Флаг валидности регистров контролера питания, 1 = значения достоверное, 0 = значения не достоверныBitRead/-
H2Температура на кристалле RTCГрадусы ЦельсияDouble word, float 32Read/-
H3Входное напряжениеВольтыDouble word, float 32Read/-
H4Напряжение на батарееВольтыDouble word, float 32Read/-
H5“Power OK” - питание в нормеBitRead/-
H6"Battery Low" - батарея разряжен. 1 означает, что на батарее напряжение достигло минимального но еще рабочего напряжения, WebHMI завершит работу штатным образом.BitRead/-
H7Battery Critical. Напряжение на батарее достигло минимального значения, и если в течении 10 сек не появится входное напряжение то контролер обесточит WebHMI.BitRead/-
H8System OK. 1 означает что система загрузилась и работает.BitRead/-
H9“External Power Supply”. Работаем на 24В. 1 означает что система работает от внешнего питания.BitRead/-
H10“Internal Power Supply”. Работаем от аккумулятора. 1 означает что система работает от аккумулятора.BitRead/-
H11"Reset enabled" - включен таймер на подачу сигнала RESET. 1 означает что система собирается перезагрузиться.BitRead/-
H12“Power OFF enabled”. 1 означает что система собирается выключиться.BitRead/-

B0 - Sound alert register

С помощью этого регистра можно издавать звуки встроенной в WebHMI пищалкой. В регистр нужно записать значение от 1 до 8. WebHMI издаст соответствующее количество звуковых сигналов. После того как сигналы прозвучат WebHMI перестанет издавать звук. Для повтороного звукового сигнала следует еще раз записать нужное число в этот регистр.

Запись в этот регистр можно организовать с помощью сценариев. Так, например, можно издавать писк при обрыве связи или при наступлении аварийой ситуации.

При чтении из этого регистра всегда будет возвращаться 0.

DOx - Digital Output registers

Регистры внешних сухих контактов. При запиписи в регистр соответствующий сухой контакт будет замкнут.

С помощью сухих контактов можно организовать управление внешнимим устройствами или же передать сигналы но внешние системы. Например, можно подключить охранную или пожарную системы и передавать им сигналы тревоги.

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
DO0Сухой контакт номер 1BitRead/Write
DO1Сухой контакт номер 2BitRead/Write

Ixxx - Intervals

Регистры интервалов. Обычно применяются в условиях событий. Например, если нужно получить событие, которое срабатывает каждые 10 секунд, то можно сравнивать значение регистра I10 c нулем (I10 == 0). Если нужен интервал 2 минуты то нужно использовать регистр I120.

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
I1Остаток деления текущего времени на 1СекундыDouble Word, Unsigned IntRead/-
I2Остаток деления текущего времени на 2СекундыDouble Word, Unsigned IntRead/-
I3Остаток деления текущего времени на 3СекундыDouble Word, Unsigned IntRead/-
...

Rxxx - Random values

Генератор случайных чисел. Rxxx = rand() % xxx.

Значение регистра с номером xxx это остаток от деления случайного числа на xxx (адрес регистра).

Пример: R123 будет возвращать случайные числа в диапазоне от 0 до 122 включительно.

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
R2Случайное целое в интервале от 0 до 1 (включительно).Double Word, Unsigned IntRead/-
R3Случайное целое в интервале от 0 до 2 (включительно).Double Word, Unsigned IntRead/-
R4Случайное целое в интервале от 0 до 3 (включительно).Double Word, Unsigned IntRead/-
...

Lx - Linux-related registers

Некоторые наиболее важные метрики операцинной системы.

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
L0Свободная памятьKiBWord, Unsigned IntRead/-
L1Свободная память плюс память занятая буферами ОСKiBWord, Unsigned IntRead/-
L21 minute [load average]Double Word, Float 32Read/-
L35 minutes [load average]Double Word, Float 32Read/-
L415 minutes [load average]Double Word, Float 32Read/-

Exxx.xxx - Event registers

Регистры из условий. Если условие Х, у которого id = Y, сейчас выполняется, то можно читать некоторые его значения из регистров вида EY.xxx. Только чтение.

Читать можно те значения, которые добавлены в таблицу отчета. Для удобства, каждое такое значение подписано прямо в редакторе условий.

Event registers.png

На этом экране видны регистры E1.0, E1.1, E1.2. Когда условие выполняется то в них будут содержаться соответствующие значения из отчета с id = 1. В данном примере в регистре E1.0 будет время начала выполнения условия в формате [UnixTime], в E1.1 время его завершения либо 0 если оно еще не завершилось, в E1.2 - значение из регистра "Рецепт" на момент начала события.

ESxxx - Event State

Регистры состояния условий.

Например, единица в регистре ES2 означает что событие с id=2 сейчас выполняется. Если в регистре ES2 ноль то это это значит что условие не выполняется.

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
ES1Состояние условия с id=1BitRead/-
ES2Состояние условия с id=2BitRead/-
ES3Состояние условия с id=3BitRead/-
...

ELxxx - Event Length

Регистры длительности событий.

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

РегистрОписаниеЕдиницы измеренияТип данныхRead/Write
EL1Длительность события с id=1СекундыDouble WordRead/-
EL2Длительность события с id=2СекундыDouble WordRead/-
EL3Длительность события с id=3СекундыDouble WordRead/-
...

Sxxx - String

Начиная с версии 1.11.0.3478 в WebHMI добавился новый тип данных - строки. Строки доступны как внутренние регистры Sxxx. Всего доступно 200 таких регистров S1...S200.

РегистрОписаниеТип данныхRead/Write
S1Переменная типа строка 1StringRead/Write
S2Переменная типа строка 2StringRead/Write
S3Переменная типа строка 3StringRead/Write
...
S200Переменная типа строка 200StringRead/Write

TRxxx - Title of recipe

Начиная с версии 2.7 в WebHMI добавился новый тип внутренних регистров TRxx. В них содержатся названия рецептов с указанным ID.

РегистрОписаниеТип данныхRead/Write
TR1Название рецепа с ID=1StringRead/Write
TR2Название рецепа с ID=2StringRead/Write
TR3Название рецепа с ID=3StringRead/Write
...


WCxxx - Weather Condition registers

Текущая метеоинформация. Группа регистров, предоставляющих погодную информацию на текущий момент в месте установки WebHMI. Данные обновляются примерно каждые два часа. Для работы сервиса требуется интернет-подключение, учетная запись в Level2 и подписка на метеопрогноз. Регистры доступны начиная с версии 2.5.2400.

РегистрОписаниеТип данныхRead/Write
WC0Время, для которого получены данные.Double Word, UnixtimeRead/-
WC1Температура воздуха, градусы Цельсия.Double Word, FloatRead/-
WC2Давление, hPa.Word, IntRead/-
WC3Относительная влажность, %.Word, IntRead/-
WC4Скорость ветра, м/с.Double Word, FloatRead/-
WC5Направление, откуда дует ветер, метрологические градусы.Double Word, FloatRead/-
WC6Облачность, %.Word, IntRead/-
WC7Количество осадков (дождь), мм.Double Word, FloatRead/-
WC8Количество осадков (снег), мм.Double Word, FloatRead/-
WC9Текстовое описание текущей погодыStringRead/-

Текстовое описание текущей погоды может быть: Clear, Clouds, Rain, Snow, Thunderstorm, Mist.

WFxxx - Weather Forecast registers

Прогноз погоды на ближайшие сутки с интервалом 3 часа. Доступен прогноз на семь 3-х часовых интервалов вперед. Данные обновляются примерно каждые два часа. Для работы сервиса требуется интернет-подключение, учетная запись в Level2 и подписка на метеопрогноз. Регистры доступны начиная с версии 2.5.2400.

Регистры аналогичны регистрам WCxxx. Адреса регистров строятся таким образом: [номер интервала] * 10 + [адрес регистра WCxxx].

Пример:
WF1 = Температура воздуха в следующем 3-х часовом интервале.
WF21 = Температура воздуха примерно через 6 часов.
WF31 = Температура воздуха примерно через 9 часов.
И т.д.

Для более точного понимания на какое время строится прогноз, можно использовать метки времени в регистрах WFx0.

РегистрОписаниеТип данныхRead/Write
WF0Интервал 1. Время, для которого получены данные.Double Word, UnixtimeRead/-
WF1Интервал 1. Температура воздуха, градусы Цельсия.Double Word, FloatRead/-
WF2Интервал 1. Давление, hPa.Word, IntRead/-
WF3Интервал 1. Относительная влажность, %.Word, IntRead/-
WF4Интервал 1. Скорость ветра, м/с.Double Word, FloatRead/-
WF5Интервал 1. Направление, откуда дует ветер, метрологические градусы.Double Word, FloatRead/-
WF6Интервал 1. Облачность, %.Word, IntRead/-
WF7Интервал 1. Количество осадков (дождь), мм.Double Word, FloatRead/-
WF8Интервал 1. Количество осадков (снег), мм.Double Word, FloatRead/-
WF9Интервал 1. Текстовое описание текущей погодыStringRead/-
WF10Интервал 2. Время, для которого получены данные.Double Word, UnixtimeRead/-
WF11Интервал 2. Температура воздуха, градусы Цельсия.Double Word, FloatRead/-
WF12Интервал 2. Давление, hPa.Word, IntRead/-
WF13Интервал 2. Относительная влажность, %.Word, IntRead/-
WF14Интервал 2. Скорость ветра, м/с.Double Word, FloatRead/-
WF15Интервал 2. Направление, откуда дует ветер, метрологические градусы.Double Word, FloatRead/-
WF16Интервал 2. Облачность, %.Word, IntRead/-
WF17Интервал 2. Количество осадков (дождь), мм.Double Word, FloatRead/-
WF18Интервал 2. Количество осадков (снег), мм.Double Word, FloatRead/-
WF19Интервал 2. Текстовое описание текущей погодыStringRead/-
............
WF60Интервал 7. Время, для которого получены данные.Double Word, UnixtimeRead/-
WF61Интервал 7. Температура воздуха, градусы Цельсия.Double Word, FloatRead/-
WF62Интервал 7. Давление, hPa.Word, IntRead/-
WF63Интервал 7. Относительная влажность, %.Word, IntRead/-
WF64Интервал 7. Скорость ветра, м/с.Double Word, FloatRead/-
WF65Интервал 7. Направление, откуда дует ветер, метрологические градусы.Double Word, FloatRead/-
WF66Интервал 7. Облачность, %.Word, IntRead/-
WF67Интервал 7. Количество осадков (дождь), мм.Double Word, FloatRead/-
WF68Интервал 7. Количество осадков (снег), мм.Double Word, FloatRead/-
WF69Интервал 7. Текстовое описание текущей погодыStringRead/-

Текстовое описание текущей погоды может быть: Clear, Clouds, Rain, Snow, Thunderstorm, Mist.

WSxxx - Sunset/Sunrize registers

Время восхода и заката солнца в текущих сутках. Для работы сервиса требуется интернет-подключение, учетная запись в Level2 и подписка на метеопрогноз. Регистры доступны начиная с версии 2.5.2400.

РегистрОписаниеТип данныхRead/Write
WS0Время рассветра.Double Word, UnixtimeRead/-
WS1Время заката.Double Word, UnixtimeRead/-

Текстовое описание текущей погоды может быть: Clear, Clouds, Rain, Snow, Thunderstorm, Mist.