Объекты: Внутренние регистры
Сегодня мы отойдем от изучения различных объектов и разберем внутренние регистры панелей и серверов Weintek. Их немного, и ничего сложного в них нет, но различия между ними знать обязательно.
Базовые энергозависимые регистры
Самые стандартные регистры, значение которых не сохраняются при перезагрузке панели, называются локальными.
Локальный битовый регистр — LB (Local Bit). Этот регистр может принимать значение 0 или 1. Диапазон адресов: 0 ~ 8999. Адреса 9000 ~ 12895 зарезервированы под системные регистры. Формат адреса: DDDDD (D означает разряд десятичного числа).
Локальный регистр слова — LW (Local Word). Этот регистр занимает 16 бит в памяти. Диапазон адресов: 0 ~ 8999. Адреса 9000 ~ 12700 зарезервированы под системные регистры. Обратите внимание, что некоторые типы данных занимают 32 или 64 бита. Если числовой объект имеет формат Float (32 бита) и ему назначен адрес LW0, то на самом деле он будет отображать составное значение LW0 и LW1 (по 16 бит каждый). Будьте осторожны и не допускайте наложения регистров.
Битовый объект также может обратиться к конкретному биту регистра LW. Такой регистр называется LW_bit и имеет формат DDDDDdd, где DDDDD это адрес LW, а dd — это номер бита (от 00 до 15). Это позволяет использовать LW не просто как регистр для числа, но и как хранилище набора битовых значений.
Данные регистры используются для обмена данными, вычислений, временных переменных, вывода текущих значений и т.д.
Энергонезависимые регистры
Некоторые вещи в жизни нужно отпускать, а некоторые хочется сохранить навсегда. Для таких случаев нам подойдут энергонезависимые регистры.
RW (Retentive Word) — энергонезависимый регистр слова. Диапазон адресов: 0 ~ 524287. Формат адреса: DDDDDD . Так же существует стек регистров RW_A — это те же регистры RW, но расположенные в другой области памяти (т.е. RW0 не равен RW_A0). Диапазон адресов: 0 ~ 65535. Формат адреса: DDDDD.
У энергонезависимой памяти нет отдельных битовых регистров, но есть доступ к битам RW через RW_bit и RW_A_bit. В самом деле, хранить маленькие биты отдельно в долгосрочной перспективе не кажется разумным. Формат адреса: DDDDDh. Заметьте, что на сей раз номер бита имеет формат от 0 до f, то есть представлен в шестнадцатеричной системе.
В этих регистрах значения хранятся долго, и никакие перезагрузки панелей им не страшны. Значения регистров сохраняются в энергонезависимую память раз в минуту. Если вы хотите принудительно осуществить сохранение — установите системный бит LB-9029 в «1».
Клиентские регистры
Данные регистры являются уникальными для серии cMT. Значения этих регистров уникальны для каждого клиента, подключающегося к панели или серверу cMT. Клиентом могут быть, например, cMT-iV6 или cMT Viewer на Android.
PLB — клиентский битовый регистр. Диапазон адресов: 0 ~ 12399. Формат адреса: DDDDD.
PLW — клиентский регистр слова. Диапазон адресов: 0 ~ 12300. Формат адреса: DDDDD.
Так же, как и раньше, можно обратиться к отдельным битам слов. В этом нам поможет PLW_bit. Диапазон адресов: 0 ~ 1230015. Формат адреса: DDDDDdd.
Индексируемые регистры
Данные регистры представляют собой связку энергонезависимых регистров и индексного регистра LW9000. Есть битовый регистр (RBI, диапазон адресов: 0 ~ 65535, формат адреса: DDDDD) и регистр слова (RWI, диапазон адресов: 0 ~ 65535f, формат адреса: DDDDDh). Поясним на примере — если объект привязан к регистру RWI0, а LW9000 = 0, то объект будет показывать значение регистра RW0. Если же мы поменяем значение регистра LW9000 на 3, то объект начнет ссылаться на RW3. RBI, в свою очередь, будет ссылаться на RW_bit.
Регистры слова в расширенной памяти
Эти регистры хранятся во внешней памяти — на USB-диске или SD-карте. Они обозначаются как EM0 ~ EM15. Каждый блог регистров имеет диапазон адресов 0 ~ 1073741823 и формат DDDDDDDDDD. Как показано на скриншоте ниже, каждый файл настраивается отдельно в системных настройках. Это позволяет, например, переносить информацию с одной панели на другую, или может быть использовано в целях безопасности.
Вот и все! Как видите, даже в таком простом аспекте Weintek способен удивить некоторыми тонкостями. Теперь вы знаете, зачем нужны все эти типы внутренних регистров и можете их использовать!