Модель данных
С классическим ПЛК часто путают четыре разные вещи. В Telematic они разделены специально.
| Нужно | Используйте |
|---|---|
| Уставка, режим, счётчик, «включено/выключено» | Регистр |
| Физический датчик или исполнительный механизм | Вход или выход |
| «Сейчас аварийно», полоса на экране, сброс оператором | Авария |
| «Вот это произошло» — факт в истории | Событие |
Не стоит хранить аварию в обычном регистре-переключателе: не будет журнала, жёлтой полосы и понятного сброса.
Программа (Python или C)
│
▼
Текущие значения ◄──► страница «Управление»
▲
│ если разрешена запись с шины
├── Modbus
└── SNMP
▲
│ несколько раз в секунду
Реальные входы и выходы
Имена, типы и права доступа запоминаются. Текущие значения после перезагрузки сбрасываются, пока программа или оператор не запишут их снова.
Регистры
Регистр — это тег процесса: не адрес ячейки, а величина с именем, типом и правами.
По умолчанию доступно 10 регистров, максимум 32. Число меняется в Настройки → Регистры.
Типы
| Тип | Для чего | Как выглядит у оператора |
|---|---|---|
| Переключатель (bool) | Да / нет | Тумблер или список |
| Целое со знаком (int) | Температура, уровень со знаком | Число, можно с запятой |
| Целое без знака (uint) | Счётчики, время | Число |
| Дробное (float) | Расчёты | Число |
| Список (enum) | «Стоп / Ручной / Авто» | Выпадающий список |
Дробная часть у целых чисел — это масштаб на экране, не отдельный тип. Число 123 при одной цифре после запятой показывается как 12.3. В программе для целых типов работают с целым значением в этих единицах (для 12,3 °C пишут 123).
Для веб-формы можно задать минимум, максимум и шаг. У списка — от 2 до 10 подписей.
Кто видит и кто пишет
У каждого регистра два независимых права.
| Веб (страница «Управление») | Modbus и SNMP | |
|---|---|---|
| скрыт | Оператор не видит | С шины канала нет |
| чтение | Видно, менять нельзя | Только чтение |
| запись | Можно менять | Можно писать с шины |
Программа всегда может изменить регистр. Ограничения — для человека и для внешней системы.
Настраивать можно двумя способами:
- в браузере: Настройки → Регистры → шестерёнка у строки;
- из программы при старте — тогда контроллер сам «рассказывает» вебу, как называются теги.
Кнопка Сбросить на вкладке регистров возвращает шаблон настройки регистров (типы и доступы), а не «заводские значения процесса».
Modbus
Внешняя система видит holding-регистры (16-битные слова). Один пользовательский регистр занимает два слова.
| Адреса | Что |
|---|---|
| 0–31 | Служебное: аварии, состояние программы, время работы |
| 32–63 | Дискретные выходы |
| 64–95 | Дискретные входы |
| 96–127 | Аналоговые выходы |
| 128–159 | Аналоговые входы |
| 160–223 | Пользовательские регистры |
Запись с Modbus проходит, только если у тега разрешена запись по шине.
Входы и выходы
Это железо. В настройках у канала есть флажок использовать. На «Управление» он попадает, только если включён и не скрыт для веба.
| Канал | Назначение | С веба | Особенности |
|---|---|---|---|
| DI | Дискретный вход | Только индикация | Нормально замкнутый или разомкнутый контакт |
| DO | Дискретный выход | Можно, если разрешена запись | Можно ШИМ: период и заполнение 0–100 % |
| AI | Аналоговый вход | Только индикация | Термодатчик NTC (два канала) или 0–10 В (третий канал). Либо «как есть» с АЦП |
| AO | Аналоговый выход 0–10 В | Можно, если разрешена запись | На экране — вольты |
Для входов в настройках доступ проще: показать или нет. Для выходов — как у регистров: скрыт / чтение / запись.
У аналогового входа можно задать небольшую коррекцию показания. ШИМ доступен на всех пяти дискретных выходах.
Физические входы и выходы контроллер обновляет несколько раз в секунду. Если программа пишет выход чаще, «на клеммы» уйдёт последнее значение к моменту обновления.
Аварии
Авария — это защёлка: «сейчас плохо», пока кто-то не снимет. При включении пишется запись в журнал, в шапке браузера появляется полоса.
Два независимых набора:
- Пользовательские — ваши имена («Перегрев», «Нет воды»). До 32, по умолчанию 5 слотов. Настройки → Аварии.
- Системные — неисправности самого контроллера и программы, имена не задаются.
| Системная авария | Смысл |
|---|---|
| Сбой прошивки | Критическая ошибка самого контроллера |
| Сбой в сценарии | Критическая ошибка пользовательской программы |
| Сторожевой таймер | Программа или система перестали отвечать |
| Переполнение стека | Программе не хватило служебной памяти |
| Ошибка в сценарии | Программа завершилась с ошибкой (режим «Эксплуатация») |
| Нестабильный сценарий | Повторяющиеся тяжёлые сбои программы |
Как это работает для пользователя:
- программа включает аварию — бит защёлкивается, в журнале появляется запись, в шапке полоса;
- программа может снять свою аварию;
- кнопки Сбросить в шапке снимают все активные пользовательские или все системные аварии (это тоже пишется в журнал как сервисное действие);
- пользовательские — жёлтая полоса, системные — красная.
На вкладке настроек аварий виден текущий статус. Менять его с веба может администратор.
События
Словом «событие» называют две разные вещи.
Журнал — лента, которая остаётся, пока её не очистят на странице Сервис. Типы записей:
| Тип | Откуда |
|---|---|
| Авария | Включили пользовательскую аварию |
| Конфигурация | Сменили настройки, добавили или удалили сценарий |
| Сервис | Питание, перезагрузка, прошивка, очистка журналов, сброс аварий |
| Управление | Пуск и останов программы и ваши события из сценария |
Страница События и отметки на графике Метрики читают этот журнал.
Слоты пользовательских событий — это только подписи для журнала (Настройки → События). Программа сообщает «произошло то-то» — в истории появляется строка. Текущего флажка нет: если нужно «авария до сих пор активна», это авария, не событие.
| «Сейчас плохо» | «Это случилось» |
|---|---|
| Авария | Событие |
| Полоса в шапке, сброс | Только журнал и график |
В фильтре журнала видна и причина: оператор, веб, алгоритм, время, ошибка и т.д.
Метрики
Встроенный самописец: выбранные каналы и регистры пишутся с периодом от 5 секунд. Настраивается на странице Метрики. Если включена отправка на сервер, те же графики можно смотреть удалённо.
Это не тренды в ячейках ПЛК, а отдельный архив контроллера.
Кто задаёт что
| В браузере | В программе | |
|---|---|---|
| Имя и тип регистра | Настройки → Регистры | функции настройки регистра |
| Сколько регистров, аварий, событий | Список «количество» | функция смены количества |
| Значение регистра или выхода | «Управление», если разрешена запись | запись в тег |
| Включить аварию | статус / кнопка сброса | включить / выключить аварию |
| Пользовательское событие | только имя | добавить событие |
| Какие карточки показать оператору | галочки на «Управление» | функция вида экрана |
Если одно и то же настраивают и в вебе, и при каждом старте программы — останется то, что сделали позже. Для «зашитого» объекта удобно описывать теги в начале сценария.
Если вы привыкли к ПЛК
- Регистр — это тег с именем, а не номер ячейки.
- Вход и выход можно выключить — тогда его нет на экране оператора.
- Авария помнит состояние. Событие — только след в журнале.
- После включения питания уставки сами не вернутся: это должна сделать программа.
- Modbus видит те же теги, что и веб, но только если для шины не стоит «скрыт».