---
title: "Руководство пользователя Owen Logic (версия 3.2)"
product: "Owen Logic"
document_number: "№ 1-RU-37197-2.9"
version: "2.9"
language: "ru"
source: "https://docs.owen.ru/product/programmnoe_obespechenie_owen_logic/doc/rukovodstvo-polzovatela-owen-logic-versia-26"
pdf: "https://docs.owen.ru/download/pdf/bHZ3S.rp_owen+logic+%28versia+3.2%29_1-ru-37197-2.9.pdf"
generated: "2026-10-09"
---

# Руководство пользователя Owen Logic (версия 3.2)

## Содержание

- [О программе](#topic-122293)
  - [Системные требования для работы Owen Logic](#topic-122294)
  - [Используемые аббревиатуры и термины](#topic-122295)
- [Установка](#topic-122296)
- [Описание интерфейса](#topic-122297)
  - [Главное меню](#topic-122298)
  - [Панели инструментов](#topic-122299)
  - [Панель Библиотека компонентов](#topic-122300)
  - [Панель Свойства](#topic-122301)
  - [Панель переменных](#topic-122302)
  - [Рабочая область](#topic-122303)
  - [Строка состояния](#topic-122304)
  - [Менеджер и редактор экранов](#topic-122305)
- [Базовые сведения](#topic-122306)
  - [Принцип выполнения программы](#topic-122307)
  - [Разработка проекта и порядок работы](#topic-122308)
    - [Автосохранение проекта](#topic-122309)
    - [Защита проекта ключом](#topic-122310)
  - [Разработка программы](#topic-122311)
    - [Блок комментариев](#topic-122312)
    - [Блок переменной](#topic-122313)
    - [Блок константы](#topic-122314)
    - [Линия задержки](#topic-122315)
    - [Блок сетевой переменной](#topic-122316)
    - [Блок чтения/записи в ФБ](#topic-122317)
    - [Блок преобразования](#topic-122318)
    - [Перенумеровать компоненты](#topic-122319)
    - [Порядок исполнения](#topic-122320)
  - [Программирование дисплея прибора](#topic-122321)
    - [Монохромный текстовый ЖКИ](#topic-122322)
    - [Графический цветной ЖКИ](#topic-122323)
  - [Режим симулятора](#topic-122324)
    - [Симуляция визуализации](#topic-122325)
    - [Симуляция ST кода](#topic-122326)
  - [Настройка порта и подключение прибора](#topic-122327)
  - [Запись программы в прибор](#topic-122328)
  - [Онлайн отладка](#topic-122329)
  - [Сведения о проекте](#topic-122330)
  - [Менеджер компонентов](#topic-122331)
  - [Работа с макросами](#topic-122332)
  - [Работа с элементами на языке ST](#topic-122333)
    - [Работа с функциями на языке ST](#topic-122334)
    - [Работа с функциональными блоками на языке ST](#topic-122335)
- [Настройка прибора](#topic-122336)
  - [Экран](#topic-122337)
  - [Часы](#topic-122338)
  - [Обмен по сети](#topic-122339)
    - [Интерфейсы](#topic-122340)
      - [RS-485](#topic-122341)
      - [Ethernet](#topic-122342)
      - [LoRa](#topic-122343)
    - [Работа по протоколу Modbus](#topic-122344)
      - [Режим Master](#topic-122345)
      - [Режим Slave](#topic-122346)
      - [Шаблоны сетевых устройств](#topic-122347)
  - [Модули расширения](#topic-122348)
  - [Входы и выходы](#topic-122349)
  - [Пароль](#topic-122350)
  - [Подключение к OwenCloud](#topic-122351)
- [Переменные](#topic-122352)
  - [Типы переменных](#topic-122353)
  - [Сервисные переменные](#topic-122354)
  - [Переменные интерфейса связи](#topic-122355)
  - [Привязка переменных к параметрам](#topic-122356)
  - [Копирование переменных](#topic-122357)
- [Библиотека](#topic-122358)
  - [Функции](#topic-122359)
    - [Логические функции](#topic-122360)
      - [И (AND)](#topic-122361)
      - [ИЛИ (OR)](#topic-122362)
      - [НЕ (NOT)](#topic-122363)
      - [Исключающее ИЛИ (XOR)](#topic-122364)
    - [Арифметические функции](#topic-122365)
      - [Сложение (ADD, fADD)](#topic-122366)
      - [Вычитание (SUB, fSUB)](#topic-122367)
      - [Умножение (MUL, fMUL)](#topic-122368)
      - [Деление (DIV, fDIV)](#topic-122369)
      - [Деление с остатком (MOD)](#topic-122370)
      - [Возведение числа в степень (fPOW)](#topic-122371)
      - [Взятие модуля от числа (fABS)](#topic-122372)
    - [Функции сравнения](#topic-122373)
      - [Равно (EQ)](#topic-122374)
      - [Больше (GT, fGT)](#topic-122375)
      - [Выбор (SEL, fSEL)](#topic-122376)
    - [Сдвиговые функции](#topic-122377)
      - [Побитовый логический сдвиг влево (SHL)](#topic-122378)
      - [Побитовый логический сдвиг вправо (SHR)](#topic-122379)
    - [Битовые функции](#topic-122380)
      - [Чтение бита (EXTRACT)](#topic-122381)
      - [Запись бита (PUTBIT)](#topic-122382)
      - [Дешифратор (DC32)](#topic-122383)
      - [Шифратор (CD32)](#topic-122384)
  - [Функциональные блоки](#topic-122385)
    - [Триггеры](#topic-122386)
      - [RS-триггер с приоритетом выключения](#topic-122387)
      - [SR-триггер с приоритетом включения](#topic-122388)
      - [Детектор переднего фронта импульса (RTRIG)](#topic-122389)
      - [Детектор заднего фронта импульса (FTRIG)](#topic-122390)
      - [D-триггер (DTRIG)](#topic-122391)
    - [Таймеры](#topic-122392)
      - [Импульс включения заданной длительности (TP)](#topic-122393)
      - [Таймер с задержкой включения (TON)](#topic-122394)
      - [Таймер с задержкой отключения (TOF)](#topic-122395)
      - [Интервальный таймер (CLOCK)](#topic-122396)
      - [Интервальный таймер с недельным циклом (CLOCKWEEK)](#topic-122397)
    - [Генераторы](#topic-122398)
      - [Генератор прямоугольных импульсов (BLINK)](#topic-122399)
    - [Счетчики](#topic-122400)
      - [Инкрементный счетчик с автосбросом (CT)](#topic-122401)
      - [Универсальный счетчик (CTN)](#topic-122402)
      - [Инкрементный счетчик (CTU)](#topic-122403)
    - [Регуляторы](#topic-122404)
      - [ПИД-регулятор для приборов первого поколения (PID)](#topic-122405)
      - [ПИД-регулятор для приборов второго поколения (PID REG)](#topic-122406)
  - [Макросы проекта](#topic-122407)
  - [Функция на ST](#topic-122408)
  - [Функциональный блок на ST](#topic-122409)
  - [Элементы управления](#topic-122410)
    - [Метка](#topic-122411)
    - [Ввод/вывод (int/float)](#topic-122412)
    - [Ввод/вывод (boolean)](#topic-122413)
    - [Динамический текст](#topic-122414)
    - [Комбинированный список (ComboBox)](#topic-122415)
  - [Базовые элементы](#topic-122416)
    - [Текст](#topic-122417)
    - [Индикатор](#topic-122418)
    - [Индикатор выполнения](#topic-122419)
    - [Динамический текст](#topic-122420)
    - [Ввод/вывод int/float](#topic-122421)
    - [Ввод/вывод времени](#topic-122422)
    - [Ввод/вывод IP](#topic-122423)
    - [Линия](#topic-122424)
    - [Многоугольник](#topic-122425)
    - [Круг](#topic-122426)
    - [Кнопка](#topic-122427)
    - [Переключатель](#topic-122428)
    - [Группа переключателей](#topic-122429)
    - [Изображение](#topic-122430)
    - [Меню](#topic-122431)
    - [График](#topic-122432)
    - [Стрелочный индикатор](#topic-122433)
- [Работа с прибором](#topic-122434)
  - [Информация о приборе](#topic-122435)
  - [Время цикла](#topic-122436)
  - [Обновление встроенного ПО](#topic-122437)
  - [Юстировка](#topic-122438)
    - [Юстировка входов](#topic-122439)
    - [Юстировка выходов](#topic-122440)
  - [Смена целевой платформы](#topic-122441)
- [Расширения](#topic-122442)
  - [Мастер тиражирования](#topic-122443)
    - [Запись программы в прибор через мастер тиражирования на ОС Windows](#topic-122444)
    - [Запись программы в прибор через мастер тиражирования на ОС Linux](#topic-122445)
  - [Экспорт устройства в OPC](#topic-122446)
  - [Экспорт устройства в OwenCloud](#topic-122447)
- [Сочетания клавиш](#topic-122448)
- [Примеры проектов](#topic-122449)
  - [Вывод значения переменной на экран](#topic-122450)
  - [Задание уставок таймеров с экрана](#topic-122451)
  - [Подключение ПР200 к OwenCloud через шлюз ПМ210 по протоколу Modbus RTU](#topic-122452)
  - [Прямое подключение приборов второго поколения к OwenCloud](#topic-122453)
  - [Упаковка/распаковка бит/целых чисел](#topic-122454)
  - [Обработка битовых переменных с помощью маски](#topic-122455)
- [Язык программирования ST](#topic-122456)
  - [Синтаксис](#topic-122457)
    - [Побитовый доступ к переменным](#topic-122458)
    - [Использование функций в других элементах программы на ST](#topic-122459)
    - [Использование одного функционального блока в другом](#topic-122460)
    - [Комментирование в редакторе ST](#topic-122461)
    - [Копирование элементов на ST между проектами](#topic-122462)
  - [Документирование в редакторе ST](#topic-122463)
  - [Типы данных](#topic-122464)
    - [Зарезервированные ключевые слова](#topic-122465)
    - [Массивы](#topic-122466)
  - [Конструкции языка](#topic-122467)
    - [Операции](#topic-122468)
      - [Арифметические операции](#topic-122469)
      - [Битовые операции](#topic-122470)
      - [Операции преобразования типов данных](#topic-122471)
      - [Логические операции](#topic-122472)
      - [Операции сравнения](#topic-122473)
      - [Приоритеты операций](#topic-122474)
    - [Присвоение](#topic-122475)
    - [Оператор IF](#topic-122476)
    - [Оператор CASE](#topic-122477)
    - [Оператор RETURN](#topic-122478)
    - [Цикл FOR](#topic-122479)
    - [Цикл WHILE](#topic-122480)
    - [Цикл REPEAT UNTIL](#topic-122481)
  - [Системные функции](#topic-122482)
    - [Функции работы с датой и временем](#topic-122483)
      - [Функция GET_TIME](#topic-122484)
      - [Функция GET_DATE_TIME](#topic-122485)
      - [Функция SYS.COMPARE_DATE_TIME](#topic-122486)
      - [SYS.IS_LEAP_YEAR function](#topic-122487)
    - [Математические функции](#topic-122488)
      - [Математические константы (CONST.\*)](#topic-122489)
      - [MIN/FMIN](#topic-122490)
      - [MAX/FMAX](#topic-122491)
      - [SQRT](#topic-122492)
      - [EXP](#topic-122493)
      - [FACT](#topic-122494)
    - [Логарифмические функции](#topic-122495)
      - [LOG](#topic-122496)
      - [LG](#topic-122497)
      - [LN](#topic-122498)
    - [Тригонометрические функции](#topic-122499)
      - [SIN](#topic-122500)
      - [COS](#topic-122501)
      - [TAN](#topic-122502)
      - [ASIN](#topic-122503)
      - [ACOS](#topic-122504)
      - [ATAN](#topic-122505)
  - [Системные функциональные блоки](#topic-122506)
    - [Триггеры](#topic-122507)
      - [RS-триггер с приоритетом выключения (SYS.RS)](#topic-122508)
      - [SR-триггер с приоритетом включения (SYS.SR)](#topic-122509)
      - [Детектор переднего фронта импульса (SYS.RTRIG)](#topic-122510)
      - [Детектор заднего фронта импульса (SYS.FTRIG)](#topic-122511)
      - [D-триггер (SYS.DTRIG)](#topic-122512)
    - [Таймеры](#topic-122513)
      - [Импульс включения заданной длительности (SYS.TP)](#topic-122514)
      - [Таймер с задержкой включения (SYS.TON)](#topic-122515)
      - [Таймер с задержкой выключения (SYS.TOF)](#topic-122516)
      - [Интервальный таймер (SYS.CLOCK)](#topic-122517)
      - [Интервальный таймер с недельным циклом (SYS.CLOCKWEEK)](#topic-122518)
    - [Генераторы](#topic-122519)
      - [Генератор прямоугольных импульсов (SYS.BLINK)](#topic-122520)
    - [Счетчики](#topic-122521)
      - [Инкрементный счетчик с автосбросом (SYS.CT)](#topic-122522)
      - [Универсальный счетчик (SYS.CTN)](#topic-122523)
      - [Инкрементный счетчик (SYS.CTU)](#topic-122524)

<a id="topic-122293"></a>

## О программе

Owen Logic – среда программирования, предназначенная для создания алгоритмов работы коммутационных приборов, относящихся к классу программируемых реле, в частности, приборов серий ПР1хх, ПР200 и панели ИПП120 производства компании ОВЕН.

Функционал Owen Logic отличается для следующих групп приборов:

- **приборы первого поколения** – ПР100, ПР102, ПР200 и панели ИПП120;
- **приборы второго поколения** – ПР103, с графическим цветным ЖКИ (ПР205, ПР225), ОВК-П.

Основной функционал Owen Logic доступен для всех приборов, функционал и интерфейсы для приборов второго поколения недоступны для других приборов.

Owen Logic позволяет пользователю разработать программу автоматизации системы по собственному алгоритму и записать ее в энергонезависимую память прибора. Для составления программы используется графический язык FBD стандарта МЭК 61131-3.

Перечень приборов, для программирования которых может использоваться Owen Logic, представлен на сайте компании ОВЕН.

<a id="topic-122294"></a>

### Системные требования для работы Owen Logic

Операционная система:

- Windows 7 (SP1+);
- Windows 8.1;
- Windows 10;
- Windows 11.

Системные библиотеки:

- Microsoft .NET Framework 4.8;
- Microsoft .NET Desktop Runtime 6.0.8;
- Microsoft Visual C++ 2015-2022

Системные требования:

- процессор Intel Core i3 2 ГГц
- оперативная память 4 Гб;
- свободное место на диске 700 Мб;

Подключение к Интернету требуется для следующих действий:

- обновление Owen Logic;

- загрузка шаблонов сетевых устройств;

- загрузка макросов в Менеджере компонентов.

  > **Примечание.** Недоступно в версии Owen Logic 2.9 и ниже. Для получения доступа к макросам используйте актуальную версию [Owen Logic](https://owendigital.ru/solutions.html#id_3)

<a id="topic-122295"></a>

### Используемые аббревиатуры и термины

- **Drag and drop** —

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

- **FBD (Function Block Diagram)** — графический язык диаграмм функциональных блоков, который предназначен для визуального программирования.

- **LoRa** – технология беспроводной передачи данных.

- **LoRaWAN (Long Range Wide Area Network)** — сетевой протокол, определяющий правила взаимодействия в сети LoRa.

- **OwenCloud** — облачный сервис компании «ОВЕН», применяемый для удаленного мониторинга, управления и хранения архивов данных приборов, используемых в системах автоматизации. Доступ к сервису осуществляется с помощью web-браузера или мобильного приложения (подробнее см. [owen.ru/owencloud](https://owen.ru/owencloud)).

- **Owen Configurator** — ПО для настройки и задачи параметров устройствам компании «ОВЕН».

- **ST (Structured Text)** — язык программирования стандарта IEC61131-3. Предназначен для программирования промышленных контроллеров и операторских станций.

- **ЖКИ** — жидкокристаллический индикатор.

- **Коммутационная программа, программа** — разработанный пользователем на схеме проекта алгоритм работы для последующей записи в прибор.

- **Контекстное меню** — элемент графического интерфейса, представляющий собой список команд, вызываемый пользователем для выбора необходимого действия над выбранным объектом. В Owen Logic вызывается нажатием ПКМ по объекту.

- **Логический сигнал («сигнал»)** — дискретная физическая величина (напряжение или ток), принимающая только два значения: включено – соответствует логической «1» (лог. «1»), и отключено – логическому «0» (лог. «0»).

- **ЛКМ** — левая кнопка мыши.

- **Макрос** — функциональный блок, разработанный пользователем.

- **ОЗУ (Оперативное Запоминающее Устройство)** — энергозависимая часть памяти прибора, в которой во время работы хранится выполняемый код программы, а также входные, выходные и промежуточные данные, обрабатываемые процессором.

- **ПЗУ (Постоянное Запоминающее Устройство)** — энергонезависимая память, которая используется для хранения массива неизменяемых данных.

- **ПК** — персональный компьютер.

- **ПКМ** — правая кнопка мыши.

- **ПО** — программное обеспечение.

- **Преобразователь** — устройство, через которое прибор подключается к ПК.

- **Прибор** — программируемое устройство, например ПР200.

- **Приборы второго поколения** — ПР103, с графическим цветным ЖКИ (ПР205, ПР225), ОВК-П;

- **Приборы первого поколения** — ПР100, ПР102, ПР200 и панели ИПП120;

- **Проект** — файл, созданный в Owen Logic, включающий в себя программу и настройки для последующего хранения на ПК.

- **Резервная копия (или файл автосохранения)** — файл проекта с расширением *.owlе*, который создается в фоновом режиме в результате срабатывания таймера автосохранения.

- **Слот** — разъем в приборе для подключения интерфейса связи или модуля расширения.

- **Уставка** — заданное значение параметра функционального блока (установленный режим).

- **Функциональный блок (ФБ)** — структурная единица программы, которая после выполнения выдает одно или более значений. Может быть создано множество поименованных экземпляров (копий) функционального блока.

- **Функция** — структурная единица программы, которая после выполнения выдает только одно значение. Функция не хранит информацию о своем внутреннем состоянии, то есть вызов функции с одними и теми же фактическими параметрами выдает то же значение.

- **Холст, схема** — поле для размещения графических компонентов проекта и редактирования соединительных цепей между ними.

- **Цикл** — время выполнения прибором заданной программы (зависит от количества выполняемых операций в программных цепях).

- **ЭСППЗУ (Электронно-Стираемое Программируемое Постоянное Запоминающее Устройство)** — часть интегральной схемы микропроцессора, которая используется для хранения данных.

<a id="topic-122296"></a>

## Установка

1. Скачайте на ПК и запустите файл [Owen Logic.exe](https://owendigital.ru/solutions.html#id_3).

2. Откроется окно мастера установки. Ознакомьтесь с информацией и нажмите кнопку **Далее**.

   ![Установка1](https://docs.owen.ru/book_img/2379/154999.png)

   *Окно мастера установки*

3. Ознакомьтесь с лицензионным соглашением и, в случае согласия, выберите **Я принимаю условия соглашения**. Нажмите кнопку **Далее**.

   ![Установка2](https://docs.owen.ru/book_img/2379/154998.png)

   *Окно лицензионного соглашения* 

4. Выберите папку для установки Owen Logic и папку для ярлыка в меню Пуск. Нажмите кнопку **Далее**.

5. В открывшемся окне, при необходимости, установите чекбоксы:

   - Создать ярлык на рабочем столе.
   - Создать ярлык в Панели быстрого запуска.
   - Связать Owen Logic с файлами, имеющими расширение .owl, .owle — для автоматического открытия файлов с указанным расширением в Owen Logic.
   - Установить .NET 6 SDK — если библиотека не установлена, то мастер тиражирования на ОС Linux работать не будет.

   Нажмите кнопку **Далее**.

   ![Установка5](https://docs.owen.ru/book_img/2379/154997.png)

   *Выбор дополнительных задач*

6. Ознакомьтесь с информацией об установке и нажмите кнопку **Установить**.

   ![Установка6](https://docs.owen.ru/book_img/2379/154996.png)

   *Окно запуска установки*

7. Откроется окно, в котором будет отображаться процесс установки.

   ![Установка7](https://docs.owen.ru/book_img/2379/154995.png)

   *Процесс установки программы*

8. Дождитесь окончания установки и при необходимости установите чекбокс **Запустить Owen Logic**.

   ![Установка8](https://docs.owen.ru/book_img/2379/154994.png)

   *Завершение установки*

9. Нажмите кнопку **Завершить**.

<a id="topic-122297"></a>

## Описание интерфейса

После запуска Owen Logic на мониторе ПК открывается Главное окно:

![Описание интерфейса](https://docs.owen.ru/book_img/2379/161467.png)

Главное окно содержит:

- [главное меню](#topic-122298): **Файл**, **Вид**, **Прибор**, **Сервис**, **Расширения**, **Помощь**;
- [панели](#topic-122301) инструментов;
- панели [Библиотека компонентов](#topic-122300), [Свойства](#topic-122301) и [Переменные](#topic-122302) (до открытия или создания проекта в них нет информации);
- [рабочую область](#topic-122303) проекта – поле редактирования программы (до открытия или создания проекта пустое);
- [строку состояния](#topic-122304) в нижней части главного окна, показывающую информация о доступных ресурсах прибора и подключении к Owen Logic.
- менеджер экранов

<a id="topic-122298"></a>

### Главное меню

#### Файл

|   |   |
| --- | --- |
| **Новый проект** | Создание нового проекта. Текущий проект закрывается, перед закрытием будет предложено сохранить проект |
| **Смена целевой платформы** | Вызов окна смены модификации прибора для проекта |
| **Открыть проект** | Открытие ранее созданного и сохраненного проекта |
| **Сохранить текущий документ** | Сохранение текущего проекта |
| **Сохранить проект** | Пересохранение проекта под текущим именем |
| **Сохранить проект как** | Сохранение проекта под новым именем или в другом месте |
| **Создать файл с ключом** | Создание файла с ключом (подробнее см. [Защита проекта ключом](#topic-122310)) |
| **Сведения о проекте** | Вызов окна [сведений о проекте](#topic-122330) |
| **Создать макрос** | Вызов [редактора макросов](#topic-122332) |
| **Импорт из файла** | Импорт макроса, функции или функционального блока на ST из файла в библиотеку компонентов |
| **Экспорт в файл** | Экспорт макроса функции или функционального блока на ST для сохранения на ПК |
| **Менеджер компонентов** | Вызов окна [Менеджера компонентов](#topic-122331) |
| **Печать** | Печать схемы открытого проекта |
| **Последние проекты** | Список недавно открытых проектов |
| **Выход** | Выход из Owen Logic |

#### Вид

|   |   |
| --- | --- |
| **Отменить** | Отмена последнего действия в проекте |
| **Восстановить** | Восстановление отмененного действия |
| **Индикаторы состояний** | Включение/отключение индикаторов в [строке состояний](#topic-122304) |
| **Панель библиотек** | Скрыть/отобразить [панель Библиотека компонентов](#topic-122300) |
| **Панель свойств** | Скрыть/отобразить [панель Свойства](#topic-122301) |
| **Переменные** | Скрыть/отобразить [панель Переменные](#topic-122302) |
| **Менеджер экранов** | Скрыть/отобразить [Менеджер экранов](#topic-122321) (меню доступно для приборов с дисплеем) |
| **Сбросить расположение панелей** | Сброс пользовательских настроек положения панелей и возврат к настройкам по умолчанию |

#### Прибор

|   |   |
| --- | --- |
| **Записать программу в прибор** | Запуск записи созданной программы в прибор (кнопка неактивна, пока не подключен прибор) |
| **Обновить встроенное ПО** | Запуск обновления прошивки подключенного прибора |
| **Информация** | Вызов окна с [информацией](#topic-122435) о подключенном приборе |
| **Таблица переменных** | Вызов [окна для работы с переменными](#topic-122352) в проекте |
| **Юстировка входов/выходов** | Вызов окна [юстировки](#topic-122438) (кнопка неактивна, пока не подключен прибор) |
| **Настройка прибора** | Вызов окна [настройки прибора](#topic-122336) |
| **Настройка порта** | Вызов окна [настройки порта](#topic-122327) связи с прибором |

#### Сервис

|   |   |
| --- | --- |
| **Перенумеровать компоненты** | Изменение нумерации ФБ в рабочей зоне проекта |
| **Режим симулятора** | Запуск режима [симуляции](#topic-122324) |
| **Режим OFFLINE** | Включение/отключение [запрета опроса](#offline) прибора по USB |

#### Настройки

|   |   |
| --- | --- |
| **[Автосохранение](#topic-122309)** | Настройка автоматического создания резервных копий проекта в фоновом режиме |

#### Расширения

> [!NOTE]
> **Примечание.** Меню **Расширения** по умолчанию содержит один пункт — **Управление расширениями**. Другие пункты появляются по мере установки расширений, подробнее см. раздел [Расширения](#topic-122442).

|   |   |
| --- | --- |
| **Управление расширениями** | Вызов окна [управления расширениями](#topic-122442) |
| **Экспорт устройства в ОРС** | Запуск расширения [Экспорт устройства в ОРС](#topic-122443) |
| **Экспорт устройства в OwenCloud** | Запуск расширения [Экспорт устройства в OwenCloud](#topic-122447) |
| **Мастер тиражирования** | Запуск расширения [Мастер тиражирования](#topic-122443) |

#### Помощь

|   |   |
| --- | --- |
| **Автопроверка нового релиза** | Включение/отключение автоматической проверки новых версий и релизов Owen Logic на сервере обновления |
| **Проверить обновления...** | Вызов окна для проверки и установки новых версий и релизов Owen Logic |
| **Справка** | Вызов окна справки |
| **История версий** | Вызов в браузере страницы со списком версий ПО и описанием |
| **О программе** | Вызов окна информации о текущей версии Owen Logic |

<a id="topic-122299"></a>

### Панели инструментов

#### Панель инструментов

![Панель инструментов](https://docs.owen.ru/book_img/2379/44694.png)

|   |   |   |
| --- | --- | --- |
| ![Новый](https://docs.owen.ru/book_img/2379/44695.png) | **Новый проект** | Создание нового проекта. Текущий проект закрывается, перед закрытием будет предложено сохранить проект |
| ![Открыть](https://docs.owen.ru/book_img/2379/44696.png) | **Открыть проект** | Открытие ранее созданного и сохраненного проекта |
| ![Сохранить](https://docs.owen.ru/book_img/2379/44697.png) | **Сохранить проект** | Сохранение текущего проекта. При первом сохранении вызывает окно для присвоения имени файлу |
| ![Печать](https://docs.owen.ru/book_img/2379/44698.png) | **Печать** | Печать схемы открытого проекта |
| ![Копировать](https://docs.owen.ru/book_img/2379/44699.png) | **Копировать** | Копирование выделенного в рабочей области элемента |
| ![Paste](https://docs.owen.ru/book_img/2379/36744.png) | **Вставить** | Вставка скопированного элемента |
| ![undo](https://docs.owen.ru/book_img/2379/36743.png) | **Отменить** | Отмена последнего действия в проекте |
| ![redo](https://docs.owen.ru/book_img/2379/36742.png) | **Восстановить** | Восстановление отмененного действия |
| ![upload](https://docs.owen.ru/book_img/2379/36741.png) | **Записать программу в прибор** | Запуск записи созданной программы в прибор |
| ![device info](https://docs.owen.ru/book_img/2379/36740.png) | **Информация** | Вызов окна с информацией о подключенном приборе |
| ![devmgr 006](https://docs.owen.ru/book_img/2379/36739.png) | **Настройки прибора** | Вызов окна с настройками прибора |
| ![vartable](https://docs.owen.ru/book_img/2379/36738.png) | **Таблица переменных** | Вызов окна для работы с переменными в проекте |

#### Панель отладки

![panel 02](https://docs.owen.ru/book_img/2379/36757.png)

![play](https://docs.owen.ru/book_img/2379/36756.png)

**Режим симулятора**

Запуск режима симуляции

![online debug](https://docs.owen.ru/book_img/2379/50212.png)

**Онлайн отладка**

Запуск режима онлайн отладки

![output](https://docs.owen.ru/book_img/2379/36755.png)

**Порядок исполнения**

Изменение порядка вычисления значений на выходах программы или макроса и порядка передачи значений по обратным связям

![renum](https://docs.owen.ru/book_img/2379/36754.png)

**Перенумеровать компоненты**

Изменение нумерации ФБ в рабочей зоне проекта

#### Панель вставки

![Панель вставки](https://docs.owen.ru/book_img/2379/142026.png)

|   |   |   |
| --- | --- | --- |
| ![comment](https://docs.owen.ru/book_img/2379/36752.png) | **Блок комментариев** | Добавление комментария на схему проекта |
| ![v out](https://docs.owen.ru/book_img/2379/36751.png) | **Создание блока выходной переменной** | Создание блока для записи значения в переменную |
| ![v in](https://docs.owen.ru/book_img/2379/36750.png) | **Создание блока входной переменной** | Создание блока для считывания значения из переменной |
| ![const](https://docs.owen.ru/book_img/2379/36749.png) | **Создание блока константы** | Создание блока с фиксированным числовым значением |
| ![feedback](https://docs.owen.ru/book_img/2379/36748.png) | **Линия задержки** | Создание задержки на 1 цикл |
| ![net writing](https://docs.owen.ru/book_img/2379/36767.png) | **Создание сетевой выходной переменной** | Создание блока переменной, значение которой задается по сети |
| ![net reading](https://docs.owen.ru/book_img/2379/36766.png) | **Создание сетевой входной переменной** | Создание блока переменной, значение которой считывается по сети |
| ![write to FB](https://docs.owen.ru/book_img/2379/36765.png) | **Создание блока записи в ФБ** | Создание блока для записи значения переменной ФБ, на схеме может не отображаться соединительная линия цепи передачи сигнала |
| ![read From Fb](https://docs.owen.ru/book_img/2379/36764.png) | **Создание блока чтения из ФБ** | Создание блока для считывания значения переменной ФБ, на схеме может не отображаться соединительная линия цепи передачи сигнала |
| ![itobit](https://docs.owen.ru/book_img/2379/36763.png) | **Преобразователь в булевское значение** | Конвертация значения сигнала в булевское значение |
| ![bittoi](https://docs.owen.ru/book_img/2379/36762.png) | **Преобразователь в целочисленное значение** | Конвертация значения сигнала в целочисленное значение |
| ![tofloat](https://docs.owen.ru/book_img/2379/36761.png) | **Преобразователь в число с плавающей точкой** | Конвертация значения сигнала в число с плавающей точкой |
| ![macros 24](https://docs.owen.ru/book_img/2379/109073.png) | **Создать макрос** | Создание нового макроса в проекте |
| ![fx Create 24](https://docs.owen.ru/book_img/2379/109072.png) | **Создать функцию на ST** | Создание функции на языке ST для использования в проекте |
| ![fb Create 24](https://docs.owen.ru/book_img/2379/125011.png) | **Создать функциональный блок на ST** | Создание функционального блока на языке ST для использования в проекте |

<a id="topic-122300"></a>

### Панель Библиотека компонентов

Включить/выключить отображение панели **Библиотека компонентов** в рабочей области можно в главном меню **Вид**.

Если в Owen Logic открыт проект, то на панели **Библиотека компонентов** отображаются ее разделы:

- [Функция](#topic-122359);
- [Функциональный блок](#topic-122385);
- [Макросы проекта](#topic-122407);
- [Функции на ST](#topic-122334);
- [Функциональные блоки на ST](#topic-122335).

Раздел выбирается в нижней части панели.

![i library 01](https://docs.owen.ru/book_img/2379/36946.png)

#### Вид

В выпадающем меню можно выбрать вид расположения компонентов:

![i library 03](https://docs.owen.ru/book_img/2379/36945.png)

Способ отображения компонентов можно выбрать с помощью кнопок в верхней части панели:

- ![show all](https://docs.owen.ru/book_img/2379/36944.png) **Показать все компоненты** – отображаются все компоненты выбранного раздела;

  ![i library 05](https://docs.owen.ru/book_img/2379/36943.png)

- ![group](https://docs.owen.ru/book_img/2379/36942.png) **Группировка по папкам** – отображаются папки, содержащие компоненты разных типов.

  ![i library 04](https://docs.owen.ru/book_img/2379/36941.png)

Описание разделов и компонентов панели **Библиотека компонентов** приведено в разделе [Библиотека](#topic-122358).

<a id="topic-122301"></a>

### Панель Свойства

Включить/выключить отображение панели **Свойства** в рабочей области можно в главном меню **Вид**.

На панели отображаются и редактируются:

- параметры элементов программы;
- размеры холста;
- часто используемые свойства входов и выходов (полный перечень свойств находится в разделе [Входы](#topic-122349) настроек прибора);
- параметры комментария, свободных переменных, блоков преобразователей.

Если элемент не выбран, то на панели отображаются свойства холста.

Для отображения свойств элемента в панели следует нажать на него ЛКМ.

![properties 01](https://docs.owen.ru/book_img/2379/36769.png)

Способы отображения параметров в панели:

- ![abc](https://docs.owen.ru/book_img/2379/36768.png) — в алфавитном порядке;
- ![categ](https://docs.owen.ru/book_img/2379/36787.png) — по категориям.

<a id="topic-122302"></a>

### Панель переменных

Включить/выключить отображение **Панели переменных** в рабочей области можно в главном меню **Вид**.

На **Панели переменных** отображаются переменные из [Таблицы переменных](#topic-122352).

![Панель переменных](https://docs.owen.ru/book_img/2379/161466.png)

*Окно Панель Переменных*

![Кнопка открытия вложенностей](https://docs.owen.ru/book_img/2379/161465.jpg)

**Раскрыть** подкаталоги

![Кнопка скрытия вложенностей](https://docs.owen.ru/book_img/2379/161464.jpg)

**Свернуть** подкаталоги

Раскрыть/свернуть один каталог можно с помощью частных кнопок + / -, расположенных перед иконкой каталога.

#### Создание блока переменной

Для создания **блока входной переменной** следует перетащить переменную (методом drag & drop) на холст.

Для создания **блока выходной переменной** следует перетащить переменную на холст, удерживая клавишу Shift.

Можно перетаскивать на холст сразу несколько переменных. Для этого предварительно выделите их на панели переменных.

Способы выделения переменных:

- **CTRL + ЛКМ** по переменным.  Каждый клик добавляет переменную в выделение или исключает её, если она уже выделена.
- **SHIFT + стрелки ↓ / ↑.** Не выделенные переменные выделяются, с уже выделенных выделение снимается. Каталоги/подкаталоги не выделяются.
- **Выделение диапазона (SHIFT).** Нажмите **ЛКМ** по первой переменной диапазона, затем, удерживая **SHIFT**, нажмите **ЛКМ** по последней. Все переменные между ними (включительно) будут выделены.

> [!NOTE]
> **Примечание.** Выделять переменные можно только в пределах одного каталога.

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

#### Ссылки

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

![Панель переменных2](https://docs.owen.ru/book_img/2379/161507.png)

*Ссылка на переменную*

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

![Контекстное меню переменной](https://docs.owen.ru/book_img/2379/143448.jpg)

*Контекстное меню переменной*

<a id="topic-122303"></a>

### Рабочая область

После создания проекта или открытия сохраненного проекта в рабочей области появляется холст для разработки программы на языке FBD.

Если прибор поддерживает работу с функциями на языке ST, отобразится вкладка **Редактор функции**.

![canvas 01](https://docs.owen.ru/book_img/2379/36934.png)

На холсте размещаются элементы и блоки из [панели Библиотека компонентов](#topic-122300) и панели вставки. Изменить размеры холста можно на [панели Свойства](#topic-122301).

#### Входы и выходы

Входы и выходы прибора обозначены в виде квадратов с маркировкой номеров:

- вдоль левого края холста расположены **входы** (**Ix** — дискретные, **FIx** — быстрые дискретные, **AIx** — аналоговые);
- вдоль правого края холста расположены **выходы** (**Qx** — дискретные, **AOx** — аналоговые, **К** — ключи, **Fx** — светодиоды).

Цифры в обозначениях соответствуют номерам физических входов и выходов прибора. Входы и выходы можно перетаскивать вверх/вниз вдоль холста методом drag & drop, удалять и добавлять для удобства компоновки схемы.

![canvas 02](https://docs.owen.ru/book_img/2379/36933.png)

#### Управление

Над холстом располагаются кнопки:

![grid](https://docs.owen.ru/book_img/2379/36932.png)

**Включить/Выключить сетку**

При включенной сетке на холсте отображаются вертикальная и горизонтальная линейки и сетка. Элементы и линии связи при размещении привязываются к сетке

![scale minus](https://docs.owen.ru/book_img/2379/36931.png)

**Уменьшить масштаб**

Уменьшение масштаба на 10 % от первоначального

![original](https://docs.owen.ru/book_img/2379/36930.png)

**Оригинальный размер**

Возврат к исходному масштабу

![scale plus](https://docs.owen.ru/book_img/2379/36929.png)

**Увеличить масштаб**

Увеличение масштаба на 10 % от первоначального

Задать требуемый масштаб можно с помощью выпадающего меню справа от описанных выше кнопок.

В нижней части холста находятся кнопки:

![window-disarr](https://docs.owen.ru/book_img/2379/36928.png)

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

![window-arr](https://docs.owen.ru/book_img/2379/36947.png)

Используется для отображения схемы в одном окне

<a id="topic-122304"></a>

### Строка состояния

В строке состояния отображается информация о доступных ресурсах прибора и подключении.

#### Вид

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

![status 01](https://docs.owen.ru/book_img/2379/36952.png)

#### Индикаторы

Настройка отображения индикаторов в строке состояния доступна через **Главное меню → Вид → Индикаторы состояний**.

В строке состояния может отображаться следующая информация:

- **ФБ** — доступное количество экземпляров функциональных блоков;

- **Перем.** — доступное количество переменных;

- **Стек** — уровень использования памяти выделенной под стек. Стек используется для промежуточных вычислений в программе;

- **Сист. ЭСППЗУ** — доступное количество системной энергонезависимой памяти. Индикатор заполняется в случае использования сетевых переменных на схеме, привязки переменных к визуализации и параметрам прибора и добавления в проект модулей расширения;

- **ЭСППЗУ** — доступное количество энергонезависимой памяти. Индикатор заполняется в случае использования на схеме стандартных энергонезависимых переменных;

- **ПЗУ** — доступное ПЗУ прибора в процентах от общего объема: «ПЗУ: 0…100 %»;

- **Сист. ОЗУ** — доступное системное ОЗУ прибора.

- **ОЗУ**

  — доступное ОЗУ прибора в процентах от общего объема: «ОЗУ: 0…100 %». Чем больше используется в программе блоков и функций, тем больше памяти требуется для работы в приборе. Owen Logic автоматически рассчитывает доступную память прибора и в случае критического значения выводит соответствующее предупреждение;

- **Сист. ПЗУ визуал.** — доступное ПЗУ визуализации прибора в процентах от общего объема (только для приборов с графическим цветным ЖКИ);

- **Польз. ПЗУ визуал.** — доступное ПЗУ визуализации для растровых изображений (только для приборов с графическим цветным ЖКИ);

- **ОЗУ визуал.** — доступное ОЗУ визуализации прибора в процентах от общего объема. Расчет ведется для самого нагруженного экрана (только для приборов с графическим цветным ЖКИ);

- **ПРххx-xхх** — модель подключенного прибора. Если прибор не подключен, на индикаторе отображается надпись **Прибор не подключен**. Нажатие на индикатор включает/выключает режим OFFLINE;

- **COMx** — номер выбранного пользователем порта для подключения прибора. Нажатие на индикатор открывает окно [настройки порта](#topic-122327).

> [!IMPORTANT]
> **Предупреждение.** Если какой-либо из индикаторов показывает заполнение более 100%, то запись программы в прибор будет запрещена, при попытке записи программы появится сообщение о превышении размера памяти.

При наведении мышки на индикатор отображается всплывающее сообщение с информацией о загрузке памяти прибора.

<a id="offline"></a>

#### Режим OFFLINE

В режиме OFFLINE устанавливается запрет на связь с прибором.

Для перехода в режим OFFLINE следует нажать на индикатор модели прибора в строке состояния или выбрать в главном меню **Сервис → Режим OFFLINE**. Вид индикатора изменится на **OFFLINE**. Повторное нажатие отключает режим OFFLINE.

Подробнее см. в разделе [Загрузка в прибор](#topic-122328--offline).

<a id="topic-122305"></a>

### Менеджер и редактор экранов

#### Менеджер экранов

Если прибор оснащен дисплеем, то на него можно запрограммировать вывод информации из программы. Инструкция по работе с экранами приведена в разделе [Программирование экрана прибора](#topic-122321).

Включить/выключить отображение вкладки **Менеджер экранов** в рабочей области можно в главном меню **Вид**.

**Менеджер экранов** открывается нажатием на одноименную вкладку в левом крае рабочей области.

![Открыть Менеджер экранов](https://docs.owen.ru/book_img/2379/151813.png)

**Менеджер экранов** состоит из дерева элементов в верхней части и полей свойств в нижней части.

В дереве экранов отображаются и редактируются группы экранов и экраны.

Основные функции:

|   |   |
| --- | --- |
| ![Doc-Add](https://docs.owen.ru/book_img/2379/36957.png) | **Добавить экран** (находится в верхней части менеджера экранов и в контекстном меню группы экранов приборов с графическим цветным ЖКИ) |
| ![Кнопка удалить элемент](https://docs.owen.ru/book_img/2379/150762.png) | **Удалить элемент** (находится в верхней части менеджера экранов, в контекстном меню экрана и группы экранов приборов с графическим цветным ЖКИ) |
| ![Doc-Del](https://docs.owen.ru/book_img/2379/36956.png) | **Удалить экран** (в контекстном меню экрана) |
| ![Screen Edit 24](https://docs.owen.ru/book_img/2379/50216.png) | **Редактировать экран** (в контекстном меню экрана) |
| ![Doc-Edit](https://docs.owen.ru/book_img/2379/36955.png) | **Редактировать группу** (в контекстном меню группы экранов, доступен только для приборов с монохромным текстовым ЖКИ) |

При выборе экрана или группы экранов в нижней части **Менеджера экранов** отображаются их свойства.

#### Редактор экранов

Редактор экранов открывается выбором команды **Редактировать экран** в контекстном меню экрана в **Менеджере экранов** или двойным нажатием ЛКМ по экрану в дереве экранов.

![screen 03](https://docs.owen.ru/book_img/2379/36954.png)

*Редактор экрана для прибора с монохромным текстовым ЖКИ*

![Менеджер и редактор экранов](https://docs.owen.ru/book_img/2379/161463.png)

*Редактор экрана для прибора с графическим ЖКИ*

Подробно работа с экранами рассмотрена в разделах:

- [монохромный текстовый ЖКИ](#topic-122322);
- [графический цветной ЖКИ](#topic-122323).

<a id="topic-122306"></a>

## Базовые сведения

### В настоящем разделе описываются основные понятия работы прибора и принцип создания программы для загрузки в прибор:

- [Принцип выполнения программы](#topic-122307);
- [Разработка проекта и порядок работы](#topic-122308);
- [Разработка программы](#topic-122311);
- [Программирование дисплея прибора](#topic-122321);
- [Режим симулятора](#topic-122324);
- [Настройка порта и подключение прибора](#topic-122327);
- [Запись программы в прибор](#topic-122328).
- [Онлайн отладка](#topic-122329);
- [Сведения о проекте](#topic-122330);
- [Менеджер компонентов](#topic-122331);
- [Работа с макросами](#topic-122332);
- [Создание функций на языке ST](#topic-122334).

<a id="topic-122307"></a>

### Принцип выполнения программы

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

Функциональная схема работы прибора:

![running 01](https://docs.owen.ru/book_img/2379/36707.png)

Работу прибора можно представить в виде последовательно выполняемых шагов (рабочий цикл):

1. Логическое состояние входов автоматически записывается в ячейки памяти входов (количество ячеек равно числу входов – I1…In).
2. Программа считывает значения из ячеек памяти входов и выполняет над ними логические операции в соответствии с алгоритмом работы.
3. После обработки всей программы результаты записываются на физические выходы прибора (для включения выходных элементов Q1…Q4).
4. Переход к Шагу 1 (после выполнения всех предыдущих шагов обработки программы цикл работы прибора повторяется с первого шага).

Время выполнения всех шагов зависит от сложности алгоритма программы (подробнее см. раздел [Время цикла](#topic-122436)).

<a id="topic-122308"></a>

### Разработка проекта и порядок работы

#### Создание и редактирование проекта

Для создания нового проекта:

1. Нажмите кнопку ![Новый](https://docs.owen.ru/book_img/2379/44695.png) на панели инструментов или выберите в главном меню **Файл → Новый проект…**.

2. Откроется окно выбора модели со списком приборов. При выборе прибора в поле справа появится изображение прибора, его характеристики и модификации. Выберите модель и модификацию прибора и нажмите **Создать**.

   ![4 2](https://docs.owen.ru/book_img/2379/155006.png)

   *Окно выбора прибора*

> [!NOTE]
> **Примечание.** Если к ПК подключен прибор, то Owen Logic предложит модель и модификацию подключенного прибора в окне выбора.

В главном окне Owen Logic отобразится холст проекта, станут активными [строка состояния](#topic-122304), панели [Библиотека компонентов](#topic-122300), [Свойства](#topic-122301) и [Переменные](#topic-122302).

Если у выбранного прибора есть дисплей, то в главном окне отобразится вкладка [Менеджер экранов](#topic-122305), где можно [настроить](#topic-122321) вывод информации на дисплей.

Сохранить текущий или открыть сохраненный проект можно с помощью соответствующих кнопок на панели инструментов или в главном меню **Файл**.

Порядок программирования прибора в проекте:

1. Разработка программы.
2. Отладка программы.
3. Подключение прибора к ПК.
4. Загрузка разработанной программы в прибор.

#### Разработка программы

На холсте проекта создается [программа](#topic-122311) на языке FBD с помощью блоков и элементов вставки из [Библиотеки компонентов](#topic-122358).

#### Отладка программы

После создания можно смоделировать работу программы в [режиме симулятора](#topic-122324). Во время проверки правильности работы программы пользователь может изменять состояние входов, контролируя состояние выходов на соответствие нужным условиям. После выявления ошибок можно вернуться к правке программы.

#### Подключение прибора к ПК

Для подключения прибора к ПК следует [настроить порт](#topic-122327) в Owen Logic и с помощью кабеля подсоединить прибор. Далее на прибор подается питание (если требуется), и производятся [настройки прибора](#topic-122336) в Owen Logic.

#### Загрузка программы в прибор

После настройки соединения можно [загрузить программу](#topic-122328) в прибор из Owen Logic.

#### Онлайн отладка

Загруженную программу можно проверить в режиме [онлайн отладки](#topic-122329) с реальными значениями, поступающими из прибора.

<a id="topic-122309"></a>

#### Автосохранение проекта

Автосохранение автоматически создает резервные копии проекта через заданные интервалы. Это помогает сохранить результаты работы и быстро восстановить проект при неожиданном закрытии программы (например, из‑за отключения питания), или если исходный файл проекта окажется поврежден.

Для каждого проекта создается один файл автосохранения: по истечении заданного периода файл с резервной копией перезаписывается на актуальный.

> [!NOTE]
> **Примечание.** Функция автосохранения доступна в версиях Owen Logic 3.2 и выше.

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

##### Настройка автосохранения

1. В главном меню доступен пункт **Настройки.**

   ![ГМ Настройки](https://docs.owen.ru/book_img/2379/161462.png)

2. В окне настроек отображаются параметры автосохранения.

   ![Окно Автосохранение](https://docs.owen.ru/book_img/2379/161461.png)

3. Для настройки периода автосохранения:

   - при установленном чекбоксе **Автосохранение проекта каждые … мин** становится доступен ввод периода;
   - значение периода вводится в диапазоне от 1 до 120 минут. При вводе недопустимого значения отображается маркер ошибки ![Маркер ошибки](https://docs.owen.ru/book_img/2379/161460.png), при наведении курсора на который отображается всплывающая подсказка с допустимыми значениями параметра.

   Чтобы **выключить** автосохранение проекта снимите чекбокс **Автосохранение проекта каждые ... мин**.

4. По умолчанию файлы сохраняются в директорию проекта (установлен чекбокс **Сохранять в директорию проекта**)

   Чтобы изменить папку хранения файлов автосохранения:

   - снимите чекбокс **Сохранять в директорию проекта**
   - в строке **Путь сохранения резервных копий** нажмите на кнопку "...";
   - выберите папку для сохранения файла и нажмите **Ок**.

   Если выбранная папка станет недоступна (например, выбранный для сохранения файлов USB-носитель будет отсоединен), при очередном автосохранении отобразится информационное сообщение, резервная копия автоматически сохранится в папку *C:\\Users\\<имя пользователя>\\Documents\\Owen Logic\\Autosave*.

   ![Информационное сообщение](https://docs.owen.ru/book_img/2379/161459.png)

   Резервные копии новых проектов, которые еще не были сохранены пользователем, также сохраняются по пути *C:\\Users<имя пользователя>\\Documents\\Owen Logic\\Autosave*.

5. Кнопка **Принять** — сохраняет внесенные изменения параметров автосохранения.

   Кнопка **Закрыть** (Esc или крестик в правом верхнем углу окна Настройка Owen Logic) — закрывает окно настроек без сохранения внесенных изменений.

Имя файла с резервной копией формируется из имени файла проекта и постфикса "*\_autosave*".

**Пример**

Файл резервной копии проекта с именем "ПР200-реле времени" будет именоваться "ПР200-реле времени_autosave.owle".

<a id="topic-122310"></a>

#### Защита проекта ключом

##### Создание файла с ключом

Для создания файла с ключом следует:

1. Выбрать в главном меню **Файл → Создать файл с ключом…**

   ![Защита проекта ключом](https://docs.owen.ru/book_img/2379/161458.png)

2. В открывшемся диалоговом окне ввести имя файла и сгенерировать ключ. Ключ можно изменить нажатием кнопки ![new key](https://docs.owen.ru/book_img/2379/36916.png) или вручную.

   ![create key 01](https://docs.owen.ru/book_img/2379/36917.png)

3. Сохранить файл. Файл с ключом по умолчанию сохраняется в папку *C:\\Users\\\[имяпользователя\]\\Документы\\Owen Logic\\Keys*.

##### Привязка файла-ключа

Для привязки файла-ключа к проекту следует:

1. На панели свойств **Свойства Схема** в свойстве файла нажать икону «**…**».

   ![schema prop](https://docs.owen.ru/book_img/2379/134445.png)

2. В открывшемся окне выбрать файл-ключ.

   ![key selection](https://docs.owen.ru/book_img/2379/134444.png)

   > **Примечание.** Если в папке *C:\\Users\\\[имяпользователя\]\\Документы\\Owen Logic\\Keys* не найдено ни одного файла-ключа, Owen Logic предложит создать новый ключ.
   >
   > ![4 7](https://docs.owen.ru/book_img/2379/155004.png)

3. Нажать кнопку открыть.

<a id="topic-122311"></a>

### Разработка программы

Разработку программы рекомендуется начать с планирования. План должен описывать все возможные состояния прибора во время функционирования (в виде диаграммы режимов, таблицы состояний, электрической или функциональной схемы и/или др.).

После того как продуманы все задачи, которые должны выполняться прибором, следует составить программу на холсте проекта с помощью элементов [Библиотеки компонентов](#topic-122358).

#### Размещение компонентов и создание связей

Компоненты размещаются на схеме путем выбора нужного компонента в панели [Библиотека компонентов](#topic-122358) и перемещения на холст методом drag & drop.

![algorithm 01](https://docs.owen.ru/book_img/2379/36950.png)

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

- нажать ЛКМ на выход первого компонента. Линия присоединится к нему и потянется вслед за курсором мыши;
- для создания изгиба линии следует нажать на холсте для отметки точки поворота линии;
- протянуть линию до входа второго компонента и нажать по нему. Линия связи создана.

![algorithm 02](https://docs.owen.ru/book_img/2379/36949.png)

Если типы входа и выхода компонентов не совпадают, то линия не создастся. Подробнее см. раздел [Типы переменных](#topic-122353).

Для выделения блока или компонента на схеме следует нажать по нему ЛКМ. Чтобы выделить несколько элементов схему, можно воспользоваться «лассо» – заключить нужные элементы внутрь растягивающегося вслед за курсором мыши прямоугольника, удерживая ЛКМ.

![algorithm 02-1](https://docs.owen.ru/book_img/2379/36948.png)

[**Незадействованные** переменные](#topic-122352) не участвуют в логике программы и не занимают память устройства.

#### Настройка параметров компонентов

Чтобы отредактировать параметры, следует выделить нужный компонент или блок на схеме и настроить значения на панели [Свойства](#topic-122301).

![algorithm 03](https://docs.owen.ru/book_img/2379/36977.png)

Свойства компонента или блока можно открыть с помощью контекстного меню.

![algorithm 03-1](https://docs.owen.ru/book_img/2379/36976.png)

Для разработки программы используются следующие блоки и функции, вызываемые на панели вставки:

|   |   |
| --- | --- |
| [Блок комментариев](#topic-122312) | Размещение текстового комментария на схеме |
| [Блок переменной](#topic-122313) | Размещение блока переменной для записи или чтения значений программы |
| [Блок константы](#topic-122314) | Размещение блока с фиксированным числовым значением |
| [Линии задержки](#topic-122315) | Создание задержки на один цикл передачи значения с выхода компонента на вход |
| [Блок сетевой переменной](#topic-122316) | Размещение блоков обмена данными с другими устройствами, подключенными к прибору по сети |
| [Блок чтение/записи в ФБ](#topic-122317) | Запись/чтение значений отдельных параметров из ФБ в переменную и наоборот |
| [Блок преобразования](#topic-122318) | Конвертация значений различных типов для передачи |
| [Перенумеровать компоненты](#topic-122319) | Переназначение порядковых номеров ФБ схемы |
| [Порядок исполнения](#topic-122320) | Изменение порядка вычисления значений выходов программы |

<a id="topic-122312"></a>

#### Блок комментариев

Блок комментариев позволяет оставлять записи и комментарии на схеме проекта.

Чтобы добавить текстовый комментарий на схему, следует нажать на кнопку ![comment](https://docs.owen.ru/book_img/2379/36752.png) на панели вставки. Затем удерживая ЛКМ начертить прямоугольную область блока комментариев на том месте схемы, где должен располагаться комментарий.

![algorithm 08](https://docs.owen.ru/book_img/2379/36981.png)

Для выделенного блока комментариев можно изменить настройки ввода текста на панели свойств.

![algorithm 10](https://docs.owen.ru/book_img/2379/36980.png)

Чтобы цвет фона блока комментариев был виден, следует задать значение параметру **Прозрачность фона** более 20.

Для ввода текста следует дважды нажать ЛКМ на блок комментариев и ввести новый текст.

![algorithm 11](https://docs.owen.ru/book_img/2379/36979.png)

<a id="topic-122313"></a>

#### Блок переменной

Блок переменной служит для использования переменной на схеме проекта.

Чтобы добавить блок переменной на схему, следует нажать на его пиктограмму на панели вставки:

- ![v in](https://docs.owen.ru/book_img/2379/36750.png) **входная переменная** — для передачи значения в программу;
- ![v out](https://docs.owen.ru/book_img/2379/36751.png) **выходная переменная** — для записи в нее значения из программы.

Затем нажать на схеме в то место, куда нужно поместить блок.

![algorithm 05](https://docs.owen.ru/book_img/2379/36974.png)

Блок переменной также можно добавить на схему из панели [Переменные](#topic-122302).

Для привязки переменной к блоку переменной следует:

1. Выделить блок переменной.

2. В свойствах блока переменной нажать кнопку «**...**» в поле **Переменная** или два раза нажать на блок переменной на схеме.

   ![algorithm 06](https://docs.owen.ru/book_img/2379/36973.png)

3. В открывшемся окне [Таблицы переменных](#topic-122352) выбрать или создать новую переменную и нажать кнопку **ОК**. Выбранная переменная будет привязана к блоку.

   ![algorithm 07](https://docs.owen.ru/book_img/2379/36972.png)

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

![var error](https://docs.owen.ru/book_img/2379/46617.png)

Для блока выходной переменной, имеющей привязку к параметру прибора, либо элементу визуализации, доступна настройка **Запись в конце цикла**, которая служит для записи значения в переменную после всех операций чтения в [рабочем цикле](#topic-122307).

![var type 02v2](https://docs.owen.ru/book_img/2379/36869.png)

Значение по умолчанию в настройке **Запись в конце цикла** устанавливается в зависимости от свойства **Энергонезависимость** переменной, привязанной к выходному блоку:

- если чекбокс **Энергонезависимость** не отмечен (галочка отключена), тогда **Запись в конце цикла** принимает значение **"Нет"**;
- если чекбокс **Энергонезависимость** отмечен (галочка включена), тогда **Запись в конце цикла** принимает значение **"Да"**.

Значение по умолчанию в настройке **Запись в конце цикла** устанавливается при следующих изменениях:

- при каждом изменении привязки переменной к выходному блоку;
- при каждом изменении свойства **Энергонезависимость** привязанной переменной к выходному блоку.

Примеры использования настройки параметра **Запись в конце цикла** с рекомендуемыми значениями:

<div><div><table><tbody><tr><td><?Pub _cellfont Shading="#DFDFDF"?><b>Пример 1</b><p>Создана
переменная mode, привязанная к элементу визуализации. Переменная инициализируется
значением с холста.</p><div><figure><img src="https://docs.owen.ru/book_img/2379/152885.png" alt="Переменная инициализируется с холста"></figure></div><p>Необходимо произвести действие с этой переменной
в первом <a href="#topic-122307">рабочем цикле</a>.</p><p>В случае настройки <b>Запись в конце цикла "Да"</b>:</p><p><div><div><table><thead><tr><th vertical-align="center"><?PubTbl cell border-bottom-width="0.50pt"
border-left-width="0.50pt" border-right-width="0.50pt" border-top-width="0.50pt"?>Энергонезависимая
переменная</th><th vertical-align="center"><?PubTbl cell border-bottom-width="0.50pt"
border-right-width="0.50pt" border-top-width="0.50pt"?>Не энергонезависимая
переменная</th></tr></thead><tbody><tr><td vertical-align="center"><p>Переменная mode в блоке входной переменной
будет проинициализирована значением по умолчанию (например, 5):</p><div><figure><img src="https://docs.owen.ru/book_img/2379/152884.png" alt="Пример2"></figure></div></td><td vertical-align="center"><p>Переменная mode в блоке входной переменной
будет проинициализирована нулевым значением:</p><div><figure><img src="https://docs.owen.ru/book_img/2379/152883.png" alt="Пример1"></figure></div></td></tr></tbody></table></div></div></p><p>В случае настройки <b>Запись в конце цикла "Нет"</b>:</p><p><div><div><table><thead><tr><th vertical-align="center"><?PubTbl cell border-bottom-width="0.50pt"
border-left-width="0.50pt" border-right-width="0.50pt" border-top-width="0.50pt"?>Энергонезависимая
переменная</th><th vertical-align="center"><?PubTbl cell border-bottom-width="0.50pt"
border-right-width="0.50pt" border-top-width="0.50pt"?>Не энергонезависимая
переменная</th></tr></thead><tbody><tr><td vertical-align="center"><p>Переменная mode в блоке входной переменной
будет проинициализирована значением с холста:</p><div><figure><img src="https://docs.owen.ru/book_img/2379/152882.png" alt="Пример4"></figure></div></td><td vertical-align="center"><p>Переменная mode в блоке входной переменной
будет проинициализирована значением с холста:</p><div><figure><img src="https://docs.owen.ru/book_img/2379/152882.png" alt="Пример4"></figure></div></td></tr></tbody></table></div></div></p><p>Рекомендуется использовать <b>Запись в конце цикла
"Нет"</b>.</p></td></tr></tbody></table></div></div>

**Пример 2**

Созданы две стандартные переменные screen_var1 и screen_var2, привязанные к разным элементам визуализации, доступным для изменения с экрана прибора.

Необходимо произвести синхронизацию значений этих переменных. Для этого можно использовать макросы SelChg/SelChgF из менеджера компонентов.

Макрос SelChgF предназначен для изменения переменной тип int/float с помощью двух переменных. На выходе макроса записывается последнее изменение одной из двух переменных.

В случае настройки **Запись в конце цикла "Нет"** (по умолчанию для не энергонезависимых переменных):

![Пример5](https://docs.owen.ru/book_img/2379/152895.png)

У одной из переменных (в данном примере screen_var2) появляется циклическая связь (подсвечивается желтым цветом), в результате чего недоступно изменение значения переменной с экрана, т.к. переменная screen_var2 будет принимать значение переменной screen_var1.

В случае настройки **Запись в конце цикла "Да"** (по умолчанию для энергонезависимых переменных) для переменной screen_var2 циклическая связь пропадет, обе переменные станут доступны для изменения с экрана:

![Пример6](https://docs.owen.ru/book_img/2379/152894.png)

Рекомендуется использовать **Запись в конце цикла "Да"**.

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

<a id="topic-122314"></a>

#### Блок константы

Для включения в программу жестко заданного числового значения используется блок константы. Для размещения блока константы на схеме следует нажать на кнопку ![const](https://docs.owen.ru/book_img/2379/36749.png) на панели вставки, затем – в место на схеме, где должен быть расположен блок.

![algorithm 12](https://docs.owen.ru/book_img/2379/36971.png)

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

![alg const](https://docs.owen.ru/book_img/2379/36970.png)

Значение константы можно отредактировать двойным нажатием на блок константы или выбором **Изменить значение** в контекстном меню блока.

![Const3](https://docs.owen.ru/book_img/2379/50165.png)

Допустимые значения для типов константы:

|   |   |
| --- | --- |
| Булевское | от 0 до 1 |
| Целочисленное | от 0 до 4294967295 |
| С плавающей запятой | от –3,402823E+38 до 3,402823E+38 |

Значение константы не подвергается изменениям на всем протяжении работы программы.

<a id="topic-122315"></a>

#### Линия задержки

**Линия задержки** используется для создания задержки на один цикл передачи значения с выхода компонента на вход.

Для создания линии задержки следует нажать на кнопку ![feedback](https://docs.owen.ru/book_img/2379/36748.png) на панели вставки и построить линию между выходом и входом компонента/компонентов проекта. Линия задержки отобразится на схеме пунктирной линией со стрелкой, цвета соответствующего типу данных переменной.

![algorithm 13](https://docs.owen.ru/book_img/2379/36984.png)

**Пример**

На вход **I1** блока арифметического сложения (целочисленный тип) подается константа, значение которой равно 1. На вход **I2** по линии задержки подается значение с выхода блока **Q**, которое было вычислено в предыдущем цикле.

![algorithm 14](https://docs.owen.ru/book_img/2379/36983.png)

Значения на входах и выходах блока:

| № цикла | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **I2** | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| **Q** | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

<a id="topic-122316"></a>

#### Блок сетевой переменной

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

Для добавления на схему блока сетевой переменной следует нажать на кнопку:

- ![net writing](https://docs.owen.ru/book_img/2379/36767.png) – передача значения из программы по сети;
- ![net reading](https://docs.owen.ru/book_img/2379/36766.png) – получение значения в программу по сети.

##### Привязка переменной к блоку сетевой переменной

Для привязки переменной к блоку сетевой переменной следует:

1. Выбрать на схеме блок сетевой переменной.

2. Нажать на кнопку «**...**» в поле **Переменная** в свойствах блока сетевой переменной или два раза нажать на блок сетевой переменной на схеме.

   ![network 02](https://docs.owen.ru/book_img/2379/36987.png)

3. В открывшейся [таблице переменных](#topic-122352) выбрать или создать новую переменную для привязки и нажать кнопку **ОК**.

   ![network 03](https://docs.owen.ru/book_img/2379/36986.png)

4. Присоединить выход/вход блока сетевой переменной к необходимому компоненту.

   ![network 04](https://docs.owen.ru/book_img/2379/36985.png)

Вышеописанный алгоритм работы с переменными интерфейсов связи удобен, если пользователь начинает работу с проектом с настройки прибора. Если список параметров Мастера сети Modbus уже известен, работу удобнее начинать с определения переменных в [таблице переменных](#topic-122352). Подробнее см. раздел [Работа по протоколу Modbus](#topic-122344).

> [!NOTE]
> **Примечание.** Нельзя привязать переменную к блоку, если в [настройках прибора](#topic-122336) нет интерфейсов связи.

##### Расширенные настройки

Для приборов [второго поколения](#topic-122295) доступна настройка допустимого отклонения для переменных с плавающей точкой в блоке передачи значения из программы по сети. Если входящее в блок значение не превышает допустимое, то значение переменной не перезаписывается каждый цикл, что позволяет экономить аппаратные ресурсы прибора. Допустимое отклонение задается в свойствах блока сетевой переменной.

![допустимое отклонение](https://docs.owen.ru/book_img/2379/91453.png)

<a id="topic-122317"></a>

#### Блок чтения/записи в ФБ

Блок чтения/записи в ФБ используется для задачи или чтения значения параметра ФБ в процессе выполнения программы.

На схему могут быть добавлены блоки:

- ![write to FB](https://docs.owen.ru/book_img/2379/36765.png)

  — записи значения в ФБ;

- ![read From Fb](https://docs.owen.ru/book_img/2379/36764.png)

  — чтения значения из ФБ.

**Пример**

В зависимости от значения на входе **I1** в функциональном блоке **BLINK1** значение параметра **Длительность вкл. состояния** будет иметь значение **2** или **10**.

![algorithm 15](https://docs.owen.ru/book_img/2379/36969.png)

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

![writetofb](https://docs.owen.ru/book_img/2379/36968.png)

<a id="topic-122318"></a>

#### Блок преобразования

Линия связи между компонентами программы может быть создана только для входа и выхода одного и того же типа: булевского, целочисленного, с плавающей запятой или массива (с одинаковым количеством и типом элементов). Для создания линии связи между входом и выходом разных типов следует использовать блоки преобразования.

Использование блоков преобразования с переменными типа массив недоступно. Возможно преобразование элементов массива.

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

![convert](https://docs.owen.ru/book_img/2379/36982.png)

Типы блоков преобразования:

![itobit](https://docs.owen.ru/book_img/2379/36763.png)

**Преобразователь в булевское значение**

Конвертация значения сигнала в булевское значение. Если значение на входе блока больше либо равно 1, то на выходе будет 1 (**True**). В остальных случаях на выходе будет 0 (**False**).

![bittoi](https://docs.owen.ru/book_img/2379/36762.png)

**Преобразователь в целочисленное значение**

Конвертация значения сигнала в целочисленное значение. Если на входе блока булевское значение **0 (False)**, то на выходе будет **0**, если на входе **1 (True)**, то на выходе будет **1**. Если на входе блока значение числа с плавающей запятой, то на выходе оно округляется с недостатком. Отрицательные значения с плавающей запятой конвертируются в **0**.

![tofloat](https://docs.owen.ru/book_img/2379/36761.png)

**Преобразователь в число с плавающей запятой**

Конвертация значения сигнала в число с плавающей точкой. Для преобразования целочисленного в число с плавающей точкой добавляется дробная часть (int = 5 → float = 5,0000). Если на входе блока булевское значение **0 (False)**, то на выходе будет **0,0000**, если на входе блока **1 (True)**, то на выходе будет **1,0000**.

<a id="topic-122319"></a>

#### Перенумеровать компоненты

Для переназначения порядковых номеров компонентов на схеме следует нажать кнопку ![renum](https://docs.owen.ru/book_img/2379/36754.png) на панели инструментов или выбрать в главном меню **Сервис → Перенумеровать компоненты**. Однотипные компоненты нумеруются по порядку сверху вниз и слева направо.

![renum 01](https://docs.owen.ru/book_img/2379/36997.png)

<a id="topic-122320"></a>

#### Порядок исполнения

Значения всех выходов и обратных связей в программе вычисляются в определенном порядке. Для изменения порядка вычисления следует нажать на кнопку ![output](https://docs.owen.ru/book_img/2379/36755.png) на панели отладки и в выпадающем меню выбрать **Обратные связи** или **Выходы**.

Owen Logic перейдет в режим настройки порядка исполнения – на выходах и обратных связях отобразятся порядковые номера очереди исполнения.

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

![algorithm 17](https://docs.owen.ru/book_img/2379/36995.png)

После установки необходимой очередности следует отключить режим настройки порядка исполнения повторным нажатием на кнопку ![output](https://docs.owen.ru/book_img/2379/36755.png).

<a id="topic-122321"></a>

### Программирование дисплея прибора

Если прибор оснащен дисплеем, то дисплей может быть использован для отображения различной информации, согласно заданному алгоритму в программе. На экране может отображаться текст, графические компоненты и значения переменных программы. Для программирования экрана используется [Менеджер экранов](#topic-122321). Чтобы открыть менеджер экранов, следует нажать на заголовок вкладки в левой части рабочей области.

![Вкладка Менеджер экранов](https://docs.owen.ru/book_img/2379/146207.png)

Менеджер экранов для приборов с графическим цветным и монохромным текстовым ЖКИ имеет следующие различия:

![Менеджер экранов Монохромный ЖКИ](https://docs.owen.ru/book_img/2379/155063.png)

*Менеджер экранов для приборов с монохромным текстовым ЖКИ*

   

По умолчанию в Группу 1 добавлен Экран 1:

- редактирование Группы 1 доступно;

<!-- -->

- удаление Группы 1 не доступно.

![Сенеджер экранов КС2 (1)](https://docs.owen.ru/book_img/2379/155062.png)

*Менеджер экранов для приборов с графическим цветным ЖКИ*

   

По умолчанию в Группу системных экранов добавлен Загрузочный экран:

- Группа системных экранов и Загрузочный экран не доступны для редактирования и удаления.

По умолчанию в Группу экранов 1 добавлен Экран 1:

- редактирование Группы экранов 1 доступно;
- удаление Группы экранов 1 не доступно.

#### Добавление экранов

В менеджере экранов можно добавить несколько экранов. Возможно настроить переход между экранами на дисплее прибора по нажатию кнопки и по изменению переменной. Настройка переходов отличается для [монохромного текстового ЖКИ](#topic-122322) и [графического цветного ЖКИ](#topic-122323).

Для добавления экрана следует нажать ПКМ на элемент **Группа 1** и в контекстном меню выбрать **Добавить экран**.

![Добавить экран](https://docs.owen.ru/book_img/2379/146205.png)

Для удаления экрана следует нажать ПКМ на нужный экран и в контекстном меню выбрать **Удалить**.

![Удалить экран](https://docs.owen.ru/book_img/2379/146204.png)

Для смены позиции экрана используйте метод drag&drop, удерживая клавишу **Shift**.

![screenset 02v2-2](https://docs.owen.ru/book_img/2379/36990.png)

При перемещении новое положение будет отображаться в виде горизонтального маркера.

#### Редактор экрана

Функционал редактора экрана зависит от типа дисплея в приборе:

- [монохромный текстовый ЖКИ](#topic-122322);
- [графический цветной ЖКИ](#topic-122323).

<a id="topic-122322"></a>

#### Монохромный текстовый ЖКИ

##### Параметры экрана

**Параметры** экрана отображаются в поле свойств **Менеджера экранов**.

![Менеджер экранов КС1](https://docs.owen.ru/book_img/2379/154409.png)

- **Имя** – для отображения в **Менеджере экранов** и в заголовке редактора экранов;
- **Описание** – текстовое описание экрана;
- **Скрывать строки** – скрытие/отображение пустых строк на экране прибора.

Для отображения **параметров** экрана на панели свойств следует дважды нажать на нужный экран в **Менеджере экранов**.

![Свойства экрана](https://docs.owen.ru/book_img/2379/146203.png)

##### Редактор группы экранов

Для приборов с монохромным текстовым ЖКИ также доступен редактор группы экранов, который открывается выбором команды **Редактировать группу** в контекстном меню группы экранов в **Менеджере экранов**.

![Tree Displays](https://docs.owen.ru/book_img/2379/49199.png)

В верхней части редактора экранов и группы экранов расположены кнопки:

![hxds](https://docs.owen.ru/book_img/2379/36747.png)

**Сохранить документ**

![scale minus](https://docs.owen.ru/book_img/2379/36931.png)

**Уменьшить масштаб**

![original](https://docs.owen.ru/book_img/2379/36930.png)

**Оригинальный размер**

![scale plus](https://docs.owen.ru/book_img/2379/36929.png)

**Увеличить масштаб**

Масштаб может быть изменен с помощью выпадающего меню справа от кнопок.

##### Редактор экранов

Для настройки вывода информации на экран следует открыть редактор экрана двойным нажатием по экрану в менеджере экранов или нажатием на кнопку ![73](https://docs.owen.ru/book_img/2379/45054.png) **Редактировать экран** из контекстного меню экрана.

![Редактировать экран](https://docs.owen.ru/book_img/2379/154408.png)

Экран может содержать несколько строк, переход к которым осуществляется с помощью кнопок прибора. Для добавления или удаления строк следует нажать на кнопку ![menu](https://docs.owen.ru/book_img/2379/36953.png) **Контекстное меню строки** и выбрать необходимую команду.

![screenset 13](https://docs.owen.ru/book_img/2379/37010.png)

В строках располагаются элементы управления, которые перетаскиваются из панели **Библиотека компонентов** методом drag & drop. Описания блоков приведены в разделе [Элементы управления](#topic-122410).

> [!NOTE]
> **Примечание.** Набор символов реализован в рамках кодировки Windows-1251.

##### Копирование экранов

В менеджере экранов можно копировать экраны для вставки в текущий или другой проект. Для копирования выделенных экранов следует выбрать команду **Копировать** в контекстном меню экрана или группы экранов, либо нажать сочетание клавиш **Ctrl + C**. Несколько экранов можно выделить с помощью зажатой клавиши **Ctrl** или **Shift**.

![copydisplay](https://docs.owen.ru/book_img/2379/50211.png)

Для вставки скопированных экранов следует выбрать в контекстном меню экрана или группы экранов команду **Вставить**, либо нажать сочетание клавиш **Ctrl + V**.

Вместе с экраном копируются все размещенные на экране элементы управления и свойства экрана. Привязанные к экрану переменные копируются в другой проект согласно разделу [Копирование переменных](#topic-122357).

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

##### Переход к экрану

Если в проекте участвуют два или более экранов, то необходимо настроить переходы (условия переключения) между ними.

Для создания перехода следует:

1. Нажать ПКМ по элементу **Группа 1** в дереве менеджера экранов и выбрать **Редактировать группу** в контекстном меню. Откроется вкладка редактора группы экранов.

2. Выбрать стартовый экран в редакторе группы экранов.

3. В свойствах экрана нажать «**…**» в параметре **Переход к экрану**. Откроется меню создания перехода.

4. В выпадающем меню **Список экранов** выбрать другой экран для перехода к нему.

   ![screenset 07](https://docs.owen.ru/book_img/2379/37017.png)

5. В поле **Условие перехода** выбрать пункт **Генерация событий от прибора** и в выпадающем меню указать кнопку прибора для выполнения перехода или выбрать пункт **Изменения значения переменной** для указания переменной булевского типа, в случае изменения значения которой будет выполнен переход.

   ![screenset 04](https://docs.owen.ru/book_img/2379/37016.png)

   ![screenset 09](https://docs.owen.ru/book_img/2379/37014.png)

   > **Примечание.** Безусловный переход служит для настройки перехода, если ни одно из событий или изменений значения переменной не происходит, например, для перехода на экран аварий.

6. После создания переход будет отображен на схеме в редакторе группы экранов и в свойствах экрана.

   ![Переходы экранов](https://docs.owen.ru/book_img/2379/146201.png)

Переход от экрана к экрану может происходить по различным событиям, для этого можно настроить несколько (**коллекцию**) переходов. Переходы добавляются аналогично описанию выше.

Для редактирования или удаления перехода следует выбрать его в свойствах экрана и настроить соответствующие параметры. Переход будет удален, если в поле **Список экранов** меню создания перехода будет стоять значение **< отсутствует >**.

![Переход к экрану отсутствует](https://docs.owen.ru/book_img/2379/146200.png)

<a id="topic-122323"></a>

#### Графический цветной ЖКИ

Для приборов с графическим цветным ЖКИ вывод информации на экран программируется с помощью графических элементов.

![Графисеский цветной жки](https://docs.owen.ru/book_img/2379/161854.png)

Области редактора экрана:

- **панель элементов экрана** служит отображения списка расположенных на поле компонентов. На панели элементов экрана также можно менять порядок графических элементов, задавать им имена;
- **панель инструментов экрана** содержит кнопки управления экраном: масштабирование, включение/выключение и настройка шага сетки, предназначенной для упрощения выравнивания элементов;
- **поле экрана** служит для расположения графических элементов;
- **кнопки** служат для программирования кнопок прибора.

Графические элементы для расположения в поле экрана выбираются из **Библиотеки компонентов**. Описания элементов приведены в разделе [Базовые элементы](#topic-122416).

В [режиме симулятора](#topic-122324) доступно окно симуляции экрана. Сетка при симуляции не отображается.

##### Панель инструментов экрана

|   |   |   |
| --- | --- | --- |
| ![Кнопка Сохранить документ](https://docs.owen.ru/book_img/2379/161853.png) | Сохранить документ | Сохранение документа не поддерживается |
| ![Кнопка Уменьшить масштаб](https://docs.owen.ru/book_img/2379/161852.png) | Уменьшить масштаб | Уменьшение масштаба на 10% от первоначального |
| ![Кнопка Исходный масштаб](https://docs.owen.ru/book_img/2379/161851.png) | Оригинальный размер | Возврат к исходному масштабу |
| ![Кнопка Увеличить масштаб](https://docs.owen.ru/book_img/2379/161850.png) | Увеличить масштаб | Увеличение масштаба на 10% от первоначального |
| ![Кнопка Выбор масштаба](https://docs.owen.ru/book_img/2379/161849.png) | Выбор масштаба | Выбор масштаба. Возможен ввод значения в диапазоне от 10 до 2000% |
| ![Кнопка Сетка визуализации](https://docs.owen.ru/book_img/2379/161848.png) | Включить/Выключить<br>сетку | При включенной сетке на экране отображается сетка из точек. Элементы визуализации при<br>размещении привязываются к сетке |
| ![Кнопка шаг сетки](https://docs.owen.ru/book_img/2379/161847.png) | Шаг сетки | Выбор шага сетки. Возможен ввод значения в диапазоне от 2 до 1000px |

##### Поле экрана

![Графический цветной жки 1](https://docs.owen.ru/book_img/2379/161859.png)

Перемещать элементы визуализации по полю экрана можно с помощью:

- мыши (методом drag&drop) — во время перемещения на поле экрана отображаются подсказки с координатами и размерами элемента. Если отображение сетки выключено, то при перемещении отображаются направляющие линии относительно других элементов. При включенной сетке графический элемент сдвигается на шаг сетки;
- стрелок на клавиатуре — при включенной сетке графический элемент сдвигается на шаг сетки;
- с помощью [сочетания клавиш](#topic-122448).

Для графических элементов и групп графических элементов доступны следующие действия в контекстном меню:

- копирование;
- вставка;
- удаление;
- перемещение на передний и задний план;
- выравнивание.

Двойное нажатие ЛКМ по графическим элементам:

- Текст и Динамический текст — активирует режим ввода текста;
- Линия — действие на двойное нажатие ЛКМ отсутствует;
- Кнопка — открывает окно настройки действий;
- Группа переключателей — открывает редактор списка переключателей;
- Изображение — открывает окно выбора пользовательского изображения;
- Меню — открывает окно редактирования строк;
- График — открывает окно Список линий График, для настройки отображения графика;
- для остальных элементов открывается окно привязки переменной.

##### Свойства графических элементов

Свойства графического элемента отображаются при:

- выделении графического элемента, расположенного на поле экрана;
- выделении графического элемента, расположенного на панели Компоненты экрана.

Общие свойства для всех графических элементов:

- **имя элемента**;
- **размер** – ширина и высота в пикселях;
- **координаты** – по осям X и Y, точкой отсчета является верхний левый край элемента.

![element properties](https://docs.owen.ru/book_img/2379/89944.png)

##### Группы экранов

Для папки **Группы экранов** в поле свойств **Менеджера экранов** доступна настройка параметров, которые будут применены ко всем элементам визуализации всех экранов, входящих в эту группу. Изменение настроек на уровне группы автоматически влияет на все графические элементы, расположенные на всех экранах группы.

![Рамка фокуса](https://docs.owen.ru/book_img/2379/155065.png)

- **Параметры:**

  **Описание** — текстовое описание группы экранов.

- **Рамка фокуса:**

  **Толщина** — толщина рамки графического элемента в фокусе в режиме симуляции и на экране прибора;

  **Цвет** — цвет рамки графического элемента в фокусе в режиме симуляции и на экране прибора.

##### Загрузочный экран

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

> [!NOTE]
> **Примечание.** По умолчанию на Загрузочном экране отображается предустановленное изображение.

Для добавления пользовательского изображения дважды нажмите ЛКМ на элемент **Загрузочный экран** во вкладке **Менеджер экранов.** Откроется окно **Свойств загрузочного изображения**:

![Свойства Загрузочного экрана](https://docs.owen.ru/book_img/2379/154471.png)

*Окно свойств загрузочного изображения*

| Группа | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- |
| **Данные** | **Тип изображения** | • при выборе значения "По умолчанию" дальнейшая настройка параметров не доступна - на загрузочном экране будет отображаться предустановленное изображение;<br>• при выборе значения "Пользовательское" доступна настройка параметров изображения |   |
| **Данные** | **Изображение** | Выбор файла изображения<br>**Предупреждение.** Для выбора доступны следующие типы файлов: \*.jpg; \*.jpeg; \*.jpe, \*.bmp. Максимальное разрешение изображения ограничено разрешением экрана устройства. Допускается уменьшение изображения в редакторе экрана Owen Logic |   |
| **Координаты** | **X** | Значение положения элемента по оси X.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Координаты** | **Y** | Значение положения элемента по оси Y.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и высотой экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Размеры** | **Ширина** | Ширина элемента по оси X. Максимальное значение не более ширины загруженного изображения | Размеры элемента можно задать изменением границ объекта на поле экрана. Ширина и высота элемента изменяются пропорционально размерам загруженного изображения |
| **Размеры** | **Высота** | Высота элемента по оси Y. Максимальное значение не более высоты загруженного изображения | Размеры элемента можно задать изменением границ объекта на поле экрана. Ширина и высота элемента изменяются пропорционально размерам загруженного изображения |

После **загрузочного экрана** по умолчанию отображается первый экран из списка Группы экранов 1.

##### Параметры экрана

**Параметры** экрана отображаются в поле свойств **Менеджера экранов**.

![Менеджер экранов КС2 с параметрами](https://docs.owen.ru/book_img/2379/155079.png)

- **Имя** — для отображения в **Менеджере экранов** и в заголовке редактора экранов;
- **Переходы** — создание переходов между экранами;
- **Описание** — текстовое описание экрана;

##### Создание переходов между экранами

> [!NOTE]
> **Примечание.** Настройка переходов к **Загрузочному экрану** недоступна.

**Создание перехода экрана по изменению переменной**

1. Нажмите ПКМ по элементу экран в дереве менеджера экранов и выберите **Настроить переходы** в контекстном меню или выделите ЛКМ свойство экрана Переходы на панели свойств экрана, и нажмите на кнопку **...**. Откроется окно редактора переходов. Выбранный экран будет отправной точкой для перехода.

   ![4 65](https://docs.owen.ru/book_img/2379/155030.png)

2. В выпадающем меню столбца **Перейти на экран** выберите другой экран для перехода к нему.

3. В столбце **По изменению переменной** нажмите на кнопку **...** и выберите из таблицы переменных переменную булевского типа, в случае изменения значения которой будет выполнен переход. После исполнения перехода значения привязанной переменной изменяется на «0».

4. Для добавления другого перехода нажмите![add var](https://docs.owen.ru/book_img/2379/36822.png) **Добавить переход**, для удаления выделенного перехода нажмите ![del var](https://docs.owen.ru/book_img/2379/36836.png).

5. Нажмите **ОК**. Созданные переходы будут отображаться на панели свойств экрана. Порядок выполнения переходов соответствует их порядку в свойствах экрана.

   ![созданные переходы](https://docs.owen.ru/book_img/2379/89915.png)

##### Создание переходов между экранами по кнопке

В нижней части редактора визуализации расположена панель "Кнопки", на которой отображаются все имеющиеся в приборе физические кнопки:

![buttons](https://docs.owen.ru/book_img/2379/90613.png)

Двойное нажатие ЛКМ по кнопке открывает окно программирования событий для кнопки. Для каждого экрана кнопки программируются отдельно.

![4 68](https://docs.owen.ru/book_img/2379/155049.png)

Для программирования кнопки доступны следующие события:

- короткое нажатие (менее 3 секунд);
- долгое нажатие (3 секунды и более);
- удержание (от 5 секунд).

Для короткого и долгого нажатия можно запрограммировать несколько действий (переходов на другие экраны и изменений значения булевских переменных). Для удержания можно запрограммировать только действие изменения значений булевских переменных. Действия выполняются в программе в порядке добавления.

Для добавления переменной нажмите ![add var](https://docs.owen.ru/book_img/2379/36822.png) **Добавить переменную**. Для удаления запрограммированного действия нажмите ![del var](https://docs.owen.ru/book_img/2379/36836.png).

Настроенные события для кнопок являются приоритетными и переопределяют поведение кнопок по умолчанию. Для возврата к поведению кнопок по умолчанию удалите действия по событию и запишите программу в прибор.

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

Для каждой кнопки отображается количество настроенных событий:

![programmed button](https://docs.owen.ru/book_img/2379/90615.png)

<a id="topic-122324"></a>

### Режим симулятора

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

Для перехода в режим симулятора нажмите кнопку ![play](https://docs.owen.ru/book_img/2379/36756.png) на панели инструментов или выберите в главном меню **Сервис → Режим симулятора**. Откроется панель симуляции.

#### Панель симуляции

![debug 01](https://docs.owen.ru/book_img/2379/36884.png)

|   |   |   |
| --- | --- | --- |
| ![Simulator Play 24](https://docs.owen.ru/book_img/2379/46594.png) | **Пуск** | Запуск симуляции в реальном времени |
| ![step](https://docs.owen.ru/book_img/2379/36895.png) | **Шаг на один цикл** | Пошаговая симуляция, выполняет 1 цикл программы |
| ![Simulator Pause 24](https://docs.owen.ru/book_img/2379/46595.png) | **Пауза** | Пауза симуляции, повторное нажатие продолжает симуляцию |
| ![Stop 24](https://docs.owen.ru/book_img/2379/46596.png) | **Остановка симулятора** | Остановка симуляции, переводит режим симуляции в первоначальное состояние |
|   | **Период, мс** | Поле ввода для задания периода обновления информации на схеме в миллисекундах |
|   | **Время цикла** | Поля ввода для задания времени цикла выполнения программы в режиме симулятора и выбора единиц измерения времени цикла |
| ![view](https://docs.owen.ru/book_img/2379/36882.png) | **Окно просмотра** | Открыть/закрыть окно для просмотра значений переменных на каждом шаге выполнения программы |
| ![open in w 24](https://docs.owen.ru/book_img/2379/124134.png) | **Симуляция дисплея** | Открыть окно симуляции дисплея |

> [!WARNING]
> **Внимание.** **Время цикла** в режиме симуляции не то же самое, что [время цикла](#topic-122436), рассчитываемое непосредственно в приборе. **Время цикла** может быть выбрано произвольно и требуется для симуляции работы временных ФБ – [TON](#topic-122394), [TOF](#topic-122395), [BLINK](#topic-122399). Все уставки временных ФБ будут отработаны в промежуточных шагах симулятора.

#### Симулирование работы блоков часов

Для приборов с функцией часов реального времени открывается дополнительная панель, с помощью которой можно симулировать поведение ФБ [CLOCK](#topic-122396) и [CLOCK WEEK](#topic-122397) во времени.

![debug 02](https://docs.owen.ru/book_img/2379/36883.png)

#### Последовательность и правила работы в режиме симуляции

Порядок симуляции программы:

1. Запуск симулятора в одном из режимов: реального времени (![start](https://docs.owen.ru/book_img/2379/36896.png)) или в пошаговом (![step](https://docs.owen.ru/book_img/2379/36895.png)).

2. Задание значений входных сигналов на блоках программы:

   ![debug 03](https://docs.owen.ru/book_img/2379/36894.png)

3. Подбор значений параметров **Период, мс** и **Время цикла** для удобства симуляции.

4. Выход из режима симуляции для корректировки программы.

Режим симуляции работает по следующим правилам:

- программа (вкладка **Схема**) и макросы моделируются по отдельности;
- работа блоков, не имеющих связи ни с одним из выходов прибора или выходным блоком сетевой переменной, не симулируется;
- симуляция не будет работать для энергозависимых и некорректно привязанных переменных.

#### Окно просмотра

#### Ввод значений переменных

Окно просмотра можно открыть или скрыть нажатием кнопки ![view](https://docs.owen.ru/book_img/2379/36882.png) на панели симуляции. Окно предназначено для просмотра значений переменных или входов/выходов на каждом шаге выполнения программы.

До запуска симуляции окно пустое.

![debug 04](https://docs.owen.ru/book_img/2379/36881.png)

Для добавления переменной в **окно просмотра** нажмите ПКМ на переменную на схеме и выберите **Добавить в окно просмотра** в контекстном меню.

![debug 09](https://docs.owen.ru/book_img/2379/36897.png)

Также добавить переменную в **окно просмотра** можно нажав на пустое поле в колонке **Имя** в **Окне просмотра**, затем на кнопку «**...**».

![debug 05](https://docs.owen.ru/book_img/2379/36880.png)

Откроется таблица переменных. В ней могут быть выбраны переменные проекта, входы и выходы.

Ограничения при работе с таблицей переменных, открытой из окна просмотра переменных:

- создание, дублирование и удаление переменных недоступны;
- изменение имени, типа данных и параметров энергонезависимости невозможно;
- для стандартных переменных недоступна настройка параметров массива, а также функции импорта и экспорта переменных;
- для сетевых Slave переменных недоступна настройка параметров.

![Таблица переменных из окна просмотра](https://docs.owen.ru/book_img/2379/156142.png)

Выберите переменные и нажмите кнопку **OK**. Выбранные переменные добавятся в окно просмотра.

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

![Окно просмотра](https://docs.owen.ru/book_img/2379/156141.png)

**[Незадействованные](#topic-122352)** переменные будут отображаться в окне просмотра серым цветом, значение всегда обозначено числом 0, ввод значения для таких переменных невозможен.

Для удаления переменной из окна просмотра выделите переменную и нажмите Delete, или воспользуйтесь контекстным меню переменной в **Окне просмотра**:

![Удаление из листа просмотра](https://docs.owen.ru/book_img/2379/156140.png)

Удалить элемент массива, вложенный в массив, невозможно.

Во режиме симулятора значения переменных можно задавать в окне просмотра в колонке **Значения**.

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

![debug 08](https://docs.owen.ru/book_img/2379/36893.png)

После ввода значения переменной, отличного от нуля, блок на схеме изменит цвет на красный, на один цикл выполнения программы. При остановленной симуляции блок сохранит красный цвет до запуска симуляции или выполнения команды **Шаг на один цикл:**

![Красный блок](https://docs.owen.ru/book_img/2379/156139.png)

После ввода нулевого значения переменной (для переменной типа массив значение 0/False должно быть у всех элементов массива) блок на схеме изменит цвет на синий на один цикл выполнения программы.При остановленной симуляции блок сохранит синий цвет до запуска симуляции или выполнения команды **Шаг на один цикл:**

![Синий блок](https://docs.owen.ru/book_img/2379/156138.png)

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

![Inputs](https://docs.owen.ru/book_img/2379/48606.png)

<a id="topic-122325"></a>

#### Симуляция визуализации

В режиме симулятора для приборов с графическим цветным ЖКИ доступна симуляция дисплея и кнопок прибора.

> [!NOTE]
> **Примечание.** Работа элемента визуализации **График** в режиме симуляции не поддерживается.

После входа в режим откроется окно, отображающее стартовый экран прибора.

![4 78](https://docs.owen.ru/book_img/2379/155048.png)

В левом верхнем углу окна расположены кнопки масштабирования.

В левой части окна расположен список экранов, доступных в проекте.

В центральной части окна отображается симуляция экрана приора.

В правой части окна находятся кнопки для симуляции действий с реальными кнопками прибора.

##### Работа с экраном

В режиме симуляции доступно редактирование значения переменных следующих элементов визуализации:

- [Динамический текст](#topic-122420);
- [Формы ввода/вывода int/float](#topic-122421);
- [Формы ввода/вывода времени](#topic-122422);
- [Формы ввода/вывода IP](#topic-122423);
- [Переключатель](#topic-122428);
- [Группа переключателей](#topic-122429);
- [Круг](#topic-122426), [многоугольник](#topic-122425), [изображение](#topic-122430), [кнопка](#topic-122427) если у элемента настроено действие;
- [Меню](#topic-122431) — возможно переключение экранов. Редактирование значений переменных не предусмотрено.

##### Работа с кнопками

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

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

Управление кнопками симуляции может осуществляться клавишами <b>*Q*</b>, <b>*W*</b>, <b>*E*</b>, <b>*A*</b>, <b>*S*</b>, <b>*D*</b>, <b>*Z*</b>, <b>*X*</b>, <b>*C*</b>. Нажатие кнопок на клавиатуре активно только если окно симуляции визуализации находится в фокусе.

При пошаговой симуляции удержание кнопок не работает.

<a id="topic-122326"></a>

#### Симуляция ST кода

В Owen Logic доступна симуляция кода функции или функционального блока, написанного на языке ST. Для этого перейдите в окно **Редактор функции** (или **Редактор функционального блока**) и нажмите кнопку ![Кнопка Режим симулятора](https://docs.owen.ru/book_img/2379/143327.png)на панели инструментов, или в главном меню **Сервис → Режим симулятора**. Откроется панель симуляции. В окне **Редактора** значения переменных будут отображены в окнах просмотра, расположенных рядом с переменной. Если в программе объявлены массивы, то в окне просмотра отображается слово **Изменить**.

![Режим симуляции ST](https://docs.owen.ru/book_img/2379/143326.png)

*Окно Редактор функционального блока в режиме симулятора*

**Цветовые обозначения окон просмотра:**

![Значение исходное](https://docs.owen.ru/book_img/2379/143325.png) — текущее значение переменной;

![Значение изменено пользователем](https://docs.owen.ru/book_img/2379/143324.png) — значение переменной изменено пользователем;

![Значение зафиксировано](https://docs.owen.ru/book_img/2379/143323.png) — значение переменной зафиксировано пользователем;

![Значение зафиксировано массив](https://docs.owen.ru/book_img/2379/143322.png) — значение одного или нескольких элементов массива (не всех) зафиксировано пользователем;

![Значение недопустимо](https://docs.owen.ru/book_img/2379/143321.png) — ошибка: неверное значение переменной (например, когда с помощью переменной задается несуществующий элемент массива).

При нажатии ЛКМ на окно просмотра для ввода значения целочисленной переменной (udint) или переменной с плавающей запятой (real) в режиме симуляции появится окно, в котором можно ввести новое значение переменной и, если необходимо, зафиксировать значение.

![4 80](https://docs.owen.ru/book_img/2379/155039.png)

*Изменение значения переменной udint*

> [!NOTE]
> **Примечание.** Если значение переменной типа real превышает 8 знаков, то значение округляется.
>
> Если значение переменной типа real превышает 9 знаков, то значение переводится в экспоненциальную форму. Например, значение 1234567891 будет отображаться, как 1.2345678Е+09.

При нажатии ЛКМ на окно просмотра для ввода значения булевской переменной (bool) в режиме симуляции появится окно, в котором можно выбрать значение true или false и, если необходимо, зафиксировать значение.

![4 81](https://docs.owen.ru/book_img/2379/155038.png)

*Изменение значения переменной bool*

При нажатии ЛКМ на окно просмотра для ввода значения временной переменной (time или DT) в режиме симуляции появится окно, в котором можно ввести значение в формате T#0d0h0m0s0ms (для time) или DT#2000-01-01-0:00:00 (для dt), и, если необходимо, зафиксировать значение.

![4 82](https://docs.owen.ru/book_img/2379/155037.png)

*Изменение значения переменной time*

> [!NOTE]
> **Примечание.** Время пересчитывается автоматически после нажатия кнопки **Принять**. Например, введенное значение переменной T#80m при повторном открытии окна **Изменение значения** примет вид T#1h20m.

В случае ввода некорректного значения или отсутствия значения появится сообщение об ошибке. Кнопка **Принять** будет неактивна.

![4 83](https://docs.owen.ru/book_img/2379/155036.png)

*Ошибка ввода значения*

Для ввода значений в элементах массива нажмите ЛКМ на окно просмотра с надписью **Изменить**:

- если индекс элемента задается константой или с помощью переменной, то появится окно Изменение значения для конкретного элемента массива;

- если индекс элемента массива задается как результат математического выражения или как результат функции/функционального блока, появится окно со всеми элементами данного массива и значениями переменных, доступными для ввода:

  ![4 84](https://docs.owen.ru/book_img/2379/155035.png)

  *Изменение значений элементов массива с переменными real*

  ![4 85](https://docs.owen.ru/book_img/2379/155034.png)

  *Изменение значений элементов массива с переменными bool*

  ![4 86](https://docs.owen.ru/book_img/2379/155033.png)

  *Изменение значений элементов массива с переменными dt*

В случае ввода некорректного значения или отсутствия значения появится сообщение об ошибке. Кнопка **Принять** будет неактивна.

![4 87](https://docs.owen.ru/book_img/2379/155032.png)

*Ошибка ввода значения*

<a id="topic-122327"></a>

### Настройка порта и подключение прибора

Чтобы открыть окно **Настройки порта**, следует выбрать в главном меню **Прибор → Настройки порта** или нажать на индикатор **COM** в [строке состояния](#topic-122304).

В окне **Настройка порта** выбирается номер используемого COM-порта и адрес подключаемого прибора, остальные настройки фиксированные и выводятся для справки.

![portset 02](https://docs.owen.ru/book_img/2379/36887.png)

#### <a id="connection"></a>Подключение прибора по USB

Для подключения прибора к ПК через порт USB следует:

1. Установить драйвер USB, который можно скачать на сайте [www.owen.ru](https://www.owen.ru).

2. Подключить прибор к ПК и включить питание (если требуется). В зависимости от модели прибора для соединения используется комплект для программирования ПР-КП20 или кабель для программирования из комплекта поставки прибора. Номер эмулируемого COM-порта можно узнать в Диспетчере устройств ОС Windows.

   ![portset 03](https://docs.owen.ru/book_img/2379/36886.png)

   ![portset 01](https://docs.owen.ru/book_img/2379/36885.png)

3. В окне **Настройка порта** в выпадающем списке **Тип подключения** выбрать **Последовательный порт**.

4. Ввести номер COM-порта и адрес прибора (по умолчанию – **16**) в окне **Настройка порта** и нажать **ОК**. Если подключение корректно, то в строке состояния отобразится наименование подключенного прибора.

#### Подключение прибора по Ethernet/Wi-Fi

Для подключения прибора к ПК по интерфейсу Ethernet или с помощью Wi-Fi следует:

1. Подключить прибор к той же локальной сети, в которой находится ПК.

2. Узнать IP-адрес подключенного прибора. IP-адрес по умолчанию указан в *Руководстве по эксплуатации* прибора. Текущий IP-адрес прибора можно посмотреть с помощью Owen Configurator.

3. В окне **Настройка порта** в выпадающем списке **Тип подключения** выбрать **Ethernet/Wi-Fi**.

   ![Ethernet Wifi](https://docs.owen.ru/book_img/2379/73400.png)

4. Ввести IP-адрес подключенного прибора в графе **IP адрес** и нажать **ОК**. Если подключение корректно, то в строке состояния отобразится наименование подключенного прибора.

<a id="topic-122328"></a>

### Запись программы в прибор

#### Запись программы в прибор

> [!WARNING]
> **Внимание.** Если в подключенном приборе уже есть ранее записанная программа, то она заменяется новой.

Созданная программа записывается в ПЗУ прибора.

Для записи программы в прибор следует:

1. [Подключить](#connection) прибор к ПК.

2. Подать питание на прибор, если требуется.

3. Настроить параметры соединения, если в этом есть необходимость.

4. Записать программу в прибор, нажав кнопку ![upload](https://docs.owen.ru/book_img/2379/36741.png) на панели инструментов или выбрав в главном меню **Прибор → Записать программу в прибор**.

   > **Примечание.** Перед записью программы Owen Logic проверяет совместимость с версией встроенного ПО прибора. Если они не совпадают, то запустится [обновление встроенного ПО](#topic-122437) прибора, затем программа запишется в прибор.

![Запись](https://docs.owen.ru/book_img/2379/46314.png)

Если записывается программа с настройками для другой модели прибора, то появится следующее сообщение:

![4 93](https://docs.owen.ru/book_img/2379/155031.png)

Если прибор защищен паролем (см. раздел [Пароль](#topic-122350)), то для записи программы в прибор требуется ввести пароль.

![ввод при записи](https://docs.owen.ru/book_img/2379/74938.png)

Соответствующее уведомление появится во время подключения прибора к ПК. Введение пароля требуется только один раз на все время сессии работы с Owen Logic. Для повторной записи программы (даже после подсоединения заново прибора к ПК) введение пароля не потребуется.

![Пароль](https://docs.owen.ru/book_img/2379/147576.png)

> [!NOTE]
> **Примечание.** Сразу после записи прибор переходит в рабочий режим и программа запускается автоматически.

#### <a id="topic-122328--offline"></a>Переключение Owen Logic в режим OFFLINE

Режим OFFLINE следует использовать, если в двух или более приложениях Owen Logic на одном ПК настроена передача данных в один прибор. Приложения будут поочередно занимать порт, загрузка в прибор в таком случае прервется.

Приложения, которые не должны осуществлять загрузку, следует перевести в режим OFFLINE.

Режим OFFLINE включается/выключается кликом по имени прибора в [строке состояния](#topic-122304) или в главном меню **Сервис → Режим OFFLINE**.

<a id="topic-122329"></a>

### Онлайн отладка

Режим онлайн отладки предназначен для тестирования программы в режиме реального времени с фактическими значениями со входов прибора. Онлайн отладка проводится только с подключенным к ПК прибором. В режиме онлайн отладки внесение изменений в проект невозможно.

#### Последовательность и правила работы в режиме онлайн отладки

Онлайн отладку можно проводить только после загрузки программы в прибор. Программа в приборе должна соответствовать программе на схеме проекта. В приборе должна быть соответствующая версия [встроенного ПО](#topic-122437).

Для проведения онлайн отладки следует:

1. Запустить онлайн отладку нажатием на кнопку ![online debug](https://docs.owen.ru/book_img/2379/50212.png) на панели инструментов — откроется панель онлайн отладки.

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

   ![Онлайн-отладка скрин](https://docs.owen.ru/book_img/2379/158446.png)

3. Для внесения корректировок выйти из режима онлайн отладки нажатием на кнопку ![online debug](https://docs.owen.ru/book_img/2379/50212.png).

Онлайн отладка доступна только для схемы проекта (для проверки работы макросов, функций и функциональных блоков на языке ST следует использовать [режим симуляции](#topic-122324)).

#### Ручное задание значений

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

![Окно изменения значения](https://docs.owen.ru/book_img/2379/158445.png)

Для переменной типа массив возможен ввод значения всех элементов массива:

![Изменение значений массива](https://docs.owen.ru/book_img/2379/158444.png)

Введенные значения элемента переменной типа массив в окне "Изменение значения" выделяются оранжевым цветом:

![Массив с изменением элемента оранжевый](https://docs.owen.ru/book_img/2379/158443.png)

#### Отображение значений на схеме

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

![online input2](https://docs.owen.ru/book_img/2379/58092.png)

Если зафиксировать заданное значение, то оно будет действовать каждый рабочий цикл до изменения вручную на другое, или до отключения фиксации. Фиксация значений отключается в случае выхода из режима онлайн отладки. Для переменных типа массив доступна фиксация одного, нескольких или всех значений элементов массива. Зафиксированное значение (для массивов - фиксация значений всех элементов) отображается на схеме плашкой синего цвета:

![fixated](https://docs.owen.ru/book_img/2379/58100.png)

В случае, если зафиксировать значение одного или нескольких элементов массива (не всех), то плашка отображается белого цвета с синей рамкой:

![Значение элементов зафиксировано](https://docs.owen.ru/book_img/2379/158442.png)

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

![Онлайн-отладка входных блоков](https://docs.owen.ru/book_img/2379/158441.png)

#### Устранение неполадок

В случае обрыва связи с прибором режим онлайн отладки отключится через 10 секунд, и прибор перейдет в рабочий режим. Если успеть восстановить связь, то онлайн отладка продолжится, но ранее зафиксированные значения будут отключены.

![re](https://docs.owen.ru/book_img/2379/58188.png)

#### Предел передаваемых значений

Для каждой модификации прибора есть свой предел буфера памяти, используемого для передачи данных в режиме онлайн отладки. Если на схеме отображаются пустые плашки, значит срабатывает ограничение, и следует увеличить масштаб схемы, чтобы уменьшить количество отображаемых значений в окне схемы. Зафиксированные значения остаются зафиксированными, даже если не отображаются в окне схемы, и продолжают занимать буфер памяти. Если буфер памяти прибора будет полностью заполнен, то при нажатии на пустую плашку окно "Изменение значения" не откроется. Вместо него появится информационное сообщение о превышении лимита отображаемых значений:

![Препдупреждение лимит значений](https://docs.owen.ru/book_img/2379/158440.png)

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

![Одно зафиксированное значение массива](https://docs.owen.ru/book_img/2379/159567.png)

> [!NOTE]
> **Примечание.** Отключение фиксации элементов массива не всегда уменьшает объем занимаемой памяти. В некоторых случаях (из-за особенностей внутреннего выделения буфера) снятие фиксации может привести к увеличению занимаемой памяти.

Если при попытке отключить фиксацию возникает риск переполнения буфера, кнопка **Принять** становится недоступной. В окне **Изменение значения** появляется предупреждающий маркер. При наведении на него курсора отображается сообщение с рекомендацией изменить количество зафиксированных элементов.

![Зафиксированнное значение массива](https://docs.owen.ru/book_img/2379/159566.png)

<a id="topic-122330"></a>

### Сведения о проекте

Для запуска окна **Сведения о проекте** следует выбрать в главном меню **Файл → Сведения о проекте…**.

#### Вкладка «Общие»

На вкладке **Общие** содержится информация о версиях Owen Logic, в которых создавался и изменялся проект.

![prj nfo](https://docs.owen.ru/book_img/2379/36760.png)

#### Вкладка «Алгоритм»

На вкладке **Алгоритм** можно указать и посмотреть информацию о группе, номере и версии программы для отображения в окне [информации](#topic-122435) о подключенном приборе после записи.

![prj nfo 02](https://docs.owen.ru/book_img/2379/36759.png)

- **Группа** – определяет группу (семейство) алгоритмов;
- **Номер** – определяет номер и позволяет отличать схожие алгоритмы в рамках группы;
- **Версия** – определяет версию алгоритма. Рекомендуется для задания версии использовать формат [Semantic Versioning](https://semver.org/lang/ru/).

Для приборов [второго поколения](#topic-122295) доступен параметр **Имя**.

![algorythhm new](https://docs.owen.ru/book_img/2379/134537.png)

<a id="topic-122331"></a>

### Менеджер компонентов

Менеджер компонентов служит для загрузки в проект компонентов из онлайн-базы компании ОВЕН (требует подключение к Интернету) и управления компонентами, которые хранятся на ПК.

Для запуска менеджера компонентов следует выбрать в главном меню **Файл → Менеджер компонентов**.

#### Вкладка «Онлайн-база»

На вкладке **Онлайн-база** отображается список компонентов из онлайн-базы компании ОВЕН.

![4 104](https://docs.owen.ru/book_img/2379/155047.png)

Выпадающее меню **Компоненты** позволяет отфильтровать список по типу:

![4 105](https://docs.owen.ru/book_img/2379/155046.png)

Макросы дополнительно разделены на категории в зависимости от назначения:

![macros 15v2](https://docs.owen.ru/book_img/2379/36775.png)

Полное описание компонента можно прочитать, выделив его в списке. Описание компонента отображается в правой части окна. Для отображения полной документации к компоненту требуется Acrobat Reader.

![4 107](https://docs.owen.ru/book_img/2379/155045.png)

Чтобы компоненты стали доступны без подключения к Интернету, следует их отметить галочкой и нажать кнопку **Загрузить в локальную библиотеку** – компоненты загрузятся в локальное хранилище и будут отображаться во вкладке **Библиотека**.

Чтобы сразу загрузить компоненты в текущий проект, следует их отметить галочкой и нажать кнопку **Загрузить в библиотеку проекта** – компоненты будут добавлены в панель **Библиотека компонентов** в раздел **Макросы проекта**.

Успешная загрузка компонентов в локальное хранилище или текущий проект будет отображена в списке зеленой галочкой в графах **Библиотека** и **Проект** соответственно.

Для подключения сетевого шаблона к конфигурации прибора следует воспользоваться рекомендациями раздела [Сетевые шаблоны устройств](#topic-122347).

#### Вкладка «Библиотека»

На вкладке **Библиотека** отображается содержимое локального хранилища компонентов на ПК пользователя. Для загрузки компонентов в текущий проект следует выделить необходимые компоненты и нажать кнопку **Загрузить в библиотеку проекта** – компоненты будут добавлены в панель **Библиотека компонентов** в раздел **Макросы проекта**. Успешная загрузка компонентов в текущий проект будет отображена в списке зеленой галочкой в графе **Проект**.

> [!NOTE]
> **Примечание.** **Загрузить в библиотеку проекта** компонент, содержащий массивы возможно начиная с версии Owen Logic3.0.

![4 108](https://docs.owen.ru/book_img/2379/155044.png)

> [!NOTE]
> **Примечание.** Локальное хранилище компонентов располагается по адресу: *C:\\Users\\\[имя пользователя\]\\Documents\\Owen Logic\\Library\\*

Менеджер компонентов поддерживает следующие функции управления компонентами:

- ![Импорт](https://docs.owen.ru/book_img/2379/45070.png)

  – импорт файла в локальное хранилище;

- ![Экспорт](https://docs.owen.ru/book_img/2379/45071.png)

  – экспорт файла из локального хранилища;

- ![Удаление](https://docs.owen.ru/book_img/2379/45072.png)

  – удаление выбранных компонентов.

#### Импорт компонента

#### **Ограничения при импорте** компонентов в более ранние версии Owen Logic

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

Для импорта компонента следует:

1. Нажать кнопку ![Импорт](https://docs.owen.ru/book_img/2379/45070.png).
2. В появившемся окне выбрать файлы для импорта.
3. Нажать кнопку **Открыть**. Файлы отобразятся на вкладке **Библиотека**.

При импорте компонента, содержащего функционал, неподдерживаемый в версии, в которую осуществляется импорт:

- В версию Owen Logic 2.11.370 и выше — компонент будет загружен, но отобразится в **Менеджере компонентов** с ограничениями. В описании будет указана версия Owen Logic, начиная с которой поддерживается работа компонента.
- В версию Owen Logic ниже 2.11.370 — компонент будет загружен, однако при выборе его в библиотеке откроется окно с сообщением об ошибке.

При выполнении любых операций с такими компонентами будут отображаться ошибки. Использование в проекте компонентов, не поддерживаемых в текущей версии Owen Logic, невозможно.

#### Экспорт компонента

С помощью экспорта можно сохранить на ПК компоненты для дальнейшего изменения или передачи.

Для экспорта компонента следует:

1. Отметить галочкой необходимый компонент во вкладке **Библиотека**.
2. Нажать кнопку ![Экспорт](https://docs.owen.ru/book_img/2379/45071.png).
3. В появившемся окне выбрать путь для экспорта.
4. Нажать кнопку **ОК**. Компонент сохранится в виде файла по указанному пути.

#### Прочее

Для документации к компоненту доступны функции в соответствии с установленной версией Acrobat Reader, в том числе сохранение файла в формате pdf и печать.

Для отображения результатов операций в менеджере компонентов следует нажать кнопку ![mc009](https://docs.owen.ru/book_img/2379/38219.png) – в нижней части окна раскроется строка сообщений.

![mc010](https://docs.owen.ru/book_img/2379/38218.png)

<a id="topic-122332"></a>

### Работа с макросами

Макрос – это пользовательский алгоритм для использования в проекте.

Основные действия с макросами:

- **сохранение** в [Библиотеке компонентов](#topic-122358) для дальнейшего использования в проекте;
- **экспортирование** в файл для использования в других проектах;
- **импортирование** созданных ранее макросов;
- **загрузка** из онлайн-базы в проект.

#### Создание макроса

Для создания макроса следует:

1. Выбрать в главном меню **Файл → Создать макрос**. В открывшемся диалоговом окне задать количество входов и выходов в макросе:

   ![macros 01](https://docs.owen.ru/book_img/2379/37143.png)

   > **Примечание.** Количество входов и выходов можно изменить после создания макроса

2. Разработать алгоритм работы макроса во вкладке **Редактор макросов**, аналогично разработке программы на схеме.

   ![4 111](https://docs.owen.ru/book_img/2379/155043.png)

   Количество входов и выходов можно увеличить с помощью контекстного меню редактора или с помощью кнопок ![macros-i+](https://docs.owen.ru/book_img/2379/37141.png) и ![macros-q+](https://docs.owen.ru/book_img/2379/37140.png).

   ![macros 05](https://docs.owen.ru/book_img/2379/37139.png)

   Чтобы удалить вход или выход, следует нажать по нему ПКМ и выбрать команду **Удалить**.

3. Задать имя и описание для макроса на панели свойств.

   ![macros 03](https://docs.owen.ru/book_img/2379/37138.png)

   Введенное имя будет указано в заголовке редактора макросов и на схеме.

4. Для определения типа и имени входов/выходов выбрать вход или выход и настроить его на панели свойств.

   ![macros 04](https://docs.owen.ru/book_img/2379/37167.png)

5. Далее можно задать «видимость» из программы уставок ФБ, использованных в макросе.

   ![macros 06](https://docs.owen.ru/book_img/2379/37166.png)

   Чтобы уставки выбранного ФБ были доступны во время использования ФБ в программе, следует настроить на панели свойств блока параметр **Использование в макросе – Да**.

   После выбора варианта **Да** появится выпадающий список **Переименование переменных** с перечислением доступных переменных. Например, для ФБ BLINK:

   ![macros 06-1](https://docs.owen.ru/book_img/2379/37165.png)

6. После создания макроса запустить [режим симулятора](#topic-122324) и проверить логику его работы.

7. Перед сохранением макроса можно заполнить поля: **Имя**, **Описание**, **Автор**, **Имя группы** и **Пароль доступа**.

   ![macros 06-2](https://docs.owen.ru/book_img/2379/37164.png)

   Рекомендуется задавать недлинное и понятное имя макроса. Содержимое поля **Описание** отображается под изображением макроса в панели **Библиотека компонентов**.

   Если пароль не задан (поле **Пароль** не заполнено), то доступ к редактированию макроса открыт для всех.

   Если не заполнено поле **Имя группы**, то макрос сохраняется в библиотеке проекта в группе **Другие**.

   Макрос можно сохранить, выбрав в главном меню **Файл → Сохранить макрос как** или нажав на кнопку ![hxds](https://docs.owen.ru/book_img/2379/36747.png) на панели редактора макросов.

   Сохраненный макрос доступен только для открытого проекта, для открытия макроса в других проектах его следует экспортировать.

8. Выбрать раздел **Макросы проекта** на панели **Библиотека компонентов** и перенести макрос на холст проекта.

   ![macros 08](https://docs.owen.ru/book_img/2379/37145.png)

#### Создание макроса на схеме

Макрос можно создать, выделив элементы на схеме проекта и выбрав в контекстном меню **Создать макрос**. На месте элементов появится блок макроса.

![macros3](https://docs.owen.ru/book_img/2379/50166.png)

Входы и выходы макроса именуются согласно подсоединенным во время создания макроса элементам и блокам. Если к выходу макроса присоединено несколько элементов, то выход именуется по умолчанию (*Qn*, где *n* – порядковый номер выхода макроса).

![Входы выходы макроса](https://docs.owen.ru/book_img/2379/74455.png)

Созданный макрос и названия входов/выходов можно отредактировать в **редакторе макросов**, выбрав в контекстном меню блока **Редактировать макрос**.

Количество входов и выходов макроса будет соответствовать количеству соединенных входных и выходных связей в выделенном участке схемы. В случае выделения элементов без связей создается макрос с одним входом и выходом.

Элементы, не попадающие в макрос при создании на схеме:

- входы и выходы;
- сервисные переменные;
- сетевые переменные;
- ПИД-регулятор PID.

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

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

Если при создании макроса в выделенную область попадает входной и выходной блок [**задействованной**](#topic-122352) переменной, то внутри макроса будет создана переменная, наследующая все свойства выделенной переменной: тип, энергонезависимость, значение по умолчанию. Имя сформируется на основе имени исходной переменной, в конце имени добавится апостроф (').

![Переменная со штрихом](https://docs.owen.ru/book_img/2379/156137.png)

Те же правила применяются в случае, если при создании макроса в выделенную область попадает:

- входной и выходной блок **задействованного** элемента массива;
- входной и выходной блок массива, содержащего хотя бы один **задействованный** элемент;
- входной/выходной блок массива, содержащего хотя бы один **задействованный** элемент, и входной/выходной блок элемента **задействованного** массива.

Имя элемента массива сформируется с применением следующего форматирования: квадратные скобки (\[ \]) будут заменены на фигурные ({ }), и в конце имение добавится апостроф (').

**Пример**

Mass_1\[0\] → Mass_1{0}'

Если при создании макроса в выделенную область попадает входной блок массива и входные блоки с элементами этого массива, то в макросе будет создан только один вход типа массив, с именем этого массива:

![Создание макроса](https://docs.owen.ru/book_img/2379/156136.png)

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

![Создание макроса1](https://docs.owen.ru/book_img/2379/156135.png)

> [!NOTE]
> **Примечание.**

#### Обновление макроса в программе

Если у используемого в программе макроса были изменены имя, тип, количество входов/выходов или добавлен элемент (переменная, константа) со свойством **Использование в макросе – Да**, то Owen Logic потребует его обновить и отметит цветом на холсте. Макрос считается измененным после сохранения правок в **Редакторе макросов**.

![Работа с макросами 1](https://docs.owen.ru/book_img/2379/161477.png)

Для обновления макроса на холсте следует:

1. Нажать по отмеченному цветом макросу ПКМ и в появившемся меню выбрать **Обновить макрос**.

   ![Работа с макросами2](https://docs.owen.ru/book_img/2379/147274.png)

   > **Примечание.** В случае вложенного макроса Owen Logic предложит перейти к нему. Действия с вложенным макросом аналогичны.

2. После обновления макроса Owen Logic автоматически перейдет к следующему макросу, требующему обновления.

Макрос обновляется в проекте по следующим правилам:

- если в макросе изменен тип или имя входа/выхода с присоединенной связью, при обновлении связь будет разорвана;
- если в макрос добавлены входы/выходы, при обновлении связи уже существующих входов/выходов не разрываются.

> [!NOTE]
> **Примечание.** Owen Logic идентифицирует связи с входами/выходами макроса по имени и типу. Если в макросе изменить имя или тип входа/выхода с присоединенной связью и создать новый вход/выход с таким же именем и типом, то при обновлении макроса Owen Logic автоматически пересоединит связь к новому входу/выходу.

#### Быстрая замена макроса

Если необходимо заменить макрос на другой из макросов проекта, следует нажать кнопку **Заменить элемент** в контекстном меню макроса.

![Работа с макросами3](https://docs.owen.ru/book_img/2379/147273.png)

Откроется окно «Заменить макрос».

![macros window](https://docs.owen.ru/book_img/2379/60329.png)

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

#### Экспорт макроса

Экспортировать макрос в файл возможно только при открытом окне редактора макроса. Для экспорта макроса следует выбрать в главном меню **Файл → Экспорт в файл**.

Для экспорта макроса из панели библиотеки компонентов следует:

1. Открыть макрос в редакторе.

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

2. Выбрать в главном меню **Файл → Экспорт в файл**.

   ![macros 11v2](https://docs.owen.ru/book_img/2379/37163.png)

3. В открывшемся окне выбрать место расположения и сохранить файл макроса с расширением \**.tpl*. После сохранения отобразится сообщение об успешном экспорте макроса.

#### Импорт макроса

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

Для импорта макроса следует выбрать в главном меню **Файл → Импорт из файла**.

> [!NOTE]
> **Примечание.** Пункт **Импорт из файла** активен только при фокусе на редакторе схемы.

![macros 10v2](https://docs.owen.ru/book_img/2379/37162.png)

В открывшемся окне выбрать нужный файл и нажать кнопку **ОК**. Макрос будет добавлен в панель **Библиотека компонентов** в раздел **Макросы проекта**, теперь его можно использовать в проекте.

> [!NOTE]
> **Примечание.** Импорт макросов, содержащих переменные типа массив или элементы массивов возможен в версии Owen Logic 3.0 и выше.

#### Копирование макроса

Макрос можно скопировать из проекта в проект для повторного использования и сокращения времени на разработку. Для копирования макроса следует выделить блок макроса в исходном проекте и нажать кнопку ![Копировать](https://docs.owen.ru/book_img/2379/44699.png) на панели инструментов или выбрать команду **Копировать** в контекстном меню блока. Макрос вставляется в другой проект нажатием на кнопку ![Paste](https://docs.owen.ru/book_img/2379/36744.png) на панели инструментов или с помощью выбора команды **Вставить** в контекстном меню холста. Для копирования и вставки также можно воспользоваться сочетаниями клавиш, см. раздел [Сочетания клавиш](#topic-122448).

После вставки, макрос будет доступен в разделе **Макросы проекта** на панели Библиотека компонентов.

> [!NOTE]
> **Примечание.** Вставка макросов, содержащих переменные типа массив или элементы массивов возможна в версии Owen Logic 3.0 и выше.

<a id="topic-122333"></a>

### Работа с элементами на языке ST

<a id="topic-122334"></a>

#### Работа с функциями на языке ST

В Owen Logic доступно создание пользовательских функций на языке ST (кроме приборов линейки ПР100 — исключая \[М02\]).

> [!IMPORTANT]
> **Предупреждение.** Функции на ST резервируют место в памяти ПЗУ после их добавления в библиотеку проекта, независимо от того используются они в проекте или нет.

##### Создание функции

Для создания функции следует:

1. Выбрать на панели инструментов кнопку ![Кнопка Создать функцию](https://docs.owen.ru/book_img/2379/152464.png)**Создать функцию на ST**. Откроется вкладка “Редактор функции”.

   ![Редактор функции на ST](https://docs.owen.ru/book_img/2379/146067.png)

   > **Примечание.** По умолчанию первые одиннадцать строк редактора заполнены шаблоном функции.

2. Задать имя функции и тип выходных данных в первой строке редактора.

3. Задать необходимое количество входных переменных в блоке объявления входных переменных (**var_input**).

4. Задать необходимое количество локальных переменных в блоке объявления локальных переменных (**var**).

5. Разработать алгоритм работы функции в соответствии с синтаксисом языка ST.

   > **Примечание.** Подробнее см. [Язык программирования ST](#topic-122456).

6. Перейти во вкладку **Схема** или закрыть вкладку **Редактор функции**. Функция сохранится автоматически.

7. Выбрать раздел **Функции на ST** на панели **Библиотека компонентов** и перенести функцию на холст проекта.

   ![ST functions library](https://docs.owen.ru/book_img/2379/106287.png)

##### Редактор функции

![Редактор функции ST2](https://docs.owen.ru/book_img/2379/146066.png)

Элементы редактора функции:

- **Номера строк** — заполняется автоматически по количеству написанных строк кода.
- **Редактор кода** — область редактирования кода с функцией подсветки синтаксиса.
- **Список ошибок** — область отображения ошибок.

<a id="snip"></a>

##### Сниппеты

Для удобства написания кода в редакторе функций реализованы сниппеты. Сниппет — фрагмент кода программы, который вставляется в код автоматически. В случае введения первого символа в редакторе откроется контекстное меню с фокусом на первой строке. Для выбора сниппета используются клавиши управления курсором. Чтобы вставить выбранный сниппет в код, следует нажать клавишу **Enter** или **Tab** или дважды нажать ЛКМ по пункту списка.

![snippet](https://docs.owen.ru/book_img/2379/106285.png)

Список сниппетов формируется по группам:

- локальные переменные функции;
- конструкции (while, for и т. д.);
- выражения (true, false);
- встроенные функции;
- другие функции проекта.

Внутри групп сниппеты расположены по алфавиту.

<a id="navigation"></a>

##### Переход к месту объявления или использования

Для удобной работы с функциями и переменными доступен переход к местам их объявления или использования.

Для перехода к месту объявления:

1. Установить курсор на имя функции или переменной в коде программы.

2. Нажать ПКМ на имя функции или переменной.

3. В открывшемся контекстном меню выбрать пункт **Перейти к объявлению**.

   ![to declaration](https://docs.owen.ru/book_img/2379/106284.png)

Для перехода к месту использования:

1. Установить курсор на имя функции или переменной в коде программы.

2. Нажать ПКМ на имя функции или переменной.

3. В открывшемся контекстном меню выбрать пукт **Перейти к месту использования**. Откроется список мест, в которых используется выбранная переменная или функция.

   ![To useplace](https://docs.owen.ru/book_img/2379/106283.png)

4. Нажать ЛКМ на выбранное место использования. Курсор переместится на строку, в которой используется функция или переменная.

<a id="rename"></a>

##### Переименование переменной или функции

Для удобной работы с именами функций и переменных доступно централизованное переименование.

Для переименования следует:

1. Установить курсор на имя функции или переменной в коде программы.

2. Нажать ПКМ на имя функции или переменной.

3. В открывшемся контекстном меню выбрать пункт **Переименовать**. Имя выделится зеленым во всех местах использования.

   ![rename](https://docs.owen.ru/book_img/2379/106282.png)

4. Ввести новое имя переменной в области объявления переменных.

   ![rename1](https://docs.owen.ru/book_img/2379/106301.png)

5. Переместить курсор на другую строку в редакторе функций. Переменная будет переименована во всех местах использования.

<a id="errors"></a>

##### Список ошибок

В области отображения ошибок формируется таблица с описанием и расположением ошибок, допущенных в коде. Для перехода в место ошибки следует дважды нажать ЛКМ по строке с ошибкой.

![errors](https://docs.owen.ru/book_img/2379/106925.png)

##### Экспорт функции на ST

Экспортировать функцию в файл возможно только при открытой вкладке редактора функции. Для экспорта функции следует выбрать в главном меню **Файл → Экспорт в файл**.

Для экспорта макроса из панели библиотеки компонентов следует:

1. Открыть функцию в редакторе.

2. Выбрать в главном меню **Файл → Экспорт в файл**.

   ![macros 11v2](https://docs.owen.ru/book_img/2379/37163.png)

3. В открывшемся окне выбрать место расположения и сохранить файл функции с расширением \**.fst*. После сохранения отобразится сообщение об успешном экспорте функции.

##### Импорт функции на ST

Если для создания программы требуется использовать функцию, созданную в другом проекте, то ее можно импортировать в проект.

Для импорта функции следует выбрать в главном меню **Файл → Импорт из файла**.

> [!NOTE]
> **Примечание.** Пункт **Импорт из файла** активен только при фокусе на редакторе схемы.

![macros 10v2](https://docs.owen.ru/book_img/2379/37162.png)

В открывшемся окне выбрать нужный файл и нажать кнопку **ОК**. Функция будет добавлен в панель **Библиотека компонентов** в раздел **Функции на ST**, теперь его можно использовать в проекте.

<a id="topic-122335"></a>

#### Работа с функциональными блоками на языке ST

Создание пользовательских функциональных блоков на языке ST не доступно для приборов линейки ПР100 (кроме \[М02\]).

##### Создание функционального блока

Для создания функционального блока следует:

1. Выбрать на панели инструментов кнопку ![Кнопка Создать фб](https://docs.owen.ru/book_img/2379/152465.png)**Создать функциональный блок на ST**. Откроется вкладка “Редактор функционального блока”.

   ![Редактор ФБ на ST](https://docs.owen.ru/book_img/2379/146065.png)

   > **Примечание.** По умолчанию первые пятнадцать строк редактора заполнены шаблоном функции.

2. Задать имя функционального блока в первой строке редактора.

3. Задать необходимое количество входных переменных в блоке объявления входных переменных (**var_input**).

4. Задать необходимое количество выходных переменных в блоке объявления входных переменных (**var_output**).

5. Задать необходимое количество локальных переменных в блоке объявления локальных переменных (**var**).

6. Разработать алгоритм работы функционального блока и в соответствии с синтаксисом языка ST.

   > **Примечание.** Подробнее см. [Язык программирования ST](#topic-122456).

7. Перейти во вкладку **Схема** или закрыть вкладку **Редактор функционального блока**. Функциональный блок сохранится автоматически.

8. Выбрать раздел **Функциональные блоки на ST** на панели **Библиотека компонентов** и перенести функцию на холст проекта.

   ![ФБ+библиотека компонентов](https://docs.owen.ru/book_img/2379/124627.png)

##### Редактор функционального блока

![Редактор ФБ на ST2](https://docs.owen.ru/book_img/2379/146064.png)

Элементы редактора функционального блока:

- **Номера строк** — заполняется автоматически по количеству написанных строк кода.
- **Редактор кода** — область редактирования кода с функцией подсветки синтаксиса.
- **Список ошибок** — область отображения ошибок.

> [!NOTE]
> **Примечание.** Аналогично редактору функции редактор функционального блока поддерживает функции [сниппетов](#snip), [отслеживания места объявления и использования](#navigation), [переименования](#rename) и [отслеживания ошибок](#errors).

##### Экспорт функционального блока на ST

Экспортировать функциональный блоке в файл возможно только при открытой вкладке редактора функционального блока. Для экспорта функционального блока следует выбрать в главном меню **Файл → Экспорт в файл**.

Для экспорта функционального блока из панели библиотеки компонентов следует:

1. Открыть функциональный блок в редакторе.

2. Выбрать в главном меню **Файл → Экспорт в файл**.

   ![macros 11v2](https://docs.owen.ru/book_img/2379/37163.png)

3. В открывшемся окне выбрать место расположения и сохранить файл функционального блока с расширением \**.fbst*. После сохранения отобразится сообщение об успешном экспорте функционального блока.

##### Импорт функционального блока на ST

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

Для импорта функционального блока следует выбрать в главном меню **Файл → Импорт из файла**.

> [!NOTE]
> **Примечание.** Пункт **Импорт из файла** активен только при фокусе на редакторе схемы.

![macros 10v2](https://docs.owen.ru/book_img/2379/37162.png)

В открывшемся окне выбрать нужный файл и нажать кнопку **ОК**. Функциональный блок будет добавлен в панель **Библиотека компонентов** в раздел **Функциональные блоки на ST**, теперь его можно использовать в проекте.

<a id="topic-122336"></a>

## Настройка прибора

Чтобы открыть окно настроек прибора нажмите кнопку ![devmgr 006](https://docs.owen.ru/book_img/2379/36739.png) на панели инструментов или выберите в главном меню **Прибор → Настройка прибора**.

![Setting device 02](https://docs.owen.ru/book_img/2379/36779.png)

В левой части окна настроек прибора содержится дерево с разделами:

- [Экран](#topic-122337);
- [Часы](#topic-122338);
- [Интерфейсы](#topic-122340);
- [Модули расширения](#topic-122348);
- [Входы и выходы](#topic-122349).

> [!NOTE]
> **Примечание.** Перечень разделов может отличаться для разных моделей приборов.

В правой части окна настроек прибора отображаются настройки выбранного раздела.

Все установленные настройки для прибора, за исключением часов, сохраняются вместе с проектом. Настройки прибора не требуют подключения прибора.

### Настройки для приборов второго поколения

Для приборов [второго поколения](#topic-122295) окно настроек прибора имеет другой интерфейс и содержит больше разделов. Параметры в правой части окна отображаются в табличном виде.

В левой части окна настроек прибора в дереве помимо основных групп доступны дополнительно настройки:

- [Ethernet](#topic-122342);
- [Подключение к OwenCloud](#topic-122351);
- [Пароль](#topic-122350);

![Настройки прибора](https://docs.owen.ru/book_img/2379/143106.jpg)

<a id="topic-122337"></a>

### Экран

Настройки экрана доступны только для приборов с дисплеем.

![display](https://docs.owen.ru/book_img/2379/36807.png)

Перечень параметров зависит от типа прибора.

**Подсветка экрана** — в выпадающем меню можно выбрать длительность работы подсветки с момента последнего действия пользователя.

**Яркость** — настройка яркости экрана, от 0 до 100 %.

**Контраст** — настройка контрастности отображаемых символов, от 0 до 100 %.

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

<a id="topic-122338"></a>

### Часы

В разделе **Часы** настраиваются часы реального времени прибора. Настройки часов реального времени требуются для работы системных переменных и ФБ программы.

![clock 01](https://docs.owen.ru/book_img/2379/36806.png)

#### Дата и время

Дата и время задаются в соответствующих полях.

Для синхронизации часов реального времени прибора с часами ПК следует отметить галочку **Синхронизация с компьютером** — поля **Дата** и **Время** станут неактивны.

![clock 02](https://docs.owen.ru/book_img/2379/36805.png)

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

#### Коррекция

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

![clock 03](https://docs.owen.ru/book_img/2379/36804.png)

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

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

#### Настройки для приборов второго поколения

> [!NOTE]
> **Примечание.** Список приборов второго поколения см. в разделе [О программе](#topic-122293).

Окно настройки часов для приборов второго поколения имеет другой интерфейс и не имеет коррекции времени (приборы аппаратно точнее). Настройка часового пояса требуется для корректного отображения местного времени, так как в приборе значение времени хранится в виде среднего времени по Гринвичу (GMT). Включение параметра **Установить часовой пояс компьютера** синхронизирует часы реального времени прибора с часами ПК.

![Часы новая платформа](https://docs.owen.ru/book_img/2379/73402.png)

<a id="topic-122339"></a>

### Обмен по сети

- [Интерфейсы](#topic-122340);
- [Modbus](#topic-122344)

<a id="topic-122340"></a>

#### Интерфейсы

В разделе **Интерфейсы** настраиваются параметры интерфейсов связи прибора c другими устройствами в сети.

Доступны следующие интерфейсы:

- [RS-485](#topic-122341);
- [Ethernet](#topic-122342);
- [LoRa](#topic-122343).

Для интерфейсов связи RS-485 и Ethernet обмен данными осуществляется по протоколу [Modbus](#topic-122344).

Обмен данными по интерфейсу LoRa осуществляется по протоколу LoRaWAN.

Добавление, замена и удаление интерфейса доступно для приборов [первого поколения](#topic-122295). В приборах [второго поколения](#topic-122295) все доступные интерфейсы находятся в дереве настроек.

##### Добавить интерфейс

Если у прибора доступно добавление интерфейса связи, то следует нажать ПКМ на раздел **Интерфейсы** в дереве настроек и выбрать **Добавить интерфейс**.

![Добавление интерфейса связи](https://docs.owen.ru/book_img/2379/159697.png)

Интерфейс будет добавлен в дерево с параметрами по умолчанию. Имя интерфейса состоит из номера занимаемого в приборе слота и режима интерфейса.

Интерфейс LoRa в приборах ПР102 и ПР200 может быть расположен только во втором слоте.

![Лора в дереве настройки](https://docs.owen.ru/book_img/2379/159696.png)

Количество интерфейсов связи для прибора не может превышать количество слотов в приборе.

##### Замена/удаление интерфейса

Для замены или удаления интерфейса следует нажать ПКМ на имя интерфейса в дереве настроек и выбрать необходимое действие.

![interface 05](https://docs.owen.ru/book_img/2379/36800.png)

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

> [!NOTE]
> **Примечание.** Добавление, замена и удаление интерфейсов у ПР100 недоступно.

<a id="topic-122341"></a>

##### RS-485

Для изменения параметров интерфейса его следует выбрать в дереве настроек.

###### Параметры интерфейса для приборов первого поколения

В правой части окна настроек прибора отобразятся параметры интерфейса.

![interfaces](https://docs.owen.ru/book_img/2379/36803.png)

**Номер слота** определяет какой слот прибора занимает интерфейс. При наличии в дереве настроек прибора интерфейса LoRa выбор слота для RS–485 недоступен.

**Режимы** интерфейса:

- [Slave](#topic-122346) – прибор является ведомым, значения которого опрашиваются другим устройством.
- [Master](#topic-122345) – прибор считывает и записывает значения ведомых устройств, подключенных по интерфейсу связи.

Кнопка ![make default](https://docs.owen.ru/book_img/2379/36815.png) **Сделать по умолчанию** — сохраняет введенные в поля данные как параметры по умолчанию.

Кнопка ![restore](https://docs.owen.ru/book_img/2379/36814.png)**Заводские настройки** — отображает в полях ввода заводские настройки для модели подключенного прибора.

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

> [!NOTE]
> **Примечание.** Параметры «Протокол» и «Интервал между запросами» активны только в режиме Master.

Кнопка **Прочитать** считывает текущие параметры подключенного прибора.

После задания параметров интерфейса следует нажать кнопку **Закрыть**. Параметры вступают в силу после перезагрузки прибора по питанию или после загрузки программы в прибор.

###### Параметры интерфейса для приборов второго поколения

> [!NOTE]
> **Примечание.** Список приборов второго поколения см. в разделе [О программе](#topic-122293).

Для приборов второго поколения параметры интерфейса находятся в разделе **Настройки порта RS-485** в дереве настроек. В правой части окна настроек прибора отображаются параметры интерфейса. Окно настроек имеет вид как на рисунке ниже.

![RS-485 new](https://docs.owen.ru/book_img/2379/74454.png)

Список параметров интерфейса зависит от прибора.

Выберите из выпадающего списка или введите значения параметров в столбце **Значение**. В столбце **Переменная** возможна привязка переменной к параметру.

**RSDL** – задержка ответа прибора по сети RS-485.

<a id="topic-122342"></a>

##### Ethernet

Настройки Ethernet доступны для приборов второго поколения в меню **Настройки Ethernet** в разделе **Сетевые настройки** дерева настроек.

![Ethernet](https://docs.owen.ru/book_img/2379/73426.png)

В окне настроек отображаются текущие сетевые параметра прибора, а также задаются новые.

После записи настроек с новым IP-адресом прибор следует перезагрузить.

> [!NOTE]
> **Примечание.** После задания нового IP-адреса прибору потеряется соединение с ПК. Для нового соединения нужно указать новый IP-адрес (см. [Настройка порта и подключение прибора](#topic-122327)).

<a id="topic-122343"></a>

##### LoRa

Настройки LoRa доступны только для модификаций приборов с модулем LoRa, и располагаются в дереве настроек: раздел **Интерфейсы** → подраздел **Lora**. Обмен данными по интерфейсу LoRa осуществляется по протоколу LoRaWan. Программируемое реле выступает в роли конечного узла сети LoRaWan.

###### Параметры радиосети

Настройки интерфейса LoRa и параметров подключения сети LoRaWAN задаются на вкладке **Параметры радиосети**.

**Тип подключения** — выбор типа подключения OTAA/ABP.

- **OTAA** — подключение к сети с настройками, получаемыми от сервера;
- **ABP** — подключение к сети с параметрами настройки, заданными вручную.

**Регион** — выбор частотного плана, в соответствии с региональными параметрами LoRaWAN.

**Начальная скорость** — коэффициент расширения спектра, определяет скорость передачи данных, дальность связи и помехоустойчивость. DR5 (SF7, 5.47кБ) - максимальная скорость, минимальная дальность; DR0 (SF12, 0.25кБ) - минимальная скорость, максимальная дальность. Перечень доступных скоростей зависит от выбранного региона.

**Задержка на отправку, сек** — время задержки (в секундах) перед отправкой пакетов. Позволяет отложить передачу после формирования посылки.

**Адаптивный режим** — при включении автоматически изменяет параметр **Начальная скорость** на оптимальный, в зависимости от качества связи. Указанная **Начальная скорость** используется как стартовое значение, с которого начинается выбор оптимального режима.

**Наличие подтверждения передачи** — при включении устройство ожидает подтверждение от сервера о получении пакета. При отсутствии подтверждения выполняет повторную передачу.

**Формирование сообщения при пропадании питания** — при включении параметра устройство будет отправлять сообщение на сервер при пропадании питания.

###### OTAA

![Окно Настройка прибора](https://docs.owen.ru/book_img/2379/161861.png)

**Идентификатор приложения (AppEUI)** — уникальный идентификатор приложения (64 бита). Шестнадцатеричный код, по которому устройство идентифицирует приложение, принимающее и обрабатывающее данные с устройства.

**Идентификатор устройства (DevEUI)** — уникальный идентификатор конечного устройства (64 бита). Шестнадцатеричный код, по которому сеть идентифицирует устройство при подключении.

**Ключ шифрования (AppKey)** — уникальный ключ (128 бит). Предназначен для шифрования информации, которая будет передаваться по сети. Должен храниться конфиденциально и совпадать на устройстве и на стороне сервера.

###### ABP

![ABP](https://docs.owen.ru/book_img/2379/161845.png)

**Идентификатор устройства (DevEUI)** — уникальный идентификатор конечного устройства (64 бита). Шестнадцатеричный код, по которому приложение идентифицирует устройство при подключении.

**Адрес устройства (DevAddr)** — локальный сетевой адрес устройства. Используется для маршрутизации сообщений и идентификации устройства в ходе обмена данными.

**Сеансовый ключ шифрования (NwkSKey)** — сетевой сеансовый ключ (128 бит). Шестнадцатеричный код, применяемый для шифрования/расшифровки данных между устройством и сетевым сервером.

**Сеансовый ключ приложения (AppSKey)** — прикладной сеансовый ключ (128 бит). Шестнадцатеричный код, используемый для шифрования/расшифровки данных между устройством и сетевым сервером, в течение конкретной сессии связи.

Кнопка **Прочитать** — считывает все текущие параметры подключенного прибора.

Кнопка **Закрыть** — записывает введенные параметры в прибор и закрывает окно Настройки прибора. Параметры вступают в силу после перезагрузки прибора по питанию или после загрузки программы в прибор.

###### Сетевые (пользовательские) параметры

![Сетевые параметры](https://docs.owen.ru/book_img/2379/161864.png)

**Период опроса, мс** — временной интервал, через который повторяется опрос.

**Таймаут ответа, мс** — время, по истечении которого попытка опроса считается неудачной.

**Количество попыток** — количество повторов запросов, при отсутствии ответа от опрашиваемого устройства.

**Статус подключения** — указание булевской переменной, в которую записывается статус подключения прибора: 1 — связь с устройством установлена, 0 — связь с устройством потеряна. Переменная выбирается в таблице переменных, которая вызывается нажатием кнопки «...»;

Для модуля LoRa групповой опрос не поддержан.

###### Пользовательские переменные

Чтобы добавить переменную, нажмите на кнопку ![Кнопка Добавить переменную](https://docs.owen.ru/book_img/2379/159694.png). Переменная будет добавлена в таблицу, как на рисунке ниже.

![Пользовательские переменные](https://docs.owen.ru/book_img/2379/161863.png)

Переменным, добавленным в интерфейс Lora, к имени автоматически добавляется постфикс:

- \_R — если в свойствах переменной выбрана функция чтения;
- \_W — если в свойствах переменной выбрана функция записи.

Чтобы создать несколько переменных со схожими настройками используйте тиражирование переменной. Подробнее **Тиражирование переменных** описано в разделе [Режим Slave](#topic-122346).

Для удаления из таблицы следует выделить необходимую переменную и нажать кнопку ![Кнопка Удалить переменную](https://docs.owen.ru/book_img/2379/159692.png)

###### Свойства переменной прибора

Свойства переменной прибора настраиваются справа от таблицы.

![Свойства переменной прибора](https://docs.owen.ru/book_img/2379/161862.png)

- **Имя переменной** — имя переменной прибора (задает пользователь);
- **Тип** — тип переменной прибора: целочисленный или с плавающей запятой;
- **Регистр** — адрес регистра переменной прибора (задает пользователь). Диапазон доступных адресов указан в руководстве по эксплуатации прибора;
- **Функция чтения/функция записи** — отключение или выбор функции чтения/записи;
- **Количество регистров** (только для целочисленных переменных) — количество занимаемых переменной регистров: 1 или 2;
- **По команде** — указание булевской переменной, по изменению которой происходит запуск чтения/записи;
- **Статус** — назначается целочисленная переменная, в которую будет записан [код ошибки](#topic-122344), в случае ее появления. Переменная выбирается в таблице переменных, которая вызывается нажатием кнопки «...»;
- **Запись по изменению** (отображается только при выборе "Функция записи" = "Да") — если эта функция активирована, то в случае изменения значения переменной мастер инициирует запись значения переменной в Slave-устройство;
- **Комментарий** — текстовое описание переменной для отображения в таблице переменных.

<a id="topic-122344"></a>

#### Работа по протоколу Modbus

##### Общие сведения

Для устройств в режиме Master необходимо выбрать протокол в [настройках](#topic-122345).

| Modbus Master | ПР200, ПР100, ПР102, ИПП120<br>Первое поколение | ПР225, ПР205, ПР103<br>Второе поколение |
| --- | --- | --- |
| Поддерживаемые протоколы | Modbus RTU, Modbus ASCII (выбирается пользователем) | Modbus RTU, Modbus ASCII (выбирается пользователем)<br>Modbus TCP |
| Максимальное количество slave-устройств | 16 для каждого интерфейса | 32 для всех интерфейсов |
| Максимальное количество запросов | 255 переменных для каждого устройства<br>Одна переменная в зависимости от настроек может соответствовать запросу чтения, запросу записи или запросу чтения и записи одновременно | 192, начиная с версии Owen Logic 2.7.349 и версий прошивок: ПР205: 1.5.0, ПР103: 1.7.0 64 (в более ранних версиях ПО)<br>Одна переменная в зависимости от настроек может соответствовать либо запросу чтения, либо запросу записи |
| Поддержка групповых запросов | Поддерживается, начиная с версии Owen Logic 2.11 и версий прошивок: ПР100: 3.08, ПР100 \[М02\]: 2.70, ПР102: 2.70, ПР200: 2.73, ИПП120: 2.73. Количество регистров в запросе – до 48 (настраиваемо) | Поддерживается, начиная с версии Owen Logic 2.10 и версий прошивок: ПР225: 1.9.0, ПР205: 1.9.0, ПР103: 1.11.0 Количество регистров в запросе – до 16 (настраиваемо) |
| Поддерживаемые функции Modbus | 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0F, 0x10 | 0x01, 0x02, 0x03, 0x04, 0x06, 0x0F, 0x10 |
| Поддерживаемые типы данных | Bool, Uint16, Uint32, Float | Bool, Uint16, Uint32, Float |
| Поддержка изменения порядка байт/регистров | Поддерживается, влияет только на переменные типа Float и Uint32 | Поддерживается, влияет только на переменные типа Float и Uint32 |
| Поддержка широковещательного запроса (broadcast) | Отсутствует | Отсутствует |
| Поддержка шаблонов опроса | Поддерживается | Поддерживается начиная с версии Owen Logic 2.10 |
| Поддержка управления опросом | На уровне устройства (опрашивать/не опрашивать) – cм. параметр **Опрос**<br>На уровне запроса – отправка по фронту булевской переменной (параметры **Запуск чтения**/**Запуск записи**) + галочка **Запись по изменению** | На уровне устройства (опрашивать/не опрашивать) – cм. параметр **Опрос**<br>На уровне запроса – отправка по фронту булевской переменной (параметры **Запуск чтения**/**Запуск записи**) + галочка **Запись по изменению** |
| Управление желаемым периодом опроса | На уровне устройства | На уровне запросов |
| Поддержка диагностики | На уровне устройства (есть связь/нет связи) – cм. параметр **Статус**<br>На уровне запроса – код ошибки Modbus -см. параметр **Статус** | На уровне устройства (есть связь/нет связи) – cм. параметр **Статус** |
| Поддержка Modbus TCP | Отсутствует | Поддерживается<br>Опрос всех slave-устройств происходит последовательно (активно только одно клиентское соединение)<br>В рамках соединения запросы отправляются последовательно допустимый диапазон для адреса slave-устройства (Unit ID): 1…247 |

Устройства в режиме Slave определяют протокол автоматически.

| Modbus Slave | ПР200, ПР100, ПР102, ИПП120<br>Первое поколение | ПР225, ПР205, ПР103<br>Второе поколение |
| --- | --- | --- |
| Поддерживаемые протоколы | Modbus RTU, Modbus ASCII (автоопределение – ответ отправляется в формате запроса) | Modbus RTU, Modbus ASCII (автоопределение – ответ отправляется в формате запроса)<br>Modbus TCP |
| Модель области памяти | Общая, с наложением input/holding регистров | Общая, с наложением input/holding регистров |
| Объём памяти | 64 регистра (128 байт) | 1020 регистров (2040 байт) |
| Поддержка групповых запросов | поддерживается без искусственных ограничений | поддерживается без искусственных ограничений |
| Поддерживаемые функции Modbus | 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0F, 0x10 | 0x03, 0x04, 0x06, 0x0F, 0x10, 0x14, 0x15 |
| Работа с битовыми масками | Параметры битовой маски могут читаться как функцией 0х03, так и 0х01 – в этом случае номер регистра нужно умножить на 16 и прибавить номер бита | Параметры битовой маски можно прочитать только функцией 0х03 |
| Поддерживаемые типы данных | Uint16, Float | Uint16, Float |
| Поддержка изменения порядка байт/регистров | Поддерживается, но влияет только на системные переменные типа Float и Uint32 | Не поддерживается. При опросе переменных, занимающими два и более регистра следует использовать следующие настройки:<br>• порядок байт – старшим байтом вперед<br>• порядок регистров – младшим регистром вперед |
| Поддержка широковещательного запроса (broadcast) | Поддерживается | Не поддерживается |
| Поддержка Modbus TCP | Не поддерживается | Поддерживается, до 4 одновременных клиентских подключений (пятое – независимое и зарезервировано под Owen Cloud)<br>Unit ID в запросе не валидируется |
| Поддержка RETAIN | Все сетевые переменные всегда являются энергонезависимыми | Начиная с версии Owen Logic 2.9 – энергонезависимость каждой сетевой переменной настраивается пользователем<br>В более ранних версиях: все сетевые переменные всегда являются энергонезависимыми |
| Поддержка экспорта карты регистров | Поддерживается экспорт в Owen OPC Server, OwenCloud и .*csv*-файл | Поддерживается экспорт в Owen OPC Server, OwenCloud и .*csv*-файл |

Для организации обмена данными в сети через интерфейс связи необходим Мастер сети – устройство в режиме Master. Основная функция Мастера сети – инициировать обмен данными.

На линии связи допускается наличие только одного устройства в режиме Master.

##### Количество интерфейсов связи

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

##### Стандартные коды ошибок Modbus

- **01** — принятый код функции не может быть обработан;
- **02** — адрес данных, указанный в запросе, недоступен;
- **03** — значение в поле данных запроса, является недопустимой величиной.

##### Функции и области данных

При запросе Master обращается к одной из **областей памяти** Slave с помощью **функции**. **Область памяти** характеризуется типом хранящихся в ней значений (биты/регистры) и типом доступа (только чтение/чтение и запись).

**Области данных протокола Modbus**

| Область данных | Обозначение | Тип данных | Тип доступа |
| --- | --- | --- | --- |
| Coils (Регистры флагов) | 0x | Булевый | Чтение/запись |
| Discrete Inputs (Дискретные входы) | 1x | Булевый | Только чтение |
| Input Registers (Регистры ввода) | 3x | Целочисленный | Только чтение |
| Holding Registers (Регистры хранения) | 4x | Целочисленный | Чтение/запись |

Каждая область памяти состоит из определенного (зависящего от конкретного устройства) количества ячеек. Каждая ячейка имеет уникальный адрес. Для конфигурируемых устройств производитель предоставляет **карту регистров**, в которой содержится информация о соответствии параметров устройства и их адресов. Для программируемых устройств пользователь формирует такую карту самостоятельно с помощью среды программирования. Существуют устройства, в которых сочетаются оба рассмотренных случая – у их карты регистров есть фиксированная часть и часть, которую пользователь может дополнить в соответствии со своей задачей .

В некоторых устройствах области памяти наложены друг на друга (например, **0x** и **4x**) – т. е. пользователь сможет обращаться разными функциями к одним и тем же регистрам.

**Функция** определяет операцию (чтение/запись) и область памяти, с которой эта операция будет произведена.

**Основные функции протокола Modbus**

| Код функции | Имя функции | Выполняемая команда |
| --- | --- | --- |
| 1 (0x01) | Read Coil Status | Чтение значений из нескольких регистров флагов |
| 2 (0x02) | Read Discrete Inputs | Чтение значений из нескольких дискретных входов |
| 3 (0x03) | Read Holding Registers | Чтение значений из нескольких регистров хранения |
| 4 (0x04) | Read Input Registers | Чтение значений из нескольких регистров ввода |
| 5 (0x05) | Force Single Coil | Запись значения в один регистр флага |
| 6 (0x06) | Preset Single Register | Запись значения в один регистр хранения |
| 15 (0x0F) | Force Multiple Coils | Запись значений в несколько регистров флагов |
| 16 (0x10) | Preset Multiple Registers | Запись значений в несколько регистров хранения |

В различных документах идентичные обозначения могут иметь разный смысл в зависимости от контекста. Например, префикс **0x** часто используют как указание на шестнадцатеричную систему счисления, поэтому в одном случае **0x30** может обозначать «30-й бит области памяти **coils**», а в другом – «адрес 30 в шестнадцатеричной (HEX) системе счисления» (при этом данный адрес может относиться к любой области памяти).

Опрос Slave может быть **одиночным** или **групповым**. При **одиночном опросе** Master считывает каждый из параметров Slave отдельной командой.

При **групповом опросе** Master считывает одной командой сразу несколько параметров, чьи адреса в карте регистров расположены строго последовательно и не имеют разрывов. Групповой опрос позволяет уменьшить трафик в сети и время, затрачиваемое на опрос устройства, но в некоторых случаях его применение невозможно (или возможно с ограничениями) из-за индивидуальных особенностей прибора.

##### Время опроса и тайм-аут ответа

Прибор формирует запросы с периодичностью, заданной в параметрах опрашиваемого устройства **Период опроса**. Время ожидания ответа на запрос задается в параметре **Таймаут ответа**. Если за это время ответ не поступает, то прибор повторит запрос N раз, где N – параметр **Кол-во попыток**. При отсутствии ответа переменная **Статус** примет значение 0 (False).

##### Типы сетевых переменных

| Тип данных | Тип данных | Размер в режиме Slave | Размер в режиме Master |
| --- | --- | --- | --- |
| Целочисленный | UINT | 16 бит (1 регистр) | 16 бит (1 регистр) |
| Целочисленный | UDINT | - | 32 бита (2 регистра) |
| С плавающей запятой | REAL | 32 бита (2 регистра) | 32 бита (2 регистра) |
| Булевский | BOOL | - | 1 бит |

##### Порядок регистров и порядок байт

При работе прибора в режиме Slave настройки порядка следования регистров/байт влияют только на считывание Мастером системных сетевых переменных с плавающей запятой (аналоговые входы/выходы).

Для пользовательских сетевых переменных в режиме Slave данные всегда передаются в формате:

- Старшим регистром вперед— нет;
- Старшим байтом вперед— да.

##### Автоподстройка времени цикла программы

Приборы могут подстраивать время работы цикла программы в зависимости от сложности алгоритма. Автоподстройка времени цикла программы влияет на работу интерфейса связи, так как запросы обрабатываются в оставшееся после выполнения программы время цикла.

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

##### Период опроса и правила его назначения

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

Временная диаграмма опроса:

![rs485 master 08](https://docs.owen.ru/book_img/2379/36798.png)

Для максимальной скорости 115200 бит/с опрос двух переменных типа FLOAT в «идеальных» условиях (короткая линия связи, отсутствие помех) у одного подчиненного устройства следует установить:

- время ответа от начала запроса – 2,64 мс;
- следующий запрос начинается не раньше, чем через 12 мс;
- общее время на запрос 1 регистра FLOAT – 3,4 мс.

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

Значение периода опроса зависит от алгоритма, как часто и какие параметры надо опрашивать. Рекомендуется выставлять период опроса равным 1 с. В этом случае прибор сможет опросить до 50 переменных.

##### Порядок опроса нескольких устройств на шине

Устройства опрашиваются согласно сформированной очереди. Опрос происходит от наименьшего адреса к наибольшему. В примере на иллюстрации ниже первым будет опрошено устройство с адресом 8, последним – с адресом 32.

![modbus 05](https://docs.owen.ru/book_img/2379/36817.png)

Можно задавать разный период опроса подчиненных устройств. Конкретное значение будет зависеть от решаемой задачи.

##### Расчет адреса и бита для считывания булевой переменной в режиме Master

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

1. Вычислить адрес регистра: 1400 ÷ 16 = 87.
2. Вычислить номер бита 1400 mod 16 = 8.

Полученные адрес и номер вводятся в поля «Регистр» и «Бит» во время настройки опроса устройства.

![Расчет адреса](https://docs.owen.ru/book_img/2379/151483.png)

<a id="topic-122345"></a>

##### Режим Master

В режиме Master прибор опрашивает подключенные по интерфейсу другие подчиненные устройства. Для опроса однотипных параметров подключаемых Slave-устройств доступен **групповой опрос**.

Для опроса следует добавить и настроить устройства. Чтобы добавить устройство нажмите ПКМ на имя интерфейса Master в окне настройки прибора - для приборов [первого поколения](#topic-122293), или на пункт Мастер Modbus для приборов [второго поколения](#topic-122293), и выберите **Добавить устройство** в контекстном меню.

![Добавление устройства первого поколения](https://docs.owen.ru/book_img/2379/151633.png)

*Добавить устройство в интерфейс прибора первого поколения*

![Добавление устройств второго поколения](https://docs.owen.ru/book_img/2379/151632.png)

*Добавить устройство в интерфейс прибора второго поколения*

Добавленное устройство будет отображено в дереве в виде новой ветки для соответствующего интерфейса. Наименование устройства состоит из имени, адреса устройства и интерфейса связи (для приборов второго поколения).

![Добавленное устройство первого поколения](https://docs.owen.ru/book_img/2379/151631.png)

*Добавленное устройство в интерфейс прибора первого поколения*

![Добавленное устройство второго поколения](https://docs.owen.ru/book_img/2379/151630.png)

*Добавленное устройство в интерфейс прибора второго поколения*

###### Групповой опрос

Групповой опрос позволяет считать сразу несколько регистров одной командой. Максимальное количество регистров в групповом опросе зависит от объема буфера устройства, типа протокола Modbus и функции чтения/записи. Для устройств [первого поколения](#topic-122293) максимальный размер группового опроса составляет 48 регистров, для устройств [второго поколения](#topic-122293) - 16 регистров. Формирование группового опроса подчиняется следующим правилам:

1. Переменные должны располагаться в карте регистров строго последовательно — без пропусков и незадействованных регистров/бит между ними.

2. У переменных в опросе должны быть указаны одинаковы коды функций чтения/записи.

   *Исключение*: функции **0x05** и **0x06** не допускаются - групповые запросы для них не поддерживаются.

3. Переменные объединяются в групповой опрос при одинаковом типе опроса по периоду, по команде или по изменению.

4. В групповой опрос объединяются только переменные совместимого размера:

   - **Булевские переменные** — только с булевскими.
   - **Целочисленные (1 регистр)** — только с целочисленными (1 регистр).
   - **Целочисленные (2 регистра)** — с целочисленными (2 регистра) и переменными с плавающей запятой.
   - **С плавающей запятой** — с целочисленными (2 регистра) и с переменными с плавающей запятой.

Для минимизации времени получения данных со всех устройств рекомендуется:

- если одно или несколько Slave-устройств не подключены или недоступны, то рекомендуется предусмотреть в программе блокировку опроса этих устройств или сократить до минимума параметр «Таймаут ответа» для этих устройств. В противном случае время опроса будет расти пропорционально количеству неподключенных устройств и величине установленного параметра «Таймаут ответа» для этих устройств;
- во время установки параметра «Интервал между запросами» следует учитывать количество Slave-устройств и общее количество запросов. Если время обработки всех запросов занимает больше времени, чем установлено параметром «Интервал между запросами», то данный параметр будет игнорироваться.

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

###### Режим Master для приборов первого поколения

> [!NOTE]
> **Примечание.** Список приборов первого и второго поколения см. в разделе [О программе](#topic-122293).

###### Параметры опрашиваемого устройства

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

![Групповой опрос параметры устройства](https://docs.owen.ru/book_img/2379/151974.png)

- **Имя** — имя устройства для отображения в дереве настроек;

- **Адрес** — сетевой адрес устройства;

- **Период опроса, мс** — временной интервал, через который повторяется опрос. Допустимый диапазон от 0 до 65535 мс;

- **Таймаут ответа, мс** — время, по истечении которого попытка опроса считается неудачной. Допустимый диапазон от 0 до 65535 мс. Таймаут ответа рекомендуется задавать в диапазоне 300–500 мс;

- **Кол-во попыток** — количество неудачных попыток опроса, при достижении которого изменяется Статус устройства. Допустимый диапазон от 0 до 255;

- **Статус** — указание булевской переменной, в которую записывается статус прибора: 1 — устройство функционирует нормально, 0 — связь с устройством потеряна. Переменная выбирается в [таблице переменных](#topic-122352), которая вызывается нажатием кнопки «**...**»;

- **Опрос** — указание булевской переменной, которая определяет доступ к опросу: 0 — запрет опроса, 1 — разрешение опроса. Переменная выбирается в [таблице переменных](#topic-122352), которая вызывается нажатием кнопки «**...**»;

  > **Примечание.** Привязанные к параметрам **Статус** и **Опрос** переменные можно использовать в логике работы программы.

- **Группировать запросы** — опрос более одной переменной;

- **Количество регистров в запросе** — от 2 до 48;

- **Порядок байт** — определяет очередность следования байтов в пакете;

- **Старшим регистром вперед** — определяет очередность посылки регистров во время работы с двухрегистровыми переменными;

- **Старшим байтом вперед** — определяет очередность следования байтов в посылке;

- **Комментарий** — текстовое описание устройства.

**Пример**

Требуется считать число «–250.123».

В зависимости от настройки порядка следования регистров/байт оно будет передаваться различным образом.

|   |   |
| --- | --- |
| **Настройка порядка следования регистров/байт** | **Передаваемое число** |
| ![Порядок байт 1](https://docs.owen.ru/book_img/2379/147265.png) | ![modbus 00-4](https://docs.owen.ru/book_img/2379/36809.png) |
| ![Порядок байт2](https://docs.owen.ru/book_img/2379/147264.png) | ![modbus 00-3](https://docs.owen.ru/book_img/2379/36827.png) |
| ![Порядок байт3](https://docs.owen.ru/book_img/2379/147263.png) | ![modbus 00-2](https://docs.owen.ru/book_img/2379/36825.png) |
| ![Порядок байт4](https://docs.owen.ru/book_img/2379/147262.png) | ![modbus 00-1](https://docs.owen.ru/book_img/2379/36823.png) |

###### Переменные опрашиваемого устройства

В нижней части окна располагается таблица переменных опрашиваемого устройства.

Чтобы добавить переменную, следует нажать кнопку ![add var](https://docs.owen.ru/book_img/2379/36822.png). Переменная будет помещена в таблицу, как на рисунке ниже.

![Таблица переменных КС1](https://docs.owen.ru/book_img/2379/151628.png)

Для удаления из таблицы следует выделить необходимую переменную и нажать кнопку ![del var](https://docs.owen.ru/book_img/2379/36836.png).

Чтобы создать несколько переменных со схожими настройками, следует выбрать переменную в таблице и нажать кнопку ![replicate variable](https://docs.owen.ru/book_img/2379/36819.png) **Тиражировать**.

> [!NOTE]
> **Примечание.** Подробнее **Тиражирование переменных** описано в разделе [Режим Slave](#topic-122346).

###### Свойства сетевых переменных опрашиваемого устройства

![rs485 master 05v2](https://docs.owen.ru/book_img/2379/36820.png)

Свойства переменной опрашиваемого устройства настраиваются справа от таблицы:

- **Имя переменной** — наименование для отображения в [таблице переменных](#topic-122352);

  > **Примечание.** Создание переменных с одинаковыми именами не рекомендуется.

- **Тип** — [тип](#topic-122353) переменной: булевский, целочисленный или с плавающей запятой;

- **Бит (только для переменных булевского типа)** — номер бита для чтения;

- **Регистр/Адрес регистра** — значение регистра, к которому обращается прибор, отображается в таблице;

- **Функция чтения/функция записи** — отключение или выбор функции записи/чтения;

  > **Примечание.** **Запись по изменению** — если эта функция активирована, то в случае изменения значения переменной мастер инициирует запись значения переменной в Slave-устройство.

- **Количество (только для целочисленных переменных)** — количество занимаемых переменной регистров: 1 или 2;

- **Запуск чтения** — назначается переменная булевского типа (командная переменная) для принудительного чтения настраиваемой переменной: если значение командной переменной меняется с 0 на 1, мастер инициирует запрос на чтение, после успешного выполнения запроса значение командной переменной автоматически меняется с 1 на 0;

- **Запуск записи** — назначается командная переменная булевского типа (командная переменная) для принудительной записи настраиваемой переменной: если значение командной переменной меняется с 0 на 1, мастер инициирует запрос на запись, после успешного выполнения запроса значение командной переменной автоматически меняется с 1 на 0;

- **Статус** — назначается целочисленная переменная, в которую будет записан код ошибки [Modbus](#topic-122344), в случае ее появления;

- **Комментарий** — текстовое описание переменной для отображения в [таблице переменных](#topic-122352);

> [!NOTE]
> **Примечание.** Чтение и запись по команде позволяет принудительно читать или записывать значения переменной и более гибко настраивать чтение и запись.
>
> Возможно комбинировать различные варианты чтения и записи:
>
> - чтение по таймеру;
> - чтение/запись по событию;
> - запись по изменению (используется по умолчанию).

###### Режим Master для приборов второго поколения

###### Параметры опрашиваемого устройства

###### Свойства сетевых переменных опрашиваемого устройства

Для настройки параметров опроса подключенных устройств следует выбрать в дереве параметров прибора узел **Modbus Master**.

> [!NOTE]
> **Примечание.** Максимальное количество устройств на всех интерфейсах — 32.

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

> [!NOTE]
> **Примечание.** Доступно изменение сетевых настроек опрашиваемых устройств из внешнего ПО (например, [OwenConfigurator](https://owen.ru/product/owen_configurator)).

![Групповой опрос КС2](https://docs.owen.ru/book_img/2379/146016.png)

- **Имя** — имя устройства для отображения в дереве настроек;
- **Интерфейс** — интерфейс, по которому подключено опрашиваемое устройство. От выбранного интерфейса зависит список доступных параметров.
- **Адрес** — сетевой адрес устройства;
- **Таймаут ответа, мс** — время, по истечении которого попытка опроса считается неудачной. Допустимый диапазон от 10 до 10 000 мс;
- **Протокол**
- **Количество попыток** — количество неудачных попыток опроса. Допустимый диапазон от 0 до 3;
- **Статус** — указание булевской переменной, в которую записывается статус прибора: 1 — устройство функционирует нормально, 0 — связь с устройством потеряна. Переменная выбирается в [таблице переменных](#topic-122352), которая вызывается нажатием кнопки «**...**»;
- **Опрос** — указание булевской переменной, которая определяет доступ к опросу: 0 — запрет опроса, 1 — разрешение опроса. Переменная выбирается в [таблице переменных](#topic-122352), которая вызывается нажатием кнопки «**...**»;
- **Группировать запросы** — опрос более одной переменной;
- **Количество регистров в запросе** — от 2 до 16;
- **Порядок байт** — определяет очередность следования байтов в пакете;
- **Комментарий** — текстовое описание устройства.

Специфические параметры опрашиваемого устройства, подключенного по интерфейсу Ethernet:

- **IP адрес** — уникальный сетевой адрес устройства, допустимый диапазон от 0.0.0.0 до 255.255.255.255.;
- **Порт** — номер порта, допустимый диапазон от 0 до 65535.

![Специфические значения при подключении по Ethernet](https://docs.owen.ru/book_img/2379/151626.png)

![Свойства сетевой переменной 2 поколения](https://docs.owen.ru/book_img/2379/151625.png)

- **Имя** — наименование для отображения в [таблице переменных](#topic-122352) ;

  > **Примечание.** Создание переменных с одинаковыми именами не рекомендуется.

- **Тип** — [тип](#topic-122353) переменной: булевский, целочисленный или с плавающей запятой;

- **Регистр** — значение регистра, к которому обращается прибор, отображается в таблице;

- **Бит (только для переменных булевского типа)** — номер бита для чтения;

- **Количество регистров (только для целочисленных переменных)** — количество занимаемых переменной регистров: 1 или 2;

- **Функция** — отключение или выбор функции записи/чтения.

От выбора функции записи/чтения зависит список параметров для настройки.

Параметры функций чтения:

- **Период чтения** — временной интервал между запросами;
- **Команда на чтение** — переменная булевского типа, по изменению которой происходит чтение параметра.

Параметры функций записи:

- **Период записи** — временной интервал между операциями перезаписи;
- **Команда на запись** — переменная булевского типа, по изменению которой происходит запись параметра.
- **Запись по изменению** — если эта функция активирована, то в случае изменения значения переменной мастер инициирует запись значения переменной в Slave-устройство.
- **Комментарий** — текстовое описание переменной для отображения в [таблице переменных](#topic-122352).

<a id="topic-122346"></a>

##### Режим Slave

В режиме Slave прибор предоставляет данные для считывания другим устройством в сети, самостоятельный опрос не ведет.

###### Режим Slave для приборов первого поколения

Чтобы настроить параметры передачи данных, следует нажать на имя прибора (по умолчанию — **Сам, 16**) под наименованием интерфейса в дереве настроек.

![rs485 slave 01](https://docs.owen.ru/book_img/2379/36801.png)

###### Параметры прибора

![Режим Slave](https://docs.owen.ru/book_img/2379/147261.png)

В правой части окна настроек расположены параметры прибора общие для всех переменных:

- **Имя** — имя прибора для отображения в дереве настроек;
- **Адрес** — сетевой адрес прибора;
- **Комментарий** — текстовое описание прибора.

> [!NOTE]
> **Примечание.** В режиме Slave настройки **Старшим регистром вперед** и **Старшим байтом вперед** влияют на порядок упаковки регистров/байт только для системных сетевых переменных устройства.
>
> Для пользовательских сетевых переменных проекта в режиме Slave данные всегда передаются в формате:
>
> - **Старшим регистром вперед**— нет;
> - **Старшим байтом вперед**— да.

Для прибора в режиме Slave допускается опрос до 64 регистров при групповом опросе.

###### Переменные прибора

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

Чтобы добавить переменную, следует нажать кнопку ![add var](https://docs.owen.ru/book_img/2379/36822.png). Переменная будет добавлена в таблицу, как на рисунке ниже.

![Таблица переменных КС1](https://docs.owen.ru/book_img/2379/151482.png)

Для удаления из таблицы следует выделить необходимую переменную и нажать кнопку ![del var](https://docs.owen.ru/book_img/2379/36836.png).

###### Тиражирование переменных

> [!NOTE]
> **Примечание.** Тиражирование переменной доступно только для приборов первого поколения.

Чтобы создать несколько переменных со схожими настройками, следует выбрать переменную в таблице и нажать кнопку ![replicate variable](https://docs.owen.ru/book_img/2379/36819.png) **Тиражировать**.

![Тиражирование переменной](https://docs.owen.ru/book_img/2379/142650.png)

Настройки тиражирования переменной:

- **Имя** — имя переменной, которая будет тиражирована;
- **Начальный номер** — начальное число, которое будет добавлено к имени тиражируемой переменной;
- **Количество** — количество переменных, которое нужно добавить;
- **Шаг адреса** — шаг, с которым будет увеличиваться значение параметра **Регистр**.

Переменные будут добавлены в таблицу.

![Тиражирование КС1](https://docs.owen.ru/book_img/2379/151481.png)

При тиражировании переменных, добавленных в интерфейс Lora и имеющих в имени постфикс \_R или \_W, начальный номер устанавливается перед постфиксом.

###### Свойства переменной прибора

![properties](https://docs.owen.ru/book_img/2379/46593.png)

Свойства переменной прибора настраиваются справа от таблицы:

- **Имя переменной** — имя переменной прибора (задает пользователь);

- **Тип** — [тип](#topic-122353) переменной прибора: целочисленный или с плавающей запятой;

  > **Примечание.** Булевские переменные можно считать в целочисленную переменную. Состояние дискретного входа можно извлечь с помощью блока [EXTRACT](#topic-122381) или подходящего макроса из [Менеджера компонентов](#topic-122331).

- **Адрес регистра** — адрес регистра переменной прибора (задает пользователь). Диапазон доступных адресов указан в *руководстве по эксплуатации* прибора;

- **Комментарий** — текстовое описание значения переменной для отображения в [таблице переменных](#topic-122353).

###### Режим Slave для приборов второго поколения

Приборы второго поколения работают в режиме Slave по умолчанию. Настройка переменных прибора происходит через [таблицу переменных](#topic-122353), вкладка **Сетевые, Slave**.

![Таблица перем 5-48](https://docs.owen.ru/book_img/2379/151492.png)

*Таблица переменных*

- **Имя переменной** — имя переменной прибора (задает пользователь);

- **Тип переменной** — целочисленный или с плавающей запятой;

  > **Примечание.** Булевские переменные можно считать в целочисленную переменную. Состояние дискретного входа можно извлечь с помощью блока [EXTRACT](#topic-122381) или подходящего макроса из [Менеджера компонентов](#topic-122331).

- **Энергонезависимость** — при включении чекбокса Энергонезависимость переменная размещается в области системного ЭСППЗУ. При отключении питания значение переменной сохранится в энергонезависимой памяти прибора;

- **Адрес регистра** —

  адреса сетевых переменных в диапазоне от 16384 до 20479;

- **Значение по умолчанию** — значение переменной, которое будет инициироваться во время начала работы программы;

- **Использование в проекте** — индикация привязки к блокам в программе. Если переменная привязана, то значение — **Да**;

- **Комментарий** — текстовое описание переменной для отображения в таблице переменных.

После подключения прибора к Owen Configurator или OwenCloud сетевые переменные будут отображаться в дереве параметров.

Для настройки отображения следует выбрать переменную в таблице и нажать на кнопку ![Кнопка настройки параметра](https://docs.owen.ru/book_img/2379/150402.png) **Настройки параметра** в правом верхнем углу окна. Появится панель **Настройка параметра.**

![Настройка параметров](https://docs.owen.ru/book_img/2379/150401.png)

*Настройка параметра*

- **Имя параметра** - название параметра, которое будет отображаться в дереве параметров при работе с Owen Configurator и OwenCloud;
- **Минимальное значение** - минимальное значение параметра для отображения в Owen Configurator и OwenCloud, не влияет на логику исполнения программы;
- **Максимальное значение** - максимальное значение параметра для отображения в Owen Configurator и OwenCloud, не влияет на логику исполнения программы;
- **Видимость** - видимость параметра при работе с Owen Configurator и OwenCloud: **Видим** – параметр отображается в дереве параметров, **Скрыт** – параметр не отображается в дереве параметров;
- **Путь к параметру** - во внешнем ПО параметр будет отображаться по указанному пути. По умолчанию отображается путь, в соответствии с расположением переменной в дереве каталогов таблицы переменных. Иерархия папок при указании пути к параметру оформляется с использованием обратного слэша (\\). Если значение не задано, параметр будет отображаться в каталоге «Логика»;
- **Формат отображения данных** - формат, в котором будет отображаться значение параметра, актуален для целочисленных переменных, доступные форматы: десятичный, двоичный (отображается в Owen Configurator как битовая маска), **hex** (шестнадцатиричный) и **enum** (перечисление, только для uint16);
- **Редактирование по сети** - возможность редактирования значения параметра из Owen Configurator и OwenCloud;
- **Архивировать значение** - необходимость архивирования значения параметра: **Да** – значение параметра записывается в архив прибора, **Нет** – значение параметра не записывается в архив прибора.

<a id="topic-122347"></a>

##### Шаблоны сетевых устройств

###### Шаблоны сетевых устройств

Для интерфейсов, работающих в режиме Master, доступно создание и использование шаблонов сетевых устройств. Параметры и переменные настроенного устройства могут быть сохранены в виде файла шаблона.

###### Создание шаблона

Для создания шаблона выберите **Сохранить устройство как шаблон** в контекстном меню устройства или в верхней части окна настройки прибора.

![Сетевые шаблоны1](https://docs.owen.ru/book_img/2379/146062.png)

В открывшемся окне проводника выберите расположение и введите имя файла. Файл будет сохранен с расширением *\*.dvtpe*. Сохраненный шаблон можно использовать для других интерфейсов и проектов.

Для использования сохраненного шаблона нажмите ПКМ на наименование интерфейса в дереве настроек и выберите **Добавить из Шаблонов…** В открывшемся окне проводника выберите файл содержащий шаблон.

![interface 06](https://docs.owen.ru/book_img/2379/36799.png)

К интерфейсу добавится устройство из шаблона вместе со всеми параметрами.

Для ряда устройств производства компании ОВЕН есть готовые шаблоны, которые можно загрузить из онлайн-базы с помощью [Менеджера компонентов](#topic-122331).

При использовании шаблонов сетевых устройств, созданных в проектах для приборов [первого поколения](#topic-122295), в проектах с приборами [второго поколения](#topic-122295):

- при выборе **группового опроса** количество регистров в запросе либо сохранит значение (при введенном значении от 2 до 16), либо примет значение 16, если сохраненное в шаблоне значение больше 16:

  ![Параметры опрашиваемых устройств](https://docs.owen.ru/book_img/2379/151624.png)

- переменная с функцией чтения и записи разделяется на две переменные: с функцией чтения \_read и с функцией записи \_write:

  ![Шаблоны сетевых устр](https://docs.owen.ru/book_img/2379/151653.png)

При использовании шаблонов сетевых устройств, созданных в проектах для приборов второго поколения, в проектах с приборами первого поколения параметр период опроса примет значение по умолчанию (100 мс).

###### Групповое переименование переменных

Для группового переименования переменных в таблице переменных опрашиваемого устройства окна настройки прибора нажмите кнопку ![Кнопка Групповое переименование](https://docs.owen.ru/book_img/2379/146092.png).

![Групповое переименование1](https://docs.owen.ru/book_img/2379/146257.png)

В появившемся окне введите текст для отображения перед именем, и после имени переменной, и нажмите кнопку **Применить**.

![5 50](https://docs.owen.ru/book_img/2379/155041.png)

В результате все переменные переименуются согласно введенным данным:

![Групповое переименование4](https://docs.owen.ru/book_img/2379/146256.png)

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

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

Переименование каждой переменной по отдельности доступно в [таблице переменных](#topic-122352) и в [коде программы](#topic-122334).

<a id="topic-122348"></a>

### Модули расширения

В разделе **Модули расширения** настраиваются подключенные к прибору модули расширения ввода/вывода.

#### Добавить модуль расширения

Чтобы добавить модуль расширения, следует нажать ПКМ на раздел **Модули расширения** в дереве настроек и выбрать **Добавить модуль расширения → < Модель модуля расширения >**.

![extention 01](https://docs.owen.ru/book_img/2379/36854.png)

Модуль расширения отобразится как ответвление раздела в дереве настроек. Наименование модуля расширения состоит из модели модуля и номера занимаемого слота.

Модуль расширения можно удалить, нажав ПКМ на его наименование в дереве настроек и выбрав соответствующую функцию.

#### Параметры модуля расширения

Параметры выделенного модуля расширения отображаются в правой части окна настроек.

![extention 02](https://docs.owen.ru/book_img/2379/36853.png)

В выпадающем меню **Номер слота** указывается номер слота в приборе, занимаемый модулем расширения. Количество модулей расширения не может превышать количество слотов в приборе.

**Статус** подключения модуля расширения может сохраняться в переменную булевского типа. Если связь с модулем установлена, то переменная хранит значение **True**, если связь не установлена — **False**. Для выбора переменной, в которой будет храниться статус, нажмите кнопку «**...**».

Откроется [таблица переменных](#topic-122352), в которой можно выбрать переменную из проекта или создать новую.

![Таблица перем 5-52](https://docs.owen.ru/book_img/2379/154534.png)

Выбранная переменная будет отображаться в поле ввода **Статус**.

![extention 04](https://docs.owen.ru/book_img/2379/36851.png)

Для выходов модуля расширения может быть настроено [безопасное состояние](#safe).

#### Настройки для приборов второго поколения

> [!NOTE]
> **Примечание.** Список приборов второго поколения см. в разделе [О программе](#topic-122293).

Окно настройки для приборов второго поколения имеет другой интерфейс и параметры оформлены в табличном виде.

> [!NOTE]
> **Примечание.** Информация о подключенных к прибору модулях расширения отображается в окне [Информация о приборе](#topic-122435).

Чтобы добавить модуль расширения, следует нажать ПКМ на раздел **Модули расширения** в дереве настроек и выбрать **Добавить модуль расширения → < Модель модуля расширения >**.

![Модули расширения новая платформа](https://docs.owen.ru/book_img/2379/73423.png)

Модули расширения настраиваются аналогично другим приборам, только меню настроек безопасного состояния выходов находится в ответвлении добавленного модуля расширения, см. [безопасное состояние](#safe).

<a id="topic-122349"></a>

### Входы и выходы

В разделах **Входы** и **Выходы** настраиваются параметры и комментарии для входов/выходов прибора и модулей расширения.

Параметры зависят от типа входов/выходов выбранного прибора.

Входы/выходы модулей расширения отображаются в дереве настроек с номером занимаемого слота в скобках.

Для правильной настройки входов/выходов прибора следует обратиться к *руководству по эксплуатации* прибора.

#### Добавление комментариев

Комментарий для входа/выхода можно написать в поле **Комментарий** или на панели свойств.

![inputs](https://docs.owen.ru/book_img/2379/36850.png)

Текст введенного комментария будет отображаться во всплывающей подсказке при наведении курсора на вход/выход на схеме:

![inputs 01](https://docs.owen.ru/book_img/2379/36849.png)

#### <a id="safe"></a>Безопасное состояние выходов модулей расширения

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

![safe](https://docs.owen.ru/book_img/2379/36867.png)

#### Настройки для приборов второго поколения

Окно настройки входов и выходов для приборов [второго поколения](#topic-122295) имеет другой интерфейс, и параметры в правой части окна оформлены в табличном виде.

![Настройки входов выходов](https://docs.owen.ru/book_img/2379/73425.png)

Для приборов второго поколения меню настроек безопасного состояния выходов находится в ответвлении добавленного модуля расширения.

![Настройка безопасного выхода](https://docs.owen.ru/book_img/2379/73424.png)

<a id="topic-122350"></a>

### Пароль

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

> [!NOTE]
> **Примечание.** Список приборов второго поколения см. в разделе [О программе](#topic-122293).

Пароль задается в разделе **Пароль** в дереве настроек только для подключенного к ПК устройству.

#### Создание пароля

Если в приборе не установлен пароль, то в окне настроек будет активно создание пароля. Для установки следует ввести и подтвердить пароль.

![создание пароля](https://docs.owen.ru/book_img/2379/74939.png)

#### Изменение и сброс пароля

Если в приборе уже установлен пароль, то его можно изменить или сбросить.

Для изменения пароля следует ввести текущий пароль и новый пароль в графах **Изменение пароля**.

Для сброса пароля следует ввести текущий пароль в графе **Сброс пароля**.

![изменение сброс](https://docs.owen.ru/book_img/2379/74940.png)

В случае утери пароля для его сброса см. *Руководство по эксплуатации* прибора.

Для защищенного паролем прибора во время записи программы требуется ввод пароля, см. [Запись программы в прибор](#topic-122328).

> [!NOTE]
> **Примечание.** Пароль обязательно требуется для подключения прибора к OwenCloud, подробнее см. [Подключение к OwenCloud](#topic-122351).

<a id="topic-122351"></a>

### Подключение к OwenCloud

[С помощью шлюзов линейки Пх210 к OwenCloud](#topic-122452) можно подключать [приборы первого и второго поколения](#topic-122295).

[Прямое подключение к OwenCloud](#topic-122453) доступно только для приборов второго поколения.

> [!NOTE]
> **Примечание.** Для подключения к OwenCloud прибор обязательно должен быть защищен паролем. Без пароля прибор не подключится к OwenCloud. Об установке пароля см. раздел [Пароль](#topic-122350).

Перед настройкой подключения к OwenCloud следует настроить авторизацию прибора в OwenCloud, подробнее см. [Руководство пользователя OwenCloud](https://ftp.owen.ru/OwenCloud/01_Docs/rp_owencloud.pdf) и *Руководство по эксплуатации* прибора. Во время работы прибор должен быть подключен к Интернету для передачи данных.

В разделе **Настройки подключения к OwenCloud** дерева настроек задается подключение и статус подключения к OwenCloud.

![Owen Cloud](https://docs.owen.ru/book_img/2379/74643.png)

В разделе **Права удаленного доступа из OwenCloud** дерева настроек задаются уровни доступа OwenCloud к прибору.

![Owen Cloud 2](https://docs.owen.ru/book_img/2379/74731.png)

Пример работы с OwenCloud см. в разделе [Прямое подключение приборов второго поколения к OwenCloud](#topic-122453).

<a id="topic-122352"></a>

## Переменные

Переменные служат для записи и считывания значений на схеме проекта и при программировании [экранов](#topic-122321).

### Задействованные переменные

Переменная является **задействованной**, если выполняется **хотя бы одно** из следующих условий:

- Общие условия для всех типов переменных:

  - имеет привязку к элементу визуализации;
  - имеет привязку к параметру прибора;
  - имеет привязку к физическим кнопкам;
  - используется в логических переходах между экранами;
  - для переменной на схеме присутствует выходной блок энергонезависимой переменной (Энергонезависимость = Вкл).

- Дополнительные условия, для переменных типа массив:

  - Для массива с **элементами булевского типа** — при энергонезависимости "Выкл" на схеме присутствует выходной блок массива или элементов массива;
  - Для массива с **элементами целочисленного и вещественного типа** — при энергонезависимости "Выкл" на схеме присутствует входной блок массива или элементов массива.

Если ни одно из условий не выполняется, то такая переменная является **незадействованной**.

**Незадействованные** переменные:

- не участвуют в логике программы;
- не участвуют в симуляции программы;
- не занимают память прибора.

### Таблица переменных

Переменные проекта отображаются в Таблице переменных.

Для запуска Таблицы переменных нажмите кнопку ![vartable](https://docs.owen.ru/book_img/2379/36738.png) на панели инструментов или выберите в главном меню **Прибор → Таблица переменных**.

Таблица переменных содержит **Дерево каталогов переменных**, а также вкладки:

- Стандартные переменные;
- [Сервисные переменные](#topic-122354);
- [Сетевые переменные (переменные интерфейса связи)](#topic-122355) — для каждого интерфейса связи отдельная вкладка.

**Дерево каталогов переменных** позволяет создавать разделы каталогов для размещения переменных. Для каждой категории переменных отображается своё дерево каталогов. Для стандартных и сетевых переменных возможно создавать дополнительные разделы каталогов (максимальная вложенность — 3). Каталоги сервисных переменных неизменяемые.

Рядом с названием каждого каталога в скобках указывается количество переменных в каталоге - с учётом переменных, находящихся во вложенных каталогах, либо без них, в зависимости от настройки "Отображение вложенных переменных".

![Дерево каталогов переменных1](https://docs.owen.ru/book_img/2379/156031.png)

*Дерево каталогов переменных*

|   |   |
| --- | --- |
| ![Кнопка отображение вложенных переменных](https://docs.owen.ru/book_img/2379/151502.png) | **Включить/выключить** отображение вложенных переменных<br>• Кнопка ![Кнопка отображения переменных](https://docs.owen.ru/book_img/2379/156030.jpg) **Включить** отображение вложенных переменных — в скобках отображается общее количество переменных, находящихся в текущем каталоге и во всех его вложенных подкаталогах.<br>• Кнопка ![Кнопка Скрыть вложенные переменные](https://docs.owen.ru/book_img/2379/156029.png) — в скобках отображается количество переменных, находящихся непосредственно в выбранном каталоге, без учета вложенных подкаталогов.<br>По умолчанию отображение вложенных переменных включено. |
| ![Кнопка отобразить вложенные разделы](https://docs.owen.ru/book_img/2379/151501.png) | **Раскрыть** подкаталоги |
| ![Кнопка скрыть вложенные разделы](https://docs.owen.ru/book_img/2379/151500.png) | **Свернуть** подкаталоги |
| ![Кнопка Добавить папку](https://docs.owen.ru/book_img/2379/151480.png) | **Создать** новый подкаталог.<br>Также создание подкаталога доступно через контекстное меню каталога. |
| ![Кнопка Дублировать папку](https://docs.owen.ru/book_img/2379/151479.png) | **Дублировать** каталог — выбранная папка продублируется в родительский каталог со всеми вложенными разделами и добавленными переменными.<br>Также копирование раздела доступно через контекстное меню каталога. Выберите **Копировать**, затем выберите каталог, в который необходимо добавить скопированный раздел, нажмите ПКМ и выберите **Вставить**<br>**Примечание.** Каталог для добавления информации должен быть на уровень выше копируемого. |
| ![Кнопка Удалить папку](https://docs.owen.ru/book_img/2379/151478.png) | **Удалить** каталог.<br>Также удаление раздела каталога доступно через контекстное меню каталога.<br>**Примечание.** Раздел каталога, содержащий переменные, удалить невозможно. |

Для перемещения раздела каталога нажмите и удерживайте клавишу Shift, и с помощью drag&drop переместите раздел на новое место.

> [!NOTE]
> **Примечание.** Перемещение разделов доступно только в пределах родительского каталога.

Для переименования раздела каталога введите новой имя в строке **Наименование**, расположенной в нижней части **Дерева каталогов переменных**.

> [!NOTE]
> **Примечание.** Поле Наименование не может быть пустым или дублировать имя другого раздела в пределах родительского каталога. В случае ввода некорректного имени появится окно с сообщением об ошибке.

Чтобы определить раздел каталога, в котором находится переменная, выделите переменную в таблице и нажмите <i>**Ctrl+H**</i>. Раздел, в котором находится переменная, в дереве каталогов выделится синим цветом, наименование раздела отобразится в строке снизу, в таблице переменных откроется тот раздел, где расположена переменная. Или наведите мышку на переменную — во всплывающем окне отобразится имя переменной и ее расположение.

### Экспорт переменных в файл

### Импорт переменных из файла

### Раскрыть/свернуть массивы

### Поиск переменных

### Контекстное меню таблицы переменных

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

![Таблица переменных](https://docs.owen.ru/book_img/2379/154533.png)

*Таблица переменных*

|   |   |
| --- | --- |
| ![Кнопка Добавить переменную](https://docs.owen.ru/book_img/2379/156028.png) | Создать переменную |
| ![Кнопка дублировать переменную](https://docs.owen.ru/book_img/2379/156027.png) | Дублировать переменную |
| ![Кнопка Удалить переменную](https://docs.owen.ru/book_img/2379/156026.png) | Удалить переменную |
| ![Экспорт переменной](https://docs.owen.ru/book_img/2379/156025.png) | Экспортировать стандартные переменные в CSV файл |
| ![Кнопка Импорт переменной](https://docs.owen.ru/book_img/2379/156024.png) | Импортировать стандартные переменные из CSV файла |
| ![Кнопка раскрыть массивы](https://docs.owen.ru/book_img/2379/156023.png) | Раскрыть все массивы |
| ![Кнопка Свернуть массивы](https://docs.owen.ru/book_img/2379/156022.png) | Свернуть все массивы |

Для создания переменной нажмите кнопку ![Add Var 24](https://docs.owen.ru/book_img/2379/58094.png) в левой верхней части таблицы, или введите имя переменной в столбце “Имя переменной”. Задайте [тип](#topic-122353), заполните остальные параметры в зависимости от эксплуатационной потребности.

- **Имя переменной** – имя для отображения переменной в проекте. При создании массива элементы массива автоматически получают имена, содержащие имя массива с добавлением индекса в квадратных скобках;

- **Тип переменной** – может быть назначен один из трех типов: булевский, целочисленный, с плавающей запятой, массив. См. подробнее раздел [Типы переменных](#topic-122353);

  При выборе переменной типа массив, в появившемся окне **Настройка массива** введите:

  - **Размер массива** — количество элементов массива, не более 256. Значения, задаются в формате \[х..y\], где x - индекс первого элемента, y - последнего;

  - **Тип элементов** — тип элементов массива: булевский, целочисленный, с плавающей запятой.

    ![Настройка массива](https://docs.owen.ru/book_img/2379/156041.png)

    *Окно Настройка массива*

  Изменение размера, диапазона индексов и/или типа элементов массива возможно в любой момент.

- **Энергонезависимость** — для сохранения значения переменной в ПЗУ прибора в случае отключения электропитания следует включить чекбокс в поле настройки. Время хранения переменной в ПЗУ зависит от типа прибора, см. *руководство по эксплуатации* прибора;

  > **Примечание.** Для приборов второго поколения, при включении в таблице переменных чекбокса Энергонезависимость, размещение значения переменной происходит:
  >
  > - в системное ЭСППЗУ — для стандартной переменной, привязанной к параметру прибора или к элементу визуализации. Для сетевой Slave переменной;
  > - в ЭСППЗУ — для стандартной переменной, не привязанной к параметру прибора или к элементу визуализации.

- **Значение по умолчанию** — значение, которое будет хранить переменная, пока в нее не будет записано новое значение

  ;

- **Использование в проекте** — индикация использования переменной в проекте. Значение"Да" устанавливается если переменная является **задействованной**, и/или имеет привязку к входному или выходному блоку на схеме;

- **Комментарий** — текстовое описание для отображения во всплывающей подсказке на схеме проекта при наведении курсора на блок переменной

  .

Для дублирования переменной нажмите ПКМ на строку переменной и в контекстном меню выберите **Дублировать переменную** или нажмите кнопку ![duplicate var](https://docs.owen.ru/book_img/2379/58095.png) в верхней части таблицы.

> [!NOTE]
> **Примечание.** Дублирование элемента массива невозможно.

Чтобы удалить переменную из таблицы, нажмите ПКМ на строку переменной и в контекстном меню выберите **Удалить переменную** или нажмите кнопку ![delete1](https://docs.owen.ru/book_img/2379/37144.png) в верхней части таблицы. В случае, если переменная используется в проекте, отобразится информационное окно, с предложением удалить ссылки на переменную. При выборе **Удалить** переменная будет удалена из таблицы переменных и блока на схеме.

> [!NOTE]
> **Примечание.** Удаление элемента массива невозможно.

Для экспорта вкладки переменных в виде таблицы в формате <i>**.csv**</i>:

1. Нажмите ![Кнопка Экспорт](https://docs.owen.ru/book_img/2379/143436.jpg)**Экспортировать переменные в CSV файл** в верхней части таблицы.
2. В открывшемся окне укажите место выгрузки файла.
3. Нажмите кнопку **Сохранить**.

> [!NOTE]
> **Примечание.** Имя файла формируется в зависимости от экспортируемой вкладки по схеме <b>*ИмяПроекта_Вкладка_Переменные*</b>.

> [!NOTE]
> **Примечание.** Для приборов второго поколения вкладка Slave сетевых переменных экспортируется вместе с настройками параметров переменных.

![Экспорт в файл](https://docs.owen.ru/book_img/2379/154529.jpg)

Для импорта таблицы переменных из файла в формате <i>**.csv**</i> нажмите кнопку ![Кнопка Импорт](https://docs.owen.ru/book_img/2379/143434.jpg) **Импортировать переменные из CSV файла** в верхней части таблицы. Выберите файл из которого необходимо импортировать данные и нажмите **Открыть**. Каталоги, при наличии, также импортируются из файла с сохранением вложенности переменных. В случае присутствия в файле некорректных данных, например при отсутствии столбца с именем, типом переменной или регистром, будет отображено сообщение об ошибке. После устранения ошибки выполните импорт заново. При совпадении имен и/или регистров переменных в проекте и импортируемом файле, появится информационное окно с сообщением обо всех пересечениях имен и/или регистров и предложением продолжить либо отменить импорт

Если в проекте присутствует переменная типа массив можно настроить отображение элементов массива в таблице переменных. Массив отображается в таблице переменных в виде дерева массива. Для раскрытия дерева массива у всех переменных типа массив в таблице переменных нажмите кнопку ![Кнопка раскрыть массивы](https://docs.owen.ru/book_img/2379/156023.png) **Раскрыть все массивы** в верхней части таблицы. Данная настройка сохраняется при следующем открытии таблицы переменных, в рамках одной сессии. Для отображения элементов массива у одной переменной типа массив нажмите на частную кнопку "+", расположенную перед именем массива.

Чтобы свернуть дерево массива у всех переменных типа массив в таблице переменных нажмите кнопку ![Кнопка Свернуть массивы](https://docs.owen.ru/book_img/2379/156022.png) **Свернуть все массивы** в верхней части таблицы. Данная настройка сохраняется при следующем открытии таблицы переменных, в рамках одной сессии. Для скрытия отображения элементов массива у одной переменной типа массив нажмите на частную кнопку "-", расположенную перед именем массива.

Таблица переменных поддерживает поиск и фильтрацию по имени. Символ «Пробел» выполняет роль логического ИЛИ и позволяет фильтровать переменные по нескольким критериям.

![Поиск переменных](https://docs.owen.ru/book_img/2379/154532.jpg)

*Поиск переменных*

Если введенной в строке поиска переменной не существует, то её можно создать нажатием на кнопку![Add Var 24](https://docs.owen.ru/book_img/2379/58094.png) в верхней части таблицы. Переменной автоматически присвоится введенное в строке поиска имя.

![Создание переменной 2](https://docs.owen.ru/book_img/2379/154531.png)

*Создание переменной с заданным именем*

Чтобы найти места использования переменной в проекте нажмите ПКМ на строку переменной в таблице и выберите в контекстном меню переменной **Показать ссылки**.

![Таблица переменных ссылки](https://docs.owen.ru/book_img/2379/154530.jpg)

В открывшемся окне отобразится информация о выбранной переменной.

![Ссылки на переменную](https://docs.owen.ru/book_img/2379/143437.jpg)

*Ссылки на переменную*

Для переменной типа массив указываются ссылки как на сам массив, так и на его элементы.

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

<a id="topic-122353"></a>

### Типы переменных

В Owen Logic используются три типа переменных:

- булевский (двоичный);
- целочисленный;
- с плавающей запятой (вещественный);
- массив.

Значения от одной переменной к другой могут передаваться только при совпадающих типах переменных.

#### Булевский тип

Переменная булевского типа может принимать одно из двух значений: 1 (True) или 0 (False).

На схеме переменные булевского типа соединяются черными линиями:

![var type 01](https://docs.owen.ru/book_img/2379/36870.png)

#### Целочисленный тип

Переменная целочисленного типа может принимать значение целого числа в диапазоне от 0 до 4294967295.

На схеме переменные целочисленного типа соединяются красными линиями:

![var type 02](https://docs.owen.ru/book_img/2379/38217.png)

#### Тип с плавающей запятой

Переменная типа с плавающей запятой может принимать значение вещественного числа в диапазоне от –3,402823E+38 до 3,402823E+38.

Числа одинарной точности с плавающей запятой обеспечивают относительную точность 7–8 десятичных цифр в диапазоне от 10<sup>–38</sup> до примерно 10<sup>38</sup>.

На схеме переменные типа с плавающей запятой соединяются фиолетовыми линиями:

![var type 03](https://docs.owen.ru/book_img/2379/36868.png)

#### Массив

Переменная типа массив хранит упорядоченный набор элементов одного типа: булевского, целочисленного или с плавающей запятой. Максимальное количество элементов в одном массиве - 256.

> [!NOTE]
> **Примечание.** Работа с массивами доступна в Owen Logic начиная с версии 3.0. В текущей реализации поддерживается работа только с одномерными массивами.

На схеме переменные типа массив соединяются зелеными линиями:

![Блок массив](https://docs.owen.ru/book_img/2379/156143.png)

<a id="topic-122354"></a>

### Сервисные переменные

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

![Таблица сервисных переменных](https://docs.owen.ru/book_img/2379/161476.png)

*Вкладка Сервисные переменные*

На схеме сервисные переменные обозначаются серым цветом:

![var 07](https://docs.owen.ru/book_img/2379/36874.png)

#### Сервисные переменный для приборов второго поколения

В приборах [второго поколения](#topic-122295) нет сервисных переменных. Вместо сервисных переменных используется привязка переменных к параметрам прибора (см. раздел [Привязка переменных к параметрам](#topic-122356)).

<a id="topic-122355"></a>

### Переменные интерфейса связи

В таблице переменных для каждого интерфейса связи создается отдельная вкладка с описанием сетевых переменных. В заголовке вкладки указывается тип интерфейса и номер занимаемого слота.

#### **Режим Master**

Для интерфейса связи в режиме Master таблица содержит вкладки с сетевыми переменными для каждого опрашиваемого устройства.

![Сетевые Мастер](https://docs.owen.ru/book_img/2379/151512.jpg)

О настройках переменных см. подробнее в разделе [Режим Master](#topic-122345).

#### **Режим Slave**

Для интерфейса связи в режиме Slave таблица отображает считываемые сетевые переменные.

![Сетевые Slave переменные](https://docs.owen.ru/book_img/2379/151511.png)

О настройках переменных см. подробнее в разделе [Режим Slave](#topic-122346).

<a id="topic-122356"></a>

### Привязка переменных к параметрам

> [!NOTE]
> **Примечание.** Привязка переменных к параметрам доступна только для **приборов второго поколения**. Список приборов второго поколения см. в разделе [О программе](#topic-122293).

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

Для привязки переменной к параметру прибора следует:

1. Открыть **Настройки прибора**.

   > **Примечание.** Привязка переменных доступна не для всех параметров.

2. Выбрать параметр для привязки и нажать на кнопку «…» в графе **Переменная** окна настроек.

   ![Привязка переменных к параметрам](https://docs.owen.ru/book_img/2379/160675.png)

3. В открывшемся окне Переменных выбрать или создать переменную для привязки. Выделенные серым переменные доступны только для чтения.

   ![Таблица перем 6-17](https://docs.owen.ru/book_img/2379/151523.png)

   Имя привязанной переменной будет отображаться в графе «Переменная» напротив параметра.

   После привязки к параметрам переменные можно использовать в программе. Таким образом, значения параметров можно читать и изменять в программе.

> [!NOTE]
> **Примечание.** Если привязанная к параметру переменная используется для записи с помощью блока, а значение параметра не изменилось, то записанное через блок значение будет храниться в переменной один цикл. В следующем цикле значение переменной будет прочитано из параметра.

<a id="topic-122357"></a>

### Копирование переменных

Переменные можно копировать из проекта в проект для повторного использования и сокращения времени на разработку. Для копирования переменной следует выделить блок с переменной в исходном проекте и нажать кнопку ![Копировать](https://docs.owen.ru/book_img/2379/44699.png) на панели инструментов или выбрать команду **Копировать** в контекстном меню блока. Переменная вставляется в другой проект нажатием на кнопку ![Paste](https://docs.owen.ru/book_img/2379/36744.png) на панели инструментов или с помощью выбора команды **Вставить** в контекстном меню холста.

#### Переменные

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

Копирование элемента массива из одного проекта в другой происходит по следующим правилам:

- Если в проекте, в который выполняется вставка, отсутствует массив со свойствами (тип, размер) идентичными свойствам массива, которому принадлежит скопированный элемент, то вместе с элементом создаётся новый массив, полностью повторяющий свойства исходного.
- Если в проекте, в который выполняется вставка, уже существует массив с идентичными свойствами, то создание нового массива не происходит.

Правила копирования переменных типа массив не отличаются от правил копирования стандартных переменных.

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

> [!NOTE]
> **Примечание.** В проект для прибора, который не поддерживает тип данных с плавающей запятой, невозможно вставить переменные типа с плавающей запятой.

> [!NOTE]
> **Примечание.** Энергонезависимые переменные невозможно вставить в проект для прибора, который их не поддерживает.

#### Сервисные переменные

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

#### Переменные интерфейса связи

В другой проект можно скопировать только переменные интерфейса связи в режиме Slave для идентичного номера слота. Переменные интерфейса связи в режиме Master следует создавать вручную. Во время вставки скопированного блока сетевой переменной в проект проверяются все свойства переменных. Если в проекте есть переменная с полностью совпадающими свойствами, то она дублируется в блок. Переменные с отличающимися свойствами автоматически создаются в проекте. Если имя или регистры переменных совпадают, но другие свойства отличаются, то создается новая переменная, но возникает конфликт регистров или имен. Конфликт можно устранить в таблице переменных, задав другое имя или регистры.

<a id="topic-122358"></a>

## Библиотека

> [!WARNING]
> **Внимание.** Для разных моделей приборов список доступных элементов библиотеки компонентов может отличаться.

В открытом проекте на панели [Библиотека компонентов](#topic-122300) доступны разделы с компонентами для [разработки программы](#topic-122311).

Разделы библиотеки компонентов:

- [Функции](#topic-122359) служат для выполнения логических, арифметических операций и др. Функции не сохраняют состояния своих внутренних переменных. Число используемых функций ограничено только объемом памяти прибора;
- [Функциональные блоки (ФБ)](#topic-122385) служат для выполнения операций, требующих сохранения состояния своих внутренних переменных. К ФБ относятся триггеры, счетчики, таймеры и другие. Каждая модель прибора имеет собственное ограничение на количество используемых ФБ (см. *руководство по эксплуатации* прибора);
- раздел [Макросы проекта](#topic-122407) содержит созданные пользователем или загруженные с помощью [менеджера компонентов](#topic-122331) макросы;
- [Элементы управления](#topic-122410) служат для [программирования дисплея прибора](#topic-122321) и отображаются на панели во время работы c прибором с [монохромным текстовым ЖКИ](#topic-122322).

<a id="topic-122359"></a>

### Функции

- [Логические функции](#topic-122360);
- [Арифметические функции](#topic-122365);
- [Функции сравнения](#topic-122373);
- [Сдвиговые функции](#topic-122377);
- [Битовые функции](#topic-122377).

<a id="topic-122360"></a>

#### Логические функции

- [И (AND)](#topic-122361)
- [ИЛИ (OR)](#topic-122362)
- [НЕ (NOT)](#topic-122363)
- [Исключающее ИЛИ (XOR)](#topic-122364)

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

![log-el](https://docs.owen.ru/book_img/2379/37668.png)

Для функций **И** и **ИЛИ** следует учитывать, что неподключенные входы блоков будут иметь следующие состояния:

- для функции **И** – логическая «1»;
- для функции **ИЛИ** – логический «0».

В этом случае блоки выполняют функцию повторителя сигнала. Для увеличения числа входов у логических функций используется их каскадное включение:

![and 03](https://docs.owen.ru/book_img/2379/37008.png)

<a id="topic-122361"></a>

##### И (AND)

![and 01](https://docs.owen.ru/book_img/2379/37009.png)

Если на оба входа блока функции поступают сигналы логической «1» (все входы включены – контакты замкнуты), то на выходе появляется сигнал логической «1» (выход включен).

Работе функции соответствует таблица состояний:

| I1 | I2 | Q |
| --- | --- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |

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

|   |   |
| --- | --- |
| И | 0011 |
| И | 0101 |
| И | 0001 |

<a id="topic-122362"></a>

##### ИЛИ (OR)

![or 01](https://docs.owen.ru/book_img/2379/37027.png)

Если на один из входов блока функции поступает сигнал логической «1» (контакты замкнуты), то на выходе элемента появляется логическая «1» (выход включен).

Работе функции соответствует таблица состояний:

| I1 | I2 | Q |
| --- | --- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |

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

|   |   |
| --- | --- |
| ИЛИ | 0011 |
| ИЛИ | 0101 |
| ИЛИ | 0111 |

<a id="topic-122363"></a>

##### НЕ (NOT)

Функция используется для инвертирования сигнала.

![not 01](https://docs.owen.ru/book_img/2379/37026.png)

Если на вход блока функции поступает сигнал логического «0» (контакты разомкнуты), то на выходе элемента появляется логическая «1» (выход включен), и наоборот: сигнал инвертируется.

Работе функции соответствует таблица состояний:

| I1 | Q |
| --- | --- |
| 0 | 1 |
| 1 | 0 |

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

|   |   |
| --- | --- |
| НЕ | 01 |
| НЕ | 10 |

<a id="topic-122364"></a>

##### Исключающее ИЛИ (XOR)

![xor 01](https://docs.owen.ru/book_img/2379/37025.png)

Если только на один из входов блока функции поступает логическая «1», то на выходе элемента появляется логическая «1» (выход включен).

Работе функции соответствует таблица состояний:

| I1 | I2 | Q |
| --- | --- | --- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |

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

|   |   |
| --- | --- |
| XOR | 0011 |
| XOR | 0101 |
| XOR | 0110 |

<a id="topic-122365"></a>

#### Арифметические функции

Операции **арифметических функций** могут производиться только над значениями целочисленного типа и типа с плавающей запятой.

| Название | Целочисленный тип | Тип с плавающей запятой |
| --- | --- | --- |
| Сложение | [ADD](#topic-122366) | [fADD](#topic-122366) |
| Вычитание | [SUB](#topic-122367) | [fSUB](#topic-122367) |
| Умножение | [MUL](#topic-122368) | [fMUL](#topic-122368) |
| Деление | [DIV](#topic-122369) | [fDIV](#topic-122369) |
| Деление с остатком | [MOD](#topic-122370) | – |
| Возведение в степень | – | [fPOW](#topic-122371) |
| Модуль от числа | – | [fABS](#topic-122372) |

<a id="topic-122366"></a>

##### Сложение (ADD, fADD)

![add 01](https://docs.owen.ru/book_img/2379/37023.png)

Для операций над целочисленными значениями используется блок **ADD**, над значениями с плавающей запятой — **fADD**.

Результатом операции функции на выходе является сумма входных значений.

Если во время выполнения операции значение числа получается больше 4294967295 (32 бита), то биты, выходящие за разрядность 32 бита, отсекаются.

**Пример**

Применение блоков функции для сложения чисел 24 + 2 + 2 + 7 = Q = 35.

![add 02](https://docs.owen.ru/book_img/2379/37022.png)

<a id="topic-122367"></a>

##### Вычитание (SUB, fSUB)

![sub 01](https://docs.owen.ru/book_img/2379/37021.png)

Для операций над целочисленными значениями используется блок **SUB**, над значениями с плавающей запятой — **fSUB**.

Результатом операции функции на выходе является разность входных значений.

Если во время выполнения операции функции на входе **V1** значение числа меньше значения на входе **V2**, то результатом будет число, полученное сложением младшего числа плюс 0x100000000 (4294967296) минус значение числа большего: **(V1 + 0x100000000) – V2 = Q**.

**Пример**

Применение блока функции для вычитания чисел 24 – 2 = 22:

![Subs Example](https://docs.owen.ru/book_img/2379/46633.png)

Применения блока функции для вычитания чисел, где V1 меньше V2: 2 – 24 = Q = 4294967274.

![Subs Example2](https://docs.owen.ru/book_img/2379/46634.png)

<a id="topic-122368"></a>

##### Умножение (MUL, fMUL)

![mul 01](https://docs.owen.ru/book_img/2379/37019.png)

Для операций над целочисленными значениями используется блок **MUL**, над значениями с плавающей запятой — **fMUL**.

Результатом операции функции на выходе является произведение входных значений.

Если во время выполнения операции функции значение числа получается больше 4294967295 (32 бита), то биты, выходящие за разрядность 32 бита, отсекаются.

**Пример**

Применение блоков функции для перемножения чисел 24 · 2 · 2· 7 = Q = 672.

![mul 02](https://docs.owen.ru/book_img/2379/37018.png)

<a id="topic-122369"></a>

##### Деление (DIV, fDIV)

![div 01](https://docs.owen.ru/book_img/2379/37047.png)

Для операций над целочисленными значениями используется блок **DIV**, над значениями с плавающей запятой — **fDIV**.

Результатом операции функции на выходе является частное от деления входных значений.

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

В случае деления на 0 на выходе элемента будет значение 0.

**Пример**

Применение блока функции для деления чисел 24 ÷ 2 = Q = 12

![divexample](https://docs.owen.ru/book_img/2379/47550.png)

<a id="topic-122370"></a>

##### Деление с остатком (MOD)

![mod 01](https://docs.owen.ru/book_img/2379/37046.png)

Результатом операции функции на выходе является остаток от деления входных целочисленных значений.

В случае деления на 0 на выходе блока функции будет значение 0.

**Пример**

Применение блока функции для выделения целого остатка от деления числа 22 на 3.

![mod 03](https://docs.owen.ru/book_img/2379/37045.png)

<a id="topic-122371"></a>

##### Возведение числа в степень (fPOW)

![fpow 01](https://docs.owen.ru/book_img/2379/37044.png)

Результатом операции функции на выходе является переменная типа float, равная числу V1, возведенному в степень V2.

Блок работает только со значениями с плавающей запятой.

**Пример**

Применение блока функции для возведения числа 3 в степень числа 4.

![fpow 02](https://docs.owen.ru/book_img/2379/37043.png)

<a id="topic-122372"></a>

##### Взятие модуля от числа (fABS)

![fabs 01](https://docs.owen.ru/book_img/2379/37042.png)

Блок работает только со значениями с плавающей запятой.

Результатом операции функции на выходе является модуль подаваемого на вход значения.

**Пример**

Применение блоков функции для определения модулей чисел: |–3,4| = Q = |–3,4|, |6,7| = Q = 6,7

![fabs 02](https://docs.owen.ru/book_img/2379/37041.png)

![fabs 03](https://docs.owen.ru/book_img/2379/37040.png)

<a id="topic-122373"></a>

#### Функции сравнения

- [Равно (EQ)](#topic-122374);
- [Больше (GT, fGT)](#topic-122375);
- [Выбор (SEL)](#topic-122376).

<a id="topic-122374"></a>

##### Равно (EQ)

![eq 01](https://docs.owen.ru/book_img/2379/37039.png)

Результаты выполнения операции блока на выходе сравнения входных значений:

- V1 = V2 → Q = 1;
- V1 > V2 → Q = 0;
- V1 < V2 → Q = 0.

**Пример**

![eq 02](https://docs.owen.ru/book_img/2379/37038.png)

<a id="topic-122375"></a>

##### Больше (GT, fGT)

![gt 01](https://docs.owen.ru/book_img/2379/37057.png)

Результаты выполнения операции блока на выходе при сравнении входных значений:

- V1 = V2 → Q = 0;
- V1 > V2 → Q = 1;
- V1 < V2 → Q = 0.

Для сравнения целочисленных значений используется блок **GT**, для значений с плавающей запятой – блок **fGT**.

**Пример**

![gt 02](https://docs.owen.ru/book_img/2379/37056.png)

<a id="topic-122376"></a>

##### Выбор (SEL, fSEL)

> [!NOTE]
> **Примечание.** Функция **Выбор (SEL, fSEL)** в Owen Logic называется **Тернарная условная операция сравнения**.

![sel 01](https://docs.owen.ru/book_img/2379/37055.png)

Если **V1** равен логическому «0», то результатом выполнения операции блока на выходе является входной сигнал **V2**. Если **V1** равен логической «1», то результатом выполнения операции блока на выходе является входной сигнал **V3**.

- V1 = 0 → Q = V2;
- V1 = 1 → Q = V3.

Для выбора целочисленных значений используется блок **SEL**, для значений с плавающей запятой — блок **fSEL**.

**Пример**

![sel 02](https://docs.owen.ru/book_img/2379/37054.png)

![80](https://docs.owen.ru/book_img/2379/45055.png)

<a id="topic-122377"></a>

#### Сдвиговые функции

- [Логический сдвиг влево (SHL)](#topic-122378);
- [Логический сдвиг вправо (SHR)](#topic-122379).

<a id="topic-122378"></a>

##### Побитовый логический сдвиг влево (SHL)

Побитовый логический сдвиг влево (SHL) используется для выполнения операции побитового логического сдвига операнда **X** влево на **N** бит с дополнением нулями справа.

![shl 01](https://docs.owen.ru/book_img/2379/37053.png)

**Пример**

Применение для сдвига числа 38 (десятичное) = 00100110 (двоичное).

![shl 02](https://docs.owen.ru/book_img/2379/37052.png)

<a id="topic-122379"></a>

##### Побитовый логический сдвиг вправо (SHR)

Побитовый логический сдвиг вправо (SHR) используется для выполнения операции побитового логического сдвига операнда **X** вправо на **N** бит с дополнением нулями слева.

![shr 01](https://docs.owen.ru/book_img/2379/37051.png)

**Пример**

Применение для сдвига числа 152 (десятичное) = 10011000 (двоичное).

![shr 02](https://docs.owen.ru/book_img/2379/37050.png)

<a id="topic-122380"></a>

#### Битовые функции

- [Чтение бита (EXTRACT)](#topic-122381);
- [Запись бита (PUTBIT)](#topic-122382);
- [Дешифратор (DC32)](#topic-122383);
- [Шифратор (CD32)](#topic-122384).

<a id="topic-122381"></a>

##### Чтение бита (EXTRACT)

Чтение бита (EXTRACT) используется для выполнения операции чтения значения бита **N** в числе на входе **X**. Биты нумеруются с конца. Число на входе **Х** задается в десятичной системе. Выходное значение **Q** всегда двоичное (0 или 1).

![extract 01](https://docs.owen.ru/book_img/2379/37049.png)

**Пример**

Применения блока для чтения пятого бита из числа 81 (десятичное) = 1010001 (двоичное).

![extract 02](https://docs.owen.ru/book_img/2379/37048.png)

<a id="topic-122382"></a>

##### Запись бита (PUTBIT)

Запись бита (PUTBIT) используется для выполнения операции записи в числе **X** значения бита **N** в состояние, указанное на входе **B** (логические «0» или «1»). Число на входе Х задается в десятичной системе. Выходное значение **Q** – целочисленное.

![putbit 01](https://docs.owen.ru/book_img/2379/37077.png)

**Пример**

Применения записи четвертого бита в сигнале логической «1» для числа 38 (десятичное) = 100110 (двоичное).

![putbit 02](https://docs.owen.ru/book_img/2379/37076.png)

<a id="topic-122383"></a>

##### Дешифратор (DC32)

Дешифратор (DC32) используется для выполнения операции преобразования двоичного кода на входе в позиционный код на выходе. Перед выполнением операции над значением на входе предварительно выполняется побитовая логическая операция «И» с операндом 0x1F (11111b).

![dc32 01](https://docs.owen.ru/book_img/2379/37075.png)

Работе дешифратора соответствует приведенная таблица состояний:

![dc32 02](https://docs.owen.ru/book_img/2379/37074.png)

**Пример**

![dc32 03](https://docs.owen.ru/book_img/2379/37073.png)

<a id="topic-122384"></a>

##### Шифратор (CD32)

Шифратор (CD32) используется для выполнения операции преобразования позиционного кода на входе в двоичный код на выходе.

![cd32 01](https://docs.owen.ru/book_img/2379/37072.png)

Если входное двоичное значение имеет более одной логической «1» в разрядах, то работа шифратора ведется только со старшим единичным разрядом.

Работе шифратора соответствует таблица состояний.

![cd32 02](https://docs.owen.ru/book_img/2379/37071.png)

<a id="topic-122385"></a>

### Функциональные блоки

- [Триггеры](#topic-122386);
- [Таймеры](#topic-122392);
- [Генераторы](#topic-122398);
- [Счетчики](#topic-122400);
- [Регуляторы](#topic-122404).

<a id="topic-122386"></a>

#### Триггеры

- [RS-триггер с приоритетом выключения (RS)](#topic-122387);

- [SR-триггер с приоритетом включения (SR)](#topic-122388)

  ;

- [Детектор переднего фронта импульса (RTRIG)](#topic-122389);

- [Детектор заднего фронта импульса (FTRIG)](#topic-122390);

- [D-триггер (DTRIG)](#topic-122391).

<a id="topic-122387"></a>

##### RS-триггер с приоритетом выключения

RS-триггер с приоритетом выключения используется для переключения с фиксацией состояния во время поступления коротких импульсов на соответствующий вход. На выходе **Q** появится логическая «1» по фронту сигнала на входе **S**.

![rs 01](https://docs.owen.ru/book_img/2379/37070.png)

Работу триггера поясняет приведенная на рисунке ниже диаграмма.

![rs 02](https://docs.owen.ru/book_img/2379/37069.png)

В случае одновременного поступления сигналов на оба входа приоритетным является сигнал входа **R**.

<a id="topic-122388"></a>

##### SR-триггер с приоритетом включения

SR-триггер с приоритетом включения используется для переключения с фиксацией состояния в случае поступления коротких импульсов на соответствующий вход. На выходе **Q** появится логическая «1» по фронту сигнала на входе **S**.

![sr 01](https://docs.owen.ru/book_img/2379/37068.png)

Работу триггера поясняет приведенная на рисунке ниже диаграмма.

![sr 02](https://docs.owen.ru/book_img/2379/37097.png)

В случае одновременного поступления сигналов на оба входа приоритетным является сигнал входа **S**.

<a id="topic-122389"></a>

##### Детектор переднего фронта импульса (RTRIG)

Детектор переднего фронта импульса (RTRIG) используется в случае необходимости иметь реакцию на изменение состояния дискретного входного сигнала. На выходе **Q** генерируется единичный импульс по переднему фронту входа **I**.

![rtrig 01](https://docs.owen.ru/book_img/2379/37096.png)

Работу детектора объясняет приведенная на рисунке ниже диаграмма.

![rtrig 02](https://docs.owen.ru/book_img/2379/37095.png)

<a id="topic-122390"></a>

##### Детектор заднего фронта импульса (FTRIG)

Детектор заднего фронта импульса (FTRIG) используется в случае необходимости иметь реакцию на изменение состояния дискретного входного сигнала. На выходе **Q** генерируется единичный импульс по заднему фронту входа **I**.

![ftrig 01](https://docs.owen.ru/book_img/2379/37094.png)

Работу детектора объясняет приведенная на рисунке ниже диаграмма.

![ftrig 02](https://docs.owen.ru/book_img/2379/37093.png)

<a id="topic-122391"></a>

##### D-триггер (DTRIG)

D-триггер (DTRIG) используется для формирования импульса включения выхода на интервал времени импульса на входе **D**, выходной интервал будет синхронизирован с тактовой частотой на входе **С**.

На выходе **Q** триггера появится сигнал логической «1» по фронту тактовых импульсов на входе **С** при наличии сигнала логической «1» на входе **D**. Возврат выхода **Q** в сигнал логического «0» произойдет по фронту тактовых импульсов на входе **С** при наличии сигнала логического «0» на входе **D**.

Вход **S** принудительно устанавливает выход **Q** в состояние логической «1».

Вход **R** является приоритетным и устанавливает выход **Q** в состояние логического «0».

![dtrig 01](https://docs.owen.ru/book_img/2379/37092.png)

Работу триггера объясняет приведенная на рисунке ниже диаграмма.

![dtrig 02](https://docs.owen.ru/book_img/2379/37091.png)

<a id="topic-122392"></a>

#### Таймеры

- [Импульс включения заданной длительности (TP)](#topic-122393);
- [Таймер с задержкой включения (TON)](#topic-122394);
- [Таймер с задержкой отключения (TOF)](#topic-122395);
- [Интервальный таймер (CLOCK)](#topic-122396);
- [Интервальный таймер с недельным циклом (CLOCKWEEK)](#topic-122397).

<a id="topic-122393"></a>

##### Импульс включения заданной длительности (TP)

Импульс включения заданной длительности (TP) используется для формирования импульса включения выхода на заданный интервал времени. На выходе **Q** блока появляется сигнал логической «1» по фронту входного сигнала **I**. После запуска выход **Q** не реагирует на изменение значения входного сигнала в течение интервала T<sub>имп</sub>. По истечение интервала T<sub>имп</sub> выходной сигнал сбрасывается в логический «0».

![tp 01](https://docs.owen.ru/book_img/2379/37090.png)

Работу импульса объясняет приведенная на рисунке ниже диаграмма.

![tp 02](https://docs.owen.ru/book_img/2379/37089.png)

Допустимый диапазон значений Т<sup>имп</sup> от 0 до 4147200000 мс или 48 дней.

![Write to FB TP](https://docs.owen.ru/book_img/2379/155718.png)

Значения параметров ФБ можно задавать с помощью блока Write to FB, как показано на рисунке выше, либо настраивать на панели свойств:

![tp 03](https://docs.owen.ru/book_img/2379/37088.png)

<a id="topic-122394"></a>

##### Таймер с задержкой включения (TON)

Таймер с задержкой включения (TON) используется для операции задержки передачи сигнала. На выходе **Q** таймера появится сигнал логической «1» с задержкой относительно фронта входного сигнала **I** продолжительностью не менее длительности **Ton** и выключится по спаду входного сигнала.

![ton 01](https://docs.owen.ru/book_img/2379/37107.png)

Работу таймера объясняет приведенная на рисунке ниже диаграмма.

![ton 02](https://docs.owen.ru/book_img/2379/37106.png)

Допустимый диапазон значений **Т** от 0 до 4147200000 мс или 48 дней.

![Write to FB TON](https://docs.owen.ru/book_img/2379/155717.png)

Значения параметров ФБ можно задавать с помощью блока Write to FB, как показано на рисунке выше, либо настраивать на панели свойств:

![ton 03](https://docs.owen.ru/book_img/2379/37105.png)

<a id="topic-122395"></a>

##### Таймер с задержкой отключения (TOF)

Таймер с задержкой отключения (TOF) используется для задержки отключения выхода. На выходе **Q** таймера появится сигнал логической «1» по фронту сигнала на входе **I**, отсчет времени задержки отключения **Toff** начнется по каждому спаду входного сигнала. После отключения входного сигнала на выходе появится сигнал логического «0» с задержкой **Toff**.

![tof 01](https://docs.owen.ru/book_img/2379/37104.png)

Работу таймера объясняет приведенная на рисунке ниже диаграмма.

![tof 02](https://docs.owen.ru/book_img/2379/37103.png)

Допустимый диапазон значений Тзад от 0 до 4147200000 мс или 48 дней.

![Write to FB TOF](https://docs.owen.ru/book_img/2379/155716.png)

Значения параметров ФБ можно задавать с помощью блока Write to FB, как показано на рисунке выше, либо настраивать на панели свойств:

![tof 03](https://docs.owen.ru/book_img/2379/37102.png)

<a id="topic-122396"></a>

##### Интервальный таймер (CLOCK)

> [!NOTE]
> **Примечание.** Интервальный таймер (CLOCK) доступен только для приборов с часами реального времени.

Интервальный таймер (CLOCK) используется для формирования импульса включения выхода **Q** по часам реального времени. Время включения **Th** и отключения **ТI** выхода устанавливают в качестве параметров таймера.

![clock 01](https://docs.owen.ru/book_img/2379/37101.png)

Работу таймера объясняет приведенная на рисунке ниже диаграмма.

![clock 03](https://docs.owen.ru/book_img/2379/37099.png)

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

![clock 04](https://docs.owen.ru/book_img/2379/37098.png)

Допустимый диапазон значений Т<sub>вкл.</sub> и Т<sub>откл</sub>. от 0,00 с до 24 ч.

Дата и время включения и отключения настраивается на панели свойств ФБ.

![clock 02](https://docs.owen.ru/book_img/2379/37100.png)

<a id="topic-122397"></a>

##### Интервальный таймер с недельным циклом (CLOCKWEEK)

> [!NOTE]
> **Примечание.** Интервальный таймер с недельным циклом (CLOCKWEEK) доступен только для приборов с часами реального времени.

Интервальный таймер с недельным циклом (CLOCKWEEK) используется для формирования импульса включения выхода **Q** по часам реального времени с учетом дней недели. Время включения **Th** и отключения **TI** выхода **Q** и дни недели работы устанавливают в качестве параметров таймера.

![clockweek 01](https://docs.owen.ru/book_img/2379/37127.png)

Работу таймера объясняет диаграмма на рисунке ниже.

![clockweek 02](https://docs.owen.ru/book_img/2379/37125.png)

Внутренняя структура таймера имеет следующий вид.

![clockweek 03](https://docs.owen.ru/book_img/2379/37124.png)

Допустимый диапазон значений Т<sub>вкл</sub> и Т<sub>откл</sub> от 0,00 с до 24 ч.

Настройка времени включения и отключения и указание дней недели производится на панели свойств ФБ.

![clockweek 04](https://docs.owen.ru/book_img/2379/37126.png)

<a id="topic-122398"></a>

#### Генераторы

- [Генератор прямоугольных импульсов (BLINK)](#topic-122399).

<a id="topic-122399"></a>

##### Генератор прямоугольных импульсов (BLINK)

Генератор прямоугольных импульсов (BLINK) используется для формирования прямоугольных импульсов пульсации. На выходе **Q** генератора формируются импульсы с заданными параметрами длительности включенного (Т<sub>вкл</sub> – сигнал логической «1») и отключенного (Т<sub>откл</sub> – сигнал логического «0») состояния на время действия управляющего сигнала на входе **I** (сигнал логической «1»).

![blink 01](https://docs.owen.ru/book_img/2379/37123.png)

Работу генератора поясняет приведенная на рисунке ниже диаграмма.

![blink 02](https://docs.owen.ru/book_img/2379/37122.png)

Допустимый диапазон значений Т<sub>вкл</sub> и Т<sub>откл</sub>: от 0 до 4233600000 мс или 49 дней.

![Write to FB Blink](https://docs.owen.ru/book_img/2379/155715.png)

Значения параметров ФБ можно задавать с помощью блока Write to FB, как показано на рисунке выше, либо настраивать на панели свойств:

Параметр Th соответствует Т<sub>вкл</sub>.

Параметр TI соответствует Т<sub>откл</sub>.

![blink 03](https://docs.owen.ru/book_img/2379/37121.png)

<a id="topic-122400"></a>

#### Счетчики

- [Инкрементный счетчик с автосбросом (CT)](#topic-122401);
- [Универсальный счетчик (CTN)](#topic-122402);
- [Инкрементный счетчик (CTU)](#topic-122403).

<a id="topic-122401"></a>

##### Инкрементный счетчик с автосбросом (CT)

Инкрементный счетчик с автосбросом (CT) используется для подсчета заданного числа импульсов **N** (вход **N** – уставка числа импульсов). На выходе **Q** счетчика появится импульс сигнала логической «1» с длительностью рабочего цикла прибора (Tцикл), если число приходящих на вход **С** импульсов достигнет установленного значения **N**.

![ct 01](https://docs.owen.ru/book_img/2379/37120.png)

Работу счетчика поясняет приведенная на рисунке ниже диаграмма.

![ct 02](https://docs.owen.ru/book_img/2379/37119.png)

Допустимый диапазон значений числа импульсов **N**: от 0 до 65535.

![Write to FB CT](https://docs.owen.ru/book_img/2379/155714.png)

Значения параметров ФБ можно задавать с помощью блока Write to FB, как показано на рисунке выше, либо настраивать на панели свойств: 

![ct 03](https://docs.owen.ru/book_img/2379/37118.png)

<a id="topic-122402"></a>

##### Универсальный счетчик (CTN)

Универсальный счетчик (CTN) используется для прямого и обратного счета. Операция «прямой счет» выполняется по переднему фронту импульса на входе прямого счета **U**, что увеличивает значение выходного сигнала **Q**. Импульсы, приходящие на вход **D** («обратный счет»), уменьшают значение выхода **Q**. В случае поступления на вход **R** сигнала логической «1», выход счетчика **Q** устанавливается в значение входа **N**.

![ctn 01](https://docs.owen.ru/book_img/2379/37137.png)

Работу счетчика поясняет приведенная на рисунке ниже диаграмма.

![ctn 02](https://docs.owen.ru/book_img/2379/37136.png)

В случае одновременного поступления сигналов на входы **U** и **D** приоритетным является сигнал входа **U**.

Допустимый диапазон значений числа импульсов N: от 0 до 65535.

![Write to FB CTN](https://docs.owen.ru/book_img/2379/155713.png)

Значения параметров ФБ можно задавать с помощью блока Write to FB, как показано на рисунке выше, либо настраивать на панели свойств:

![ctn 03](https://docs.owen.ru/book_img/2379/37135.png)

<a id="topic-122403"></a>

##### Инкрементный счетчик (CTU)

Инкрементный счетчик (CTU) используется для подсчета числа импульсов, приходящих на вход **С**. На выходе **Q** счетчика появится импульс сигнала логической «1», если число приходящих на вход импульсов достигнет установленного значения на входе **N** (**N** – уставка).

![ctu 01](https://docs.owen.ru/book_img/2379/37134.png)

Работу счетчика поясняет приведенная на рисунке ниже диаграмма.

![ctu 02](https://docs.owen.ru/book_img/2379/37133.png)

> [!NOTE]
> **Примечание.** Блок **Запись в ФБ** для CTU не работает. Вместо CTU рекомендуется использовать универсальный счетчик [CTN](#topic-122402).

Допустимый диапазон значений числа импульсов **N**: от 0 до 65535.

Счетчик сбрасывается в 0 по переднему фронту импульса на входе **R**. В случае одновременного поступления сигналов на входы приоритетным является сигнал входа **R**.

Число импульсов N задается на панели свойств ФБ.

![ctu 03](https://docs.owen.ru/book_img/2379/37132.png)

<a id="topic-122404"></a>

#### Регуляторы

- [ПИД-регулятор для приборов первого поколения (PID)](#topic-122405)
- [ПИД-регулятор для приборов второго поколения (PID REG)](#topic-122406)

<a id="topic-122405"></a>

##### ПИД-регулятор для приборов первого поколения (PID)

![pid 01](https://docs.owen.ru/book_img/2379/37131.png)

ПИД-регулятор используется для реализации пропорционально-интегрально-дифференциального (ПИД) закона регулирования.

![pid 02v2](https://docs.owen.ru/book_img/2379/37130.png)

###### Входы блока

**Входы блока**

| Название | Тип | Описание | Значения |
| --- | --- | --- | --- |
| E | Булевский | Разрешение на работу блока. В выключенном состоянии на выход блока подается значение, заданное в свойстве «выходная мощность» | 0 – Выключен;<br>1 – Включен |
| Pv | С плавающей запятой | Текущее значение регулируемой величины |   |
| Sp | С плавающей запятой | Заданное значение регулируемой величины |   |

###### Выходы блока

**Выходы блока**

| Название | Тип | Описание | Значения |
| --- | --- | --- | --- |
| Pwr | С плавающей запятой | Выходная мощность, % | 0…100 |

###### Свойства

**Описание свойств**

| Название | Тип | Описание | Значения |
| --- | --- | --- | --- |
| Режим работы регулятора | Булевский | Режимы работы регулятора:<br>• режим «нагреватель», используется для управления исполнительными механизмами, воздействие которых приводит к росту значения регулируемой величины;<br>• режим «холодильник», используется для управления исполнительными механизмами, воздействие которых приводит к снижению значения регулируемой величины | 0 – Нагреватель;<br>1 – Холодильник |
| Выходная мощность | С плавающей запятой | Выходная мощность в выключенном состоянии, % | 0…100 |
| Дифференциальный коэффициент | С плавающей запятой | Дифференциальный коэффициент с которым работает ПИД | –3,402823E+38…3,402823E+38 |
| Интегральный коэффициент | С плавающей запятой | Интегральный коэффициент с которым работает ПИД | –3,402823E+38…3,402823E+38 |
| Пропорциональный коэффициент | С плавающей запятой | Пропорциональный коэффициент с которым работает ПИД | 0…100 |
| Минимальная мощность (значение по умолчанию) | С плавающей запятой | Нижнее ограничение выдаваемой мощности, % | 0…100 (20) |
| Максимальная мощность (значение по умолчанию) | С плавающей запятой | Верхнее ограничение выдаваемой мощности, % | 0…100 (80) |
| Запуск АНР | Булевский | Переменная, которая генерирует запуск автонастройки регулятора в случае подачи значения «1». Значение данной переменной задается с помощью блока «Запись в ФБ» | 0 – Стоп;<br>1 – Запуск |

###### Автонастройка

Автонастройка ПИД-регулятора проводится с помощью блоков [чтения и записи ФБ](#topic-122317) (![write to FB](https://docs.owen.ru/book_img/2379/36765.png), ![read From Fb](https://docs.owen.ru/book_img/2379/36764.png)).

![pid 03](https://docs.owen.ru/book_img/2379/37128.png)

Для запуска автонастройки следует добавить блок **Запись в ФБ** и привязать его к переменной **Запуск АНР** ПИД-регулятора.

![pid 04](https://docs.owen.ru/book_img/2379/37147.png)

Значения остальных параметров ФБ можно задавать с помощью блока **Запись в ФБ**, как показано на рисунке выше, либо настраивать на панели свойств.

С помощью блоков **Чтение из ФБ** считываются значения параметров **Рассчитанный пропорциональный коэффициент**, **Рассчитанный интегральный коэффициент**, **Рассчитанный дифференциальный коэффициент** и **Флаг окончания автонастройки**.

Для старта автонастройки следует подать сигнал логической «1» на вход **E**.

По завершении процесса автонастройки для чтения доступны новые значения коэффициентов: **Рассчитанный пропорциональный коэффициент**, **Рассчитанное время интегрирования** и **Рассчитанное время дифференцирования**. Параметр **Флаг окончания автонастройки** выставляется в значение логической единицы. Если после автонастройки сбросить вход **Запуск АНР** в значение логического нуля, то сбросится и флаг окончания.

> [!WARNING]
> **Внимание.** Флаг окончания автонастройки находится в состоянии логической единицы один цикл.

Если сбросить вход **Запуск АНР** в значение логического нуля до окончания настройки, то процесс останавливается, флаг окончания не выставляется, новые значения коэффициентов не вычисляются.

Во время процесса настройки на выход ПИД-регулятора подается тестовая мощность, ограниченная значениями параметров **Максимальная мощность** и **Минимальная мощность**.

Последовательность автонастройки для режима «Нагреватель»:

1. Текущее значение меньше уставки, на выход блока подается максимальная мощность (в соответствии с настройками).
2. Как только текущее значение станет больше уставки, на выход блока подается минимальная мощность.
3. Повторение шагов 1 и 2 еще один раз.
4. Рассчитанные параметры ПИД-регулятора подаются на соответствующие выходы, и выставляется флаг окончания.

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

<a id="topic-122406"></a>

##### ПИД-регулятор для приборов второго поколения (PID REG)

> [!NOTE]
> **Примечание.** В линейке приборов ПР103 PID REG доступен только для модификации ПР103\[М02\].

![PIDрег](https://docs.owen.ru/book_img/2379/149589.png)

ПИД-регулятор используется для реализации пропорционально-интегрально-дифференциального (ПИД) закона регулирования.

Выходная мощность ПИД-регулятора высчитывается по формуле:

![Формула ПИД-рег](https://docs.owen.ru/book_img/2379/149588.png), где

*Xp* — полоса пропорциональности (единицы измерения);

*Ti* — интегральный коэффициент \[ c \];

*Td* — дифференциальный коэффициент \[ c \];

*e (t)* —рассогласование;

*MV (t)* — выход ПИД.

###### Входы блока

**Входы блока**

| Название | Тип | Описание | Значения |
| --- | --- | --- | --- |
| E | Булевский | Разрешение на работу регулятора. В выключенном состоянии на выход подается значение, заданное в свойстве «Выходная мощность в выключенном состоянии» | 0 – Выключен;<br>1 – Включен |
| Pv | С плавающей запятой | Текущее значение регулируемой величины | –9999...9999\* |
| Sp | С плавающей запятой | Задаваемое значение регулируемой величины |   |

\*Если на вход будет подано значение, выходящее за диапазон, то выход Pwr регулятора будет сброшен на значение мощности, указанное в параметре «Выходная мощность в выключенном состоянии».

###### Выходы блока

**Выходы блока**

| Название | Тип | Описание | Значения |
| --- | --- | --- | --- |
| Pwr | С плавающей запятой | Выходная мощность регулятора |   |

###### Входы, доступные через Write to FB

**Входы, доступные через Write to FB**

| Название | Тип | Описание | Значения |
| --- | --- | --- | --- |
| Режим работы регулятора | Булевский | Режимы работы регулятора:<br>• режим «нагреватель», используется для управления исполнительными механизмами, воздействие которых приводит к росту значения регулируемой величины;<br>• режим «холодильник», используется для управления исполнительными механизмами, воздействие которых приводит к снижению значения регулируемой величины | 0 – Нагреватель;<br>1 – Холодильник |
| Запуск АНР | Булевский | Управление автонастройкой регулятора | 0 – Автонастройка выключена<br>1 – Автонастройка запущена |
| Полоса пропорциональности | С плавающей запятой | Полоса пропорциональности ПИД регулятора, ед.изм. | 0..9999 |
| Интегральная постоянная времени | С плавающей запятой | Интегральная постоянная времени, сек | 0..4000 |
| Дифференциальная постоянная времени | С плавающей запятой | Дифференциальная постоянная времени, сек | 0..4000 |
| Выходная мощность в выключенном состоянии | С плавающей запятой | Состояние выхода Pwr при значении 0 на входе E | -9999..9999 |
| Максимальная мощность | С плавающей запятой | Верхнее ограничение выдаваемой мощности | -9999..9999 |
| Минимальная мощность | С плавающей запятой | Нижнее ограничение выдаваемой мощности | -9999..9999 |
| Зона нечувствительности | С плавающей запятой | Дельта от уставки/2, в которой выходная мощность регулятора остается неизменной, ед.изм |   |
| Тип выхода | Булевский | Выбор выходного сигнала регулятора | 0 – Мощность<br>1 – КЗР дискретный |
| Полное время хода | С плавающей запятой | Время перемещения штока клапана из полностью закрытого в полностью открытое состояние, сек | 5..999\*\* |
| Минимальное время импульса | С плавающей запятой | Минимальная длительность импульса управления задвижкой, сек | 0,001..100 |
| Время выборки люфта | С плавающей запятой | Время выборки люфта клапана, сек | 0..10 |
| Скорость изменения уставки | С плавающей запятой | Скорость изменения уставки, ед.изм/сек | 0 – Функция отключена<br>0...9999 |
| Ручной режим работы регулятора | Булевский | Флаг перевода регулятора в ручной режим | 0 – Автоматический режим<br>1 – Ручной режим |
| Ручное управление выходом «Больше» | Булевский | В ручном режиме команда подачи сигнала «Больше» на выход блока |   |
| Ручное управление выходом «Меньше» | Булевский | В ручном режиме команда подачи сигнала «Меньше» на выход блока |   |
| Начальное значение регулируемой величины для АНР (Pv_0) | С плавающей запятой | Значение регулируемой величины, которое будет на входе Pv при подаче нулевой мощности (объект в состоянии покоя). Параметр необходим для корректного проведения автонастройки | -9999..9999 |

\*\*Для применения нового полного времени хода задвижки нужно перезапустить блок при помощи переключения сигнала на входе E.

###### Выходы, доступные через Read from FB

**Выходы, доступные через Read from FB**

| Название | Тип | Описание | Значения |
| --- | --- | --- | --- |
| Флаг окончания автонастройки | Булевский | Флаг окончания автонастройки | 0 – АНР не завершена<br>1 – АНР завершена |
| Рассчитанная полоса пропорциональности | С плавающей запятой | Рассчитанная после автонастройки полоса пропорциональности ПИД регулятора, ед.изм. | 0..9999 |
| Рассчитанная интегральная постоянная времени | С плавающей запятой | Рассчитанная после автонастройки интегральная постоянная времени, сек | 0..4000 |
| Рассчитанная дифференциальная постоянная времени | С плавающей запятой | Рассчитанная после автонастройки дифференциальная постоянная времени, сек | 0..4000 |
| Сигнал «Больше» | Булевский | Сигнал на открытие клапана |   |
| Сигнал «Меньше» | Булевский | Сигнал на закрытие клапана |   |

###### Автонастройка

Автонастройка ПИД-регулятора проводится с помощью блоков [чтения и записи в ФБ](#topic-122317).

![Пид-рег2](https://docs.owen.ru/book_img/2379/149587.png)

Для запуска автонастройки следует добавить блок **Write to FB** и привязать его к переменной **Запуск АНР** ПИД-регулятора.

![Пид-рег](https://docs.owen.ru/book_img/2379/149586.png)

Значения остальных параметров ФБ можно задавать с помощью блока **Write to FB**, как показано на рисунке выше, либо настраивать на панели свойств.

С помощью блоков **Read from FB** считываются значения параметров **Рассчитанная полоса пропорциональности**, **Рассчитанная интегральная постоянная времени**, **Рассчитанная дифференциальная постоянная времени** и **Флаг окончания автонастройки**.

Для старта автонастройки следует подать сигнал логической «1» на вход **E**.

По завершении процесса автонастройки для чтения доступны новые значения коэффициентов: **Рассчитанный пропорциональный коэффициент**, **Рассчитанное время интегрирования** и **Рассчитанное время дифференцирования**. Параметр **Флаг окончания автонастройки** выставляется в значение логической единицы.

> [!WARNING]
> **Внимание.** Флаг окончания автонастройки находится в состоянии логической единицы один цикл.

Если сбросить вход **Запуск АНР** в значение логического нуля до окончания настройки, то процесс останавливается, флаг окончания не выставляется, новые значения коэффициентов не вычисляются.

> [!WARNING]
> **Внимание.** Для корректного проведения автонастройки необходимо задать параметр **«начальное значение регулируемой величины для АНР»**. Он должен быть равен регулируемой величине, которое соответствует нулевому воздействию (объект находится в состоянии покоя).

Во время процесса настройки на выход ПИД-регулятора подается тестовая мощность, ограниченная значениями параметров **Максимальная мощность** и **Минимальная мощность**.

Последовательность автонастройки для режима «Нагреватель»:

![График АНР](https://docs.owen.ru/book_img/2379/149585.png)

1. Текущее значение меньше уставки на величину, большую чем *Х = 0,04\*(Sp-Pv_0)*, на выход блока подается максимальная мощность (в соответствии с настройками).
2. Как только текущее значение станет больше уставки на величину, большую чем *Х = 0,04\*(Sp-Pv_0)*, на выход блока подается минимальная мощность.
3. Повторение шагов 1 и 2 еще один раз.
4. Рассчитанные параметры ПИД-регулятора подаются на соответствующие выходы, и выставляется флаг окончания (на один цикл).

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

###### Работа с дискретным КЗР

Для работы с дискретной задвижкой необходимо в соответствующем параметре (Тип выхода) указать значение **«КЗР дискретный»**, либо, при работе с данным параметром через **Write to FB** записать в него значение «1».

Для корректной работы необходимо задать параметры задвижки: **Время полного хода**, **Минимальное время импульса** и **Время выборки люфта**.

Доступ к управляющим сигналам (Больше/Меньше) осуществляется через соответствующие выходы **Read from FB** блока регулятора.

На выходе **Pwr** в данном режиме отображается виртуальное положение задвижки (оно может отличаться от фактического).

При снятии логической «1» со входа E задвижка остается в текущем положении.

Для быстрой настройки рекомендуем воспользоваться готовыми макросами из Менеджера компонентов:

- Для управления мощностью — блок **PID AT\_**;
- Макрос с полным функционалом в режиме управления мощностью — **PID AT_F\_**;
- Для управления дискретным КЗР – блок **PID Valve\_**;
- Макрос с полным функционалом в режиме управления дискретным КЗР — **PID Valve_F\_**.

###### Ручной режим

Работа в режиме управления мощностью: при переводе регулятора в ручной режим (вход **Ручной режим работы регулятора** устанавливается в значение 1) происходит фиксация вычисленного значения мощности.

Работа в режиме управления дискретным КЗР: при переводе регулятора в ручной режим (вход **Ручной режим работы регулятора** устанавливается в значение 1) происходит фиксация вычисленного положения задвижки и становятся доступными входы по ручному управлению открытием/закрытием клапана.

<a id="topic-122407"></a>

### Макросы проекта

Раздел **Макросы проекта** содержит созданные пользователем или загруженные с помощью [менеджера компонентов](#topic-122331) макросы.

![macros 09](https://docs.owen.ru/book_img/2379/37146.png)

Для добавления макроса в проект следует перетащить макрос из панели [Библиотека компонентов](#topic-122300) на холст.

![macros 08](https://docs.owen.ru/book_img/2379/37145.png)

Чтобы удалить макрос из панели, следует выделить нужный макрос и нажать на кнопку ![delete1](https://docs.owen.ru/book_img/2379/37144.png).

Рекомендации по созданию макросов приведены в разделе [Работа с макросами](#topic-122332).

<a id="topic-122408"></a>

### Функция на ST

Если в проекте [созданы функции на языке ST](#topic-122334), они будут доступны в библиотеке компонентов.

![ST functions in project](https://docs.owen.ru/book_img/2379/109137.png)

#### Места использования функции

Для просмотра все мест использования функции следует:

1. Нажать ПКМ на имя функции.

2. Выбрать пункт ![Go Find Usages](https://docs.owen.ru/book_img/2379/109136.png) **Показать места использования…**.

   ![ST functions Go To Use](https://docs.owen.ru/book_img/2379/109135.png)

   В нижней части окна откроется панель **Места использования функции**, на которой отобразятся места использования функции на схеме и в редакторе функций.

   ![ST functions Usage](https://docs.owen.ru/book_img/2379/109134.png)

3. Нажать ПКМ на строку с местом использования функции.

4. Выбрать пункт ![Go To Usages](https://docs.owen.ru/book_img/2379/109133.png) **Перейти к месту использования**.

   ![ST functions Go To Use Pannel](https://docs.owen.ru/book_img/2379/109132.png)

   Фокус сместится в места использования функции на схеме или в редакторе функции.

   > **Примечание.** Двойной клик ЛКМ приводит к тому же результату.

Если в ходе работы с программой места использования функции изменились, следует обновит панель **Места использования функции**:

1. Нажать ПКМ на любую строку панели.
2. Выбрать пункт ![Refresh Usages](https://docs.owen.ru/book_img/2379/109131.png) **Обновить все места использования**.

#### Переход к редактору функций

Для перехода к [Редактору функций](#topic-122334) следует:

1. Нажать ПКМ на имя функции.

2. Выбрать пункт **Редактировать функцию**.

   ![ST functions Go To Editor](https://docs.owen.ru/book_img/2379/109130.png)

   Откроется [редактор функции](#topic-122334).

#### Удаление функции

Для удаления функции из проекта следует:

1. Нажать ПКМ на имя функции.

2. Выбрать пункт **Удалить компонент**.

   ![ST functions Delete](https://docs.owen.ru/book_img/2379/109129.png)

   > **Предупреждение.** Если функция используется на схеме и/или в других функциях, удаление может привести к ошибкам компиляции.

<a id="topic-122409"></a>

### Функциональный блок на ST

Если в проекте [созданы функциональные блоки на языке ST](#topic-122335), они будут доступны в библиотеке компонентов.

![Библиотека компонентов ФБ-ST](https://docs.owen.ru/book_img/2379/124625.png)

#### Места использования функционального блока

Для просмотра всех мест использования функции следует:

1. Нажать ПКМ на имя функционального блока.

2. Выбрать пункт ![Go Find Usages](https://docs.owen.ru/book_img/2379/109136.png) **Показать места использования…**.

   ![ФБ места использования](https://docs.owen.ru/book_img/2379/124624.png)

   В нижней части окна откроется панель **Места использования функции**, на которой отобразятся места использования функции на схеме и в редакторе.

   ![ФБ места использования окно](https://docs.owen.ru/book_img/2379/124623.png)

3. Нажать ПКМ на строку с местом использования функционального блока.

4. Выбрать пункт ![Go To Usages](https://docs.owen.ru/book_img/2379/109133.png) **Перейти к месту использования**.

   ![ФБ места использования окно2](https://docs.owen.ru/book_img/2379/124622.png)

   Фокус сместится в места использования функционального блока на схеме или в редакторе.

   > **Примечание.** Двойной клик ЛКМ приводит к тому же результату.

Если в ходе работы с программой места использования функциональных блоков изменились, следует обновит панель **Места использования функционального блока**:

1. Нажать ПКМ на любую строку панели.
2. Выбрать пункт ![Refresh Usages](https://docs.owen.ru/book_img/2379/109131.png) **Обновить все места использования**.

#### Переход к редактору функционального блока

Для перехода к [Редактору функционального блока](#topic-122335) следует:

1. Нажать ПКМ на имя функции.

2. Выбрать пункт **Редактировать функциональный блок**.

   ![ФБ переход в редактор](https://docs.owen.ru/book_img/2379/124621.png)

   Откроется [редактор функционального блока](#topic-122335).

#### Удаление функции

Для удаления функции из проекта следует:

1. Нажать ПКМ на имя функции.

2. Выбрать пункт **Удалить компонент**.

   ![ST functions Delete](https://docs.owen.ru/book_img/2379/109129.png)

   > **Предупреждение.** Если функция используется на схеме и/или в других функциях, удаление может привести к ошибкам компиляции.

<a id="topic-122410"></a>

### Элементы управления

- [Метка](#topic-122411);
- [Ввод/вывод (int/float)](#topic-122412);
- [Ввод/вывод (Boolean)](#topic-122413);
- [Динамический текст](#topic-122414);
- [Комбинированный список (ComboBox)](#topic-122415).

Элементы используются для оформления дисплея прибора линейки приборов ПР200 и ИПП120.

<a id="topic-122411"></a>

#### Метка

Элемент **Метка** предназначен для размещения текстового блока в строке экрана.

##### Настройка свойств

Для корректного отображения на экране прибора следует указать координаты расположения и ввести текст на панели свойств.

![УВ Метка](https://docs.owen.ru/book_img/2379/145915.png)

##### Координаты

Для расположения первого символа элемента по осям X и Y следует указать координаты. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо от 0 до 15 (в зависимости от свойства **Длина**);
- по оси Y — сверху вниз (в зависимости от количества строк экрана, установленного в редакторе экранов).

Значение координат (целое число) можно задать в выпадающем меню в строке координаты (X и Y настраиваются одинаково):

![sign 02](https://docs.owen.ru/book_img/2379/37160.png)

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

Для создания бегущей строки следует выбрать вариант **Переменная** и нажать кнопку **Выбор**. Откроется [таблица переменных](#topic-122352), в ней следует выбрать переменную целочисленного типа, которая будет определять значение координаты, и нажать кнопку **ОК**. Выбранная переменная будет отображаться в поле ввода:

![sign 03](https://docs.owen.ru/book_img/2379/37159.png)

##### Параметры

- **Текст** — в поле вводится текст, который будет отображаться на экране прибора. Длина текста не должна превышать значение, указанное для параметра **Длина**.
- **Длина** — максимальное количество отображаемых символов блока.
- **Видимость** — к параметру привязывается булевская переменная, которая определяет видимость элемента.

![УВ Метка1](https://docs.owen.ru/book_img/2379/145914.png)

##### Отображение

В редакторе экранов отображается, как будет выглядеть элемент **Метка** на экране прибора.

![УВ Метка2](https://docs.owen.ru/book_img/2379/145913.png)

<a id="topic-122412"></a>

#### Ввод/вывод (int/float)

Элемент **Ввод/вывод (int/float)** предназначен для вывода на экран прибора или чтения с экрана значения целочисленной или вещественной переменной.

##### Настройка свойств

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

![УВ ввод вывод](https://docs.owen.ru/book_img/2379/145912.png)

##### Диапазон

- **Контроль** — ограничение значения, которое пользователь вводит с лицевой панели прибора. Ограничение не распространяется на значение, полученное в ходе работы программы;
- **Максимум** — максимальное значение параметра для ввода;
- **Минимум** — минимальное значение параметра для ввода.

##### Координаты

Для расположения первого символа элемента по осям X и Y следует указать координаты. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо от 0 до 15 (в зависимости от свойства **Длина**);
- по оси Y — сверху вниз (в зависимости от количества строк экрана, установленного в редакторе экранов).

Значение координат (целое число) можно задать в выпадающем меню в строке координаты (X и Y настраиваются одинаково):

![sign 02](https://docs.owen.ru/book_img/2379/37160.png)

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

Для создания бегущей строки следует выбрать вариант **Переменная** и нажать кнопку **Выбор**. Откроется [таблица переменных](#topic-122352), в ней следует выбрать переменную целочисленного типа, которая будет определять значение координаты, и нажать кнопку **ОК**. Выбранная переменная будет отображаться в поле ввода:

![sign 03](https://docs.owen.ru/book_img/2379/37159.png)

##### Параметры

- **Переменная** — привязка к переменной проекта (целочисленной или с плавающей точкой). Для выбора переменной следует нажать кнопку «**…**» и выбрать в [таблице переменных](#topic-122352);
- **Тип переменной** — выбор типа переменной: целочисленный или вещественный. Если переменная еще не привязана, то необходимо задать тип;
- **Знаков** — суммарное количество отображаемых знаков до и после запятой;
- **После запятой** — количество знаков после запятой: до 6 знаков или определяется автоматически (Авто). Более подробную информацию читайте в *руководстве по эксплуатации* прибора;
- **Текст до** — текст слева от числового значения;
- **Текст после** — текст справа от числового значения;
- **Редактируемо** — если выбрано **Да**, то значение привязанной переменной можно изменять с помощью кнопок на лицевой панели прибора;
- **Длина** — общая максимальная длина поля, включающая текст до и после значения переменной и само значение переменной.
- **Видимость** — к параметру привязывается булевская переменная, которая определяет видимость элемента.

![УВ ввод вывод1](https://docs.owen.ru/book_img/2379/145911.png)

##### Отображение

В редакторе экранов отображается, как будет выглядеть элемент **Ввод/вывод (int/float)** на экране прибора.

![УВ ввод вывод2](https://docs.owen.ru/book_img/2379/145910.png)

<a id="topic-122413"></a>

#### Ввод/вывод (boolean)

Элемент **Ввод/вывод (boolean)** предназначен для вывода на экран или чтения с экрана значения булевской переменной.

##### Настройка свойств

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

![УВ ввод вывол бул](https://docs.owen.ru/book_img/2379/145909.png)

##### Координаты

Для расположения первого символа элемента по осям X и Y следует указать координаты. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо от 0 до 15 (в зависимости от свойства **Длина**);
- по оси Y — сверху вниз (в зависимости от количества строк экрана, установленного в редакторе экранов).

Значение координат (целое число) можно задать в выпадающем меню в строке координаты (X и Y настраиваются одинаково):

![sign 02](https://docs.owen.ru/book_img/2379/37160.png)

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

Для создания бегущей строки следует выбрать вариант **Переменная** и нажать кнопку **Выбор**. Откроется [таблица переменных](#topic-122352), в ней следует выбрать переменную целочисленного типа, которая будет определять значение координаты, и нажать кнопку **ОК**. Выбранная переменная будет отображаться в поле ввода:

![sign 03](https://docs.owen.ru/book_img/2379/37159.png)

##### Параметры

- **Переменная** — привязка к булевской переменной проекта. Для выбора переменной следует нажать кнопку «**…**» и выбрать в [таблице переменных](#topic-122352);
- **Текст «True»** — текст, соответствующий значению переменной, равной «1»;
- **Текст «False»** — текст, соответствующий значению переменной, равной «0»;
- **Текст до** — текст слева от выводимого значения;
- **Текст после** — текст справа от выводимого значения;
- **Редактируемо** — если выбрано значение **Да**, то значение привязанной переменной можно изменять с помощью кнопок на лицевой панели прибора;
- **Длина** — общая максимальная длина поля, включающая текст до и после значения переменной и само значение переменной.
- **Видимость** — к параметру привязывается булевская переменная, которая определяет видимость элемента.

![boolean 01](https://docs.owen.ru/book_img/2379/37173.png)

##### Отображение

В редакторе экранов отображается, как будет выглядеть элемент **Ввод/вывод (boolean)** на экране прибора.

![УВ Ввод вывод бул1](https://docs.owen.ru/book_img/2379/145908.png)

<a id="topic-122414"></a>

#### Динамический текст

Элемент **Динамический текст** предназначен для вывода на экран прибора одной из нескольких текстовых строк в зависимости от значения привязанной переменной.

##### Настройка свойств

Для корректного отображения на экране прибора следует указать координаты расположения и ввести текст на панели свойств.

![УВ Динамический текст](https://docs.owen.ru/book_img/2379/145927.png)

##### Координаты

Для расположения первого символа элемента по осям X и Y следует указать координаты. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо от 0 до 15 (в зависимости от свойства **Длина**);
- по оси Y — сверху вниз (в зависимости от количества строк экрана, установленного в редакторе экранов).

Значение координат (целое число) можно задать в выпадающем меню в строке координаты (X и Y настраиваются одинаково):

![sign 02](https://docs.owen.ru/book_img/2379/37160.png)

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

Для создания бегущей строки следует выбрать вариант **Переменная** и нажать кнопку **Выбор**. Откроется [таблица переменных](#topic-122352), в ней следует выбрать переменную целочисленного типа, которая будет определять значение координаты, и нажать кнопку **ОК**. Выбранная переменная будет отображаться в поле ввода:

![sign 03](https://docs.owen.ru/book_img/2379/37159.png)

##### Параметры

- **Переменная** — привязка к целочисленной переменной проекта. Для выбора переменной следует нажать кнопку «**…**» и выбрать в [таблице переменных](#topic-122352);

- **Список строк** — таблица, **Значение** строки которой выводится на экран при соответствии номера (**№**) строки значению привязанной целочисленной переменной (**Переменная**). В столбце **Символов** указывается количество символов в строке. Пиктограмма ![Пиктограмма ошибка](https://docs.owen.ru/book_img/2379/145926.png) выводится в случае превышения значения параметра **Длина**, при наведении курсора на пиктограмму отобразится подсказка с описанием ошибки.

  ![УВ Динамический текст1](https://docs.owen.ru/book_img/2379/145925.png)

- **Длина** — максимальная длина поля. В случае превышения длины текст будет отображаться не полностью.

- **Видимость** — к параметру привязывается булевская переменная, которая определяет видимость элемента.

##### Отображение

В редакторе экранов отображается, как будет выглядеть элемент **Динамический текст** на экране прибора.

![dynamic 05](https://docs.owen.ru/book_img/2379/37169.png)

<a id="topic-122415"></a>

#### Комбинированный список (ComboBox)

Элемент **Комбинированный список (ComboBox)** используется для выбора одной строки из нескольких текстовых строк кнопками прибора и записи в привязанную переменную значения, соответствующего выбору.

##### Настройка свойств

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

![УВ Комбо Бокс](https://docs.owen.ru/book_img/2379/145924.png)

##### Координаты

Для расположения первого символа элемента по осям X и Y следует указать координаты. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо от 0 до 15 (в зависимости от свойства **Длина**);
- по оси Y — сверху вниз (в зависимости от количества строк экрана, установленного в редакторе экранов).

Значение координат (целое число) можно задать в выпадающем меню в строке координаты (X и Y настраиваются одинаково):

![sign 02](https://docs.owen.ru/book_img/2379/37160.png)

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

Для создания бегущей строки следует выбрать вариант **Переменная** и нажать кнопку **Выбор**. Откроется [таблица переменных](#topic-122352), в ней следует выбрать переменную целочисленного типа, которая будет определять значение координаты, и нажать кнопку **ОК**. Выбранная переменная будет отображаться в поле ввода:

![sign 03](https://docs.owen.ru/book_img/2379/37159.png)

##### Параметры

- **Переменная** — привязка к целочисленной переменной проекта. Для выбора переменной следует нажать кнопку «**…**» и выбрать в [таблице переменных](#topic-122352).

- **Список строк** — таблица, номер (**№**) каждой строки которой служит для записи в привязанную целочисленную переменную при выборе **Значения** на дисплее прибора. В столбце **Символов** указывается количество символов в строке. Пиктограмма![Пиктограмма ошибка](https://docs.owen.ru/book_img/2379/145921.png) выводится в случае превышения значения параметра **Длина**, при наведении курсора на пиктограмму отобразится подсказка с описанием ошибки.

  ![УВ Комбо Бокс1](https://docs.owen.ru/book_img/2379/145920.png)

- **Длина** — максимальная длина поля. В случае превышения длины текст будет отображаться не полностью.

- **Видимость** — к параметру привязывается булевская переменная, которая определяет видимость элемента.

##### Отображение

В редакторе экранов отображается, как будет выглядеть элемент **Комбинированный список (ComboBox)** на экране прибора.

![combo 05](https://docs.owen.ru/book_img/2379/37186.png)

<a id="topic-122416"></a>

### Базовые элементы

- [Текст](#topic-122417);

- [Индикатор](#topic-122418);

- [Индикатор выполнения](#topic-122419);

- [Динамический текст](#topic-122420);

- [Ввод/вывод int/float](#topic-122421);

- [Ввод/вывод времени](#topic-122422);

- [Ввод/вывод IP](#topic-122423);

- [Линия](#topic-122424);

- [Многоугольник](#topic-122425);

- [Круг](#topic-122426);

- [Кнопка](#topic-122427);

- [Переключатель](#topic-122428);

- [Группа переключателей](#topic-122429);

- [Изображение](#topic-122430);

- [Меню](#topic-122431)

  ;

- [График](#topic-122432);

- [Стрелочный индикатор](#topic-122433).

Данные элементы используются для создания графического интерфейса взаимодействия пользователя с логикой выполняемой программы на приборах с графическим цветным ЖКИ. Если на экран добавлено несколько доступных для редактирования элементов визуализации, то порядок их выбора при помощи кнопки SEL будет определяться порядком в списке «Компоненты экрана» снизу вверх (первыми будут выделяться нижние элементы):

![порядок базлвых элементов](https://docs.owen.ru/book_img/2379/134447.png)

Изменить порядок элементов можно перетащив (drag & drop) элемент в списке Компоненты экрана или при помощи контекстного меню, нажав ПКМ на элемент на экране:

![порядок элементов контекстное меню](https://docs.owen.ru/book_img/2379/134446.png)

Ниже приведены данные о размере оперативной памяти (ОЗУ визуал.), требуемой для отображения элементов визуализации, для приборов с графическим цветным ЖКИ:

| Элемент визуализации | Элемент визуализации | Занимаемое ОЗУ визуал., байт | Дополнительно | Примечание |
| --- | --- | --- | --- | --- |
| Пустой экран | Пустой экран | 252 |   |   |
| Физические кнопки | Физические кнопки | 80 | Расчет ОЗУ:<br>80 байт (каждая кнопка) + 20 байт \* количество переменных + 10 байт\*количество действий + 10 байт (обязательный запас)<br>Примеры расчёта:<br>1. Изменение переменной по короткому нажатию = 80+20\*1+10\*1+10 = 120 байт<br>2. Переход на экран по короткому нажатию кнопки = 80+20\*0+10\*1+10 = 100 байт<br>3. Изменение переменной по короткому и длинному нажатию и переход на экран по короткому = 80+20\*2+10\*3+10 = 160 байт |   |
| Текст | Текст | 464 | Если задана видимость по переменной: +20 байт за привязку переменной видимости |   |
| Индикатор | Индикатор | Размер по умолчанию, без рамки – 630 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости | Объем занимаемой ОЗУ напрямую зависит от размеров элемента и толщины рамки:<br>• Чем больше размеры элемента, тем больший объем памяти требуется для его отображения;<br>• Рамка 0 px (отключена) - минимальный объем занимаемой ОЗУ для элемента данного размера;<br>• Рамка 1 px - объем занимаемой ОЗУ увеличивается по сравнению с элементом без рамки;<br>• Рамка 2 px и более - объем занимаемой ОЗУ увеличивается по сравнению с элементом с рамкой 1 px. При толщине рамки более 2 px объем занимаемой ОЗУ не увеличивается и соответствует объему, занимаемому элементом с рамкой толщиной 2 px |
| Индикатор выполнения | Индикатор выполнения | 408 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Видимость значения: +16 байт за отображение показаний (Значение, видимость = Да) |   |
| Динамический текст | Динамический текст | 836 (для одной строки) | +4 байта за каждую дополнительную строку<br>Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Контроль ввода: +12 байт за доступ к редактированию (Запретить редактирование = Нет) |   |
| Ввод/вывод int/float | Ввод/вывод int/float | 776 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Контроль ввода: +24 байт за доступ к редактированию (Запретить редактирование = Нет) |   |
| Ввод вывод времени | Ввод вывод времени | 688 только дата **или** только время<br>704 дата **и** время | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Контроль ввода: +28 байт за доступ к редактированию (Запретить редактирование = Нет) |   |
| Ввод/вывод IP адреса | Ввод/вывод IP адреса | 676 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Контроль ввода: +24 байт за доступ к редактированию (Запретить редактирование = Нет) |   |
| Линия | прямая | 182 | Если задана видимость по переменной: +20 байт за привязку переменной видимости |   |
| Линия | ломаная | 190 | Если задана видимость по переменной: +20 байт за привязку переменной видимости |   |
| Многоугольник | Прямоугольник | 338 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Заливка: +132 байта (Внешний вид, заливка = Да)<br>Настройка действий (переход на экран или изменение переменной) = 10 байт \* количество действий + 26 байт |   |
| Многоугольник | Треугольник | 334 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Заливка: +132 байта (Внешний вид, заливка = Да)<br>Настройка действий (переход на экран или изменение переменной) = 10 байт \* количество действий + 26 байт |   |
| Многоугольник | Ромб | 338 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Заливка: +132 байта (Внешний вид, заливка = Да)<br>Настройка действий (переход на экран или изменение переменной) = 10 байт \* количество действий + 26 байт |   |
| Круг | Круг целиком | Размер по умолчанию, без заливки — 978<br>Размер по умолчанию, с заливкой — 1346 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Настройка действий (переход на экран или изменение переменной) = 10 байт \* количество действий + 26 байт | Объем занимаемой ОЗУ напрямую зависит от размеров элемента и наличия заливки:<br>• Чем больше размеры элемента, тем больший объем памяти требуется для его отображения;<br>• Объем занимаемой ОЗУ элемента с заливкой больше, чем у элемента без заливки.<br>При определенных комбинациях настроек параметр "Толщина" у рамки фокуса может незначительно влиять на занимаемое ОЗУ визуализации |
| Круг | Сектор круга | Размер по умолчанию, без заливки — 1502<br>Размер по умолчанию, с заливкой — 1878 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Настройка действий (переход на экран или изменение переменной) = 10 байт \* количество действий + 26 байт | Объем занимаемой ОЗУ напрямую зависит от размеров элемента и наличия заливки:<br>• Чем больше размеры элемента, тем больший объем памяти требуется для его отображения;<br>• Объем занимаемой ОЗУ элемента с заливкой больше, чем у элемента без заливки.<br>При определенных комбинациях настроек параметр "Толщина" у рамки фокуса может незначительно влиять на занимаемое ОЗУ визуализации |
| Кнопка | Кнопка | Прямоугольная без скруглений, без рамки — 894 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Настройка действий (переход на экран или изменение переменной) = 10 байт \* количество действий + 26 байт<br>+6 байт за добавление рамки толщиной 1px (для прямоугольной кнопки без скруглений)<br>+20 байт за добавление рамки толщиной 2 px и более (для  прямоугольной кнопки без скруглений) | Для круглой кнопки и прямоугольной со скруглением объем занимаемой ОЗУ напрямую зависит от размеров элемента:<br>• Чем больше размеры элемента, тем больший объем памяти требуется для его отображения.<br>При определенных комбинациях настроек параметр "Толщина" у рамки фокуса может незначительно влиять на занимаемое ОЗУ визуализации |
| Переключатель | Переключатель | Размер по умолчанию, без рамки — 1192 | Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости | Объем занимаемой ОЗУ напрямую зависит от размеров элемента:<br>• Чем больше размеры элемента, тем больший объем памяти требуется для его отображения.<br>При определенных комбинациях настроек параметр "Толщина" у рамки фокуса может незначительно влиять на занимаемое ОЗУ визуализации |
| Группа переключателей | Группа переключателей | 1688 (для группы с одной ячейкой) | + 208 байт за каждую ячейку<br>Если используется переменная: +20 байт за переменную<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости |   |
| Изображение | Изображение | 372 | Если задана видимость по переменной: +20 байт за привязку переменной видимости<br>Настройка действий (переход на экран или изменение переменной) = 10 байт \* количество действий + 26 байт<br>+ 32 байта за добавление рамки | Расчет заполнения пользовательского ПЗУ визуализации = Ширина\*Высота\*2.<br>В расчете участвует ширина и высота исходного изображения (в пикселях), загруженного в редактор визуализации<br>В случае копирования и привязки одного и того же изображения к нескольким элементам визуализации, дополнительный объем пользовательского ПЗУ визуализации не занимается |
| Меню | Меню | 1870 (для меню с одним пунктом) | + 298 байт за каждую строку<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости элемента или строки |   |
| График | без работы в фоне | Без перьев, масштаб времени 2 сек — 982 | Дополнительно за увеличение времени отображения:<br>От 2 байт на 3 секундах до 916 байт на 23:59:59<br>Дополнительно за каждое перо:<br>+ 20 байт (первое перо) + каждое последующее в зависимости от времени добавления (от 74 байт на 2 секундах до 990 байт на 23:59:59)<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости элемента или пера | Объем занимаемой ОЗУ напрямую зависит от ширины элемента:<br>• Чем шире элемент, тем больший объем памяти требуется для его отображения |
| График | работа в фоне | Без перьев, масштаб времени 2 сек — 1002 | Дополнительно за увеличение времени отображения:<br>От 6 байт на 3 секундах до 2748 байт на 23:59:59<br>Дополнительно за каждое перо:<br>+ 20 байт (первое перо) + каждое последующее в зависимости от времени добавления (от 94 байт на 2 секундах до 2842 байт на 23:59:59)<br>Если задана видимость по переменной: +20 байт за привязку переменной видимости элемента или пера | Объем занимаемой ОЗУ напрямую зависит от ширины элемента:<br>• Чем шире элемент, тем больший объем памяти требуется для его отображения |

<a id="topic-122417"></a>

#### Текст

Элемент **Текст** предназначен для размещения текстового блока в экране визуализации.

##### Настройка свойств

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

![текст](https://docs.owen.ru/book_img/2379/90351.png)

##### Координаты

Расположение элемента определяется по осям X и Y. Координаты задаются на панели свойств или перемещением элемента по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |
| **Внешний вид** | **Выравнивание** | Выравнивание отображаемого в элементе текста: по левому краю, по центру, по правому краю |
| **Внешний вид** | **Цвет шрифта** | Цвет отображаемого в элементе текста |
| **Внешний вид** | **Наличие фона** | Фон отображаемого в элементе текста |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого в элементе текста |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |
| **Данные** | **Текст** | В поле вводится текст, который будет отображаться в элементе |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

<a id="topic-122418"></a>

#### Индикатор

Элемент **Индикатор** предназначен для отображения значения булевской переменной в экране визуализации. Если значение переменной равно **1**, то индикатор принимает цвет «True». Если значение переменной равно **0**, то индикатор принимает цвет «False».

##### Настройка свойств

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

![индикатор](https://docs.owen.ru/book_img/2379/90372.png)

##### Координаты

Расположение элемента определяется по осям X и Y. Координаты задаются на панели свойств или перемещением элемента по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Цвет “True”** | Цвет элемента, если значение привязанной переменной равно TRUE |
| **Внешний вид** | **Цвет “False”** | Цвет элемента, если значение привязанной переменной равно FALSE |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |
| **Данные** | **Переменная** | К параметру привязывается булевская переменная для отображения |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

> [!NOTE]
> **Примечание.** Если к параметру **Переменная** не привязана переменная, то цвет элемента всегда будет **True**.

<a id="topic-122419"></a>

#### Индикатор выполнения

Элемент **Индикатор выполнения** предназначен для отображения значения целочисленной переменной или переменной с плавающей точкой в виде шкалы на экране визуализации.

##### Настройка свойств

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

![бар](https://docs.owen.ru/book_img/2379/90491.png)

##### Координаты

Расположение элемента определяется по осям X и Y. Координаты задаются на панели свойств или перемещением элемента по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана. Для вертикальной ориентации элемента значение Y должно быть больше значения Х.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Цвет** | Цвет шкалы элемента |
| **Внешний вид** | **Наличие фона** | Фон отображаемого элемента |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого элемента |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |
| **Данные** | **Переменная** | К параметру привязывается целочисленная переменная или переменная с плавающей точкой для отображения |
| **Данные** | **Тип переменной** | Тип привязанной к элементу переменной: с плавающей точкой, целочисленное |
| **Значение** | **Минимум** | 0 % шкалы элемента |
| **Значение** | **Максимум** | 100 % шкалы измерения |
| **Значение** | **Видимость** | Отображение значения шкалы в элементе |
| **Значение** | **Размер шрифта** | Размер шрифта отображаемого в элементе текста: 16, 32, 48 |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

<a id="topic-122420"></a>

#### Динамический текст

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

##### Настройка свойств

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

![динамический текст](https://docs.owen.ru/book_img/2379/90373.png)

##### Координаты

Расположение элемента определяется по осям X и Y. Координаты задаются на панели свойств или перемещением элемента по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |
| **Внешний вид** | **Цвет шрифта** | Цвет отображаемого в элементе текста |
| **Внешний вид** | **Наличие фона** | Фон отображаемого в элементе текста |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого в элементе текста |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |
| **Данные** | **Переменная** | К параметру привязывается переменная для хранения значений |
| **Данные** | **Тип переменной** | Выбор типа данных привязанной переменной: **целочисленное** и **булевское**<br>**Примечание.** Если выбран булевский тип переменной, то выпадающий список элемента может содержать только две строки.<br>Если выбран целочисленный тип переменной, то выпадающий список может содержать максимум 128 строк. |
| **Данные** | **Список строк** | В табличном виде значения переменной и соответствующие им наименования, которые будут отображаться в выпадающем списке элемента |
| **Контроль ввода** | **Запретить редактирование** | Установка/снятие запрета на изменение значения привязанной переменной с экрана прибора:<br>• если установлено значение **Да**, то значение привязанной переменной можно только просматривать, опция ввода будет недоступна;<br>• если установлено значение **Нет**, то ввод значения в элементе перезаписывает значение переменной |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

Для добавления новой строки в выпадающий список элемента следует:

1. Дважды кликнуть ЛКМ по элементу **Динамический текст** в редакторе экрана.
2. В открывшемся окне кликнуть ПКМ по одной из строк таблице.
3. Выбрать пункт **Добавить строку снизу**.

![динамический текст добвление значений](https://docs.owen.ru/book_img/2379/124135.png)

**Пример**

**Список строк**

|   |   |
| --- | --- |
| 0 | Стоп |
| 10 | Старт |
| 500 | Пауза |

<a id="topic-122421"></a>

#### Ввод/вывод int/float

Элемент **Ввод/вывод int/float** предназначен для ввода и отображения значения целочисленной переменной или переменной с плавающей запятой на экране визуализации.

##### Настройка свойств

![ввод int](https://docs.owen.ru/book_img/2379/90503.png)

*Ввод/вывод int*

![ввод float](https://docs.owen.ru/book_img/2379/90534.png)

*Ввод/вывод float*

| Группа | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- |
| **Внешний вид** | **Наличие фона** | Фон отображаемого в элементе текста |   |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого в элементе текста |   |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |   |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |   |
| **Данные** | **Переменная** | К параметру привязывается переменная |   |
| **Данные** | **Тип переменной** | Для ввода/вывода целого значения следует указать тип **Целочисленное**<br>Для ввода/вывода значения с плавающей запятой следует указать тип **С плавающей запятой** |   |
| **Значение** | **Количество знаков** | Количество отображаемых в элементе знаков | При выборе переменной float:<br>не может быть меньше или равно значению **Количество знаков после запятой** |
| **Значение** | Количество знаков после запятой **(настройка доступна только при выборе переменной float)** | Количество знаков в дробной части отображаемого в элементе значения | При изменении значения может потребоваться изменение значений **Максимум** и **Минимум**<br>(см. пример после таблицы) |
| **Значение** | **Отображать нули** | Настройка отображения незначащих нулей |   |
| **Значение** | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |   |
| **Значение** | **Цвет шрифта** | Цвет отображаемого в элементе текста |   |
| **Значение** | **Выравнивание** | Выравнивание отображаемого в элементе текста |   |
| **Контроль ввода** | **Запретить редактирование** | Если установлено значение **Да**, то значение привязанной переменной можно только просматривать, опция ввода не будет доступна. В противном случае ввод значения в элементе перезаписывает значение переменной |   |
| **Контроль ввода** | **Минимум** | Минимальное значение для ввода в элементе | При выборе переменной float:<br>ограничение для значения рассчитывается по формуле: 2147483648 / 10^значение свойства Количество знаков после запятой<br>При изменении значения может потребоваться изменение значения свойства **Количество знаков после запятой**<br>(см. пример после таблицы) |
| **Контроль ввода** | **Максимум** | Максимальное значение для ввода в элементе | При выборе переменной float:<br>ограничение для значения рассчитывается по формуле: -2147483647 / 10^значение свойства Количество знаков после запятой<br>При изменении значения может потребоваться изменение значения свойства **Количество знаков после запятой**<br>(см. пример после таблицы) |
| **Координаты** | **X** | Значение положения элемента по оси X.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Координаты** | **Y** | Значение положения элемента по оси Y.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и высотой экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Поведение** | **Видимость** | К параметру привязывается переменная типа Bool, которая определяет видимость элемента |   |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |   |
| **Размеры** | **Ширина** | Ширина элемента по оси X | Размеры элемента можно задать изменением границ объекта на поле экрана |
| **Размеры** | **Высота** | Высота элемента по оси Y | Размеры элемента можно задать изменением границ объекта на поле экрана |

**Пример**

Для элемента визуализации Ввод/вывод float при 8 отображаемых в элементе знаках необходимо установить отображение 6 знаков после запятой:

![Float1](https://docs.owen.ru/book_img/2379/155948.png)

При выборе значения 6 свойства **Количество знаков после запятой** будет отображена ошибка, с указанием пределов **Минимального** и **Максимального** значения, рассчитанных по формуле:

Значение **Минимум**= -2147483648 / 10^6 = -2147,483648

Значение **Максимум** = 2147483647 / 10^6 = 2147,483647

Введем значение **Минимум** и **Максимум** в рамках указанного диапазона, и выберем значение 6 свойства **Количество знаков после запятой**:

![Float2](https://docs.owen.ru/book_img/2379/155947.png)

Значение сменилось, на элементе визуализации отображается 6 знаков после запятой.

При попытке сменить значение **Минимум** или **Максимум**, на значение выходящее за пределы рассчитанного по формуле выше, отобразится сообщение об ошибке:

![Float3](https://docs.owen.ru/book_img/2379/155946.png)

Свойства **Количество знаков после запятой** и значение **Минимум** и **Максимум** взаимосвязаны.

> [!NOTE]
> **Примечание.** Если переменная для вывода выходит за границы, указанные в параметрах **Минимум** / **Максимум**, то на приборе элемент отобразит текущее состояние переменной и выделит красным рамку этого элемента.

<a id="topic-122422"></a>

#### Ввод/вывод времени

Элемент **Ввод/вывод времени** предназначен для ввода и отображения значения даты и времени на экране визуализации. Для хранения значения даты и времени используется целочисленная переменная, которая хранит количество секунд с 00:00:00 01 января 2000 г.

##### Настройка свойств

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

![ввод времени](https://docs.owen.ru/book_img/2379/90607.png)

##### Координаты

Расположение элемента определяется по осям X и Y. Координаты задаются на панели свойств или перемещением элемента по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Наличие фона** | Фон отображаемого в элементе текста |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого в элементе текста |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |
| **Внешний вид** | **Формат** | Выбор из выпадающего списка формата отображения даты и времени. Обозначения для формата:<br>• **ss** – секунды;<br>• **mm** – минуты;<br>• **hh** – часы;<br>• **DD** – день;<br>• **MM** – месяц;<br>• **YYYY** – год. |
| **Данные** | **Переменная** | К параметру привязывается переменная |
| **Значение** | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |
| **Значение** | **Цвет шрифта** | Цвет отображаемого в элементе текста |
| **Значение** | **Выравнивание** | Выравнивание отображаемого в элементе текста |
| **Контроль ввода** | **Запретить редактирование** | Если установлено значение **Да**, то значение привязанной переменной можно только просматривать, опция ввода не будет доступна. В противном случае ввод значения в элементе перезаписывает значение переменной |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

<a id="topic-122423"></a>

#### Ввод/вывод IP

Элемент **Ввод/вывод IP** предназначен для ввода и отображения значения IP-адреса (IPv4) на экране визуализации. Для хранения значения IP-адреса используется целочисленная переменная, значение которой рассчитывается по формуле:

![IP fig](https://docs.owen.ru/book_img/2379/92626.svg)

где *int* – значение целочисленной переменной;

*o1, o2, o3, o4* – октеты IP-адреса.

##### Настройка свойств

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

![ввод IP](https://docs.owen.ru/book_img/2379/90608.png)

##### Координаты

Расположение элемента определяется по осям X и Y. Координаты задаются на панели свойств или перемещением элемента по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Наличие фона** | Фон отображаемого в элементе текста |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого в элементе текста |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |
| **Данные** | **Переменная** | К параметру привязывается переменная |
| **Данные** | **Тип переменной** | Для ввода/вывода целого значения следует указать тип **Целочисленное** |
|   | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |
|   | **Цвет шрифта** | Цвет отображаемого в элементе текста |
|   | **Выравнивание** | Выравнивание отображаемого в элементе текста |
| **Контроль ввода** | **Запретить редактирование** | Если установлено значение **Да**, то значение привязанной переменной можно только просматривать, опция ввода не будет доступна. В противном случае ввод значения в элементе перезаписывает значение переменной |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

<a id="topic-122424"></a>

#### Линия

##### Настройка свойств

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

![Линия](https://docs.owen.ru/book_img/2379/131737.png)

##### Координаты

Расположение прямой линии определяется двумя точками, координаты которых по осям X и Y задаются на панели свойств или перемещением точек по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

Расположение ломаной линии определяется четырьмя точками.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Форма** | Форма отображаемой линии: **прямая**, **ломаная** |
| **Внешний вид** | **Толщина** | Толщина линии |
| **Внешний вид** | **Цвет** | Цвет элемента |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

<a id="topic-122425"></a>

#### Многоугольник

##### Настройка свойств

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

![многоугольники](https://docs.owen.ru/book_img/2379/131736.png)

##### Координаты

Расположение многоугольника определяется координатами его левого верхнего угла по осям X и Y. Координаты задаются на панели свойств или перемещением объекта по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Форма** | Форма отображаемого многоугольника: **треугольник**, **прямоугольник**, **ромб** |
| **Внешний вид** | **Толщина** | Толщина контура многоугольника |
| **Внешний вид** | **Цвет** | Цвет контура многоугольника |
| **Внешний вид** | **Заливка** | Наличие заливки фигуры |
| **Внешний вид** | **Цвет заливки «True»** | Цвет заливки фигуры, если значение привязанной переменной «True» |
| **Внешний вид** | **Цвет заливки «False»** | Цвет заливки фигуры, если значение привязанной переменой «False» |
| **Внешний вид** | **Вращение** | Вращение элемента вокруг центра в градусах |
| **Данные** | **Переменная** | К параметру привязывается переменная |
| **Действия** | **Настроить действия** | Выбор действия для перехода между экранами |
| **Действия** | **Короткое нажатие “ОК”** | Список действий, выполняемых по короткому нажатию на кнопку “ОК” |
| **Действия** | **Длинное нажатие “ОК”** | Список действий, выполняемых по длинному нажатию на кнопку “ОК” |
| **Действия** | **Удержание “ОК”** | Список действий, выполняемых при удержании кнопки “ОК” |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

<a id="topic-122426"></a>

#### Круг

##### Настройка свойств

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

![круг](https://docs.owen.ru/book_img/2379/131735.png)

##### Координаты

Расположение круга определяется координатами верхнего левого углового маркера по осям X и Y. Координаты задаются на панели свойств или перемещением объекта по полю экрана. Отсчет координат по обеим осям начинается с 0:

- по оси Х — слева направо, конечное значение определяется размерами элемента и шириной экрана;
- по оси Y — сверху вниз, конечное значение определяется размерами элемента и высотой экрана.

##### Размеры

Размеры элемента определяются по осям X и Y и задаются на панели свойств или изменением границ элемента на поле экрана.

##### Параметры

| Группа | Параметр | Описание |
| --- | --- | --- |
| **Внешний вид** | **Форма** | Форма отображаемого круга: **круг**, **сектор круга** |
| **Внешний вид** | **Толщина** | Толщина контура фигуры |
| **Внешний вид** | **Цвет рамки** | Цвет контура фигуры |
| **Внешний вид** | **Заливка** | Наличие заливки фигуры |
| **Внешний вид** | **Цвет заливки «True»** | Цвет заливки фигуры, если значение привязанной переменной «True» |
| **Внешний вид** | **Цвет заливки «False»** | Цвет заливки фигуры, если значение привязанной переменой «False» |
| **Данные** | **Переменная** | К параметру привязывается переменная |
| **Действия** | **Настроить действия** | Выбор действия для перехода между экранами |
| **Действия** | **Короткое нажатие “ОК”** | Список действий, выполняемых по короткому нажатию на кнопку “ОК” |
| **Действия** | **Длинное нажатие “ОК”** | Список действий, выполняемых по длинному нажатию на кнопку “ОК” |
| **Действия** | **Удержание “ОК”** | Список действий, выполняемых при удержании кнопки “ОК” |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |

<a id="topic-122427"></a>

#### Кнопка

Элемент **Кнопка** предназначен для переключения состояния переменной типа Bool.

![Свойства Кнопка](https://docs.owen.ru/book_img/2379/145867.png)

##### Настройка свойств

Для настройки необходимого вида элемента **Кнопка** на экране прибора доступны следующие свойства:

| Группа | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- |
| **Внешний вид** | **Форма** | Форма отображаемой кнопки: **прямоугольник** или **круг** |   |
| **Внешний вид** | **Толщина рамки** | Толщина контура кнопки |   |
| **Внешний вид** | **Закругление** | **Примечание.** Доступно только при выборе формы «Прямоугольник»<br>Скругление углов рамки |   |
| **Внешний вид** | **Цвет рамки «True»** | Цвет контура фигуры, если кнопка нажата |   |
| **Внешний вид** | **Цвет рамки «False»** | Цвет контура фигуры, если кнопка отжата |   |
| **Внешний вид** | **Цвет заливки «True»** | Цвет заливки фигуры, если кнопка нажата |   |
| **Внешний вид** | **Цвет заливки «False»** | Цвет заливки фигуры, если кнопка отжата |   |
| **Данные** | **Переменная** | К параметру привязывается переменная типа Bool |   |
| **Действия** | **Настроить действия** | Выбор действия для перехода между экранами |   |
| **Действия** | **Короткое нажатие “ОК”** | Список действий, выполняемых по короткому нажатию на кнопку “ОК” |   |
| **Действия** | **Длинное нажатие “ОК”** | Список действий, выполняемых по длинному нажатию на кнопку “ОК” |   |
| **Действия** | **Удержание “ОК”** | Список действий, выполняемых при удержании кнопки “ОК” |   |
| **Координаты** | **X** | Значение положения элемента по оси X. Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Координаты** | **Y** | Значение положения элемента по оси Y. Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и высотой экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Настройки текста** | **Выравнивание по горизонтали** | Выравнивание отображаемого в элементе текста: по левому краю, по центру, по правому краю |   |
| **Настройки текста** | **Выравнивание по вертикали** | Выравнивание отображаемого в элементе текста: по верхнему краю, по центру, по нижнему краю |   |
| **Настройки текста** | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |   |
| **Настройки текста** | **Текст «True»** | Отображаемый текст, если кнопка нажата |   |
| **Настройки текста** | **Текст «False»** | Отображаемый текст, если кнопка отжата |   |
| **Настройки текста** | **Цвет текста «True»** | Цвет отображаемого текста, если кнопка нажата |   |
| **Настройки текста** | **Цвет текста «False»** | Цвет отображаемого текста, если кнопка отжата |   |
| **Поведение** | **Видимость** | К параметру привязывается переменная типа Bool, которая определяет видимость элемента |   |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |   |
| **Размеры** | **Ширина** | Ширина элемента по оси X | Размеры элемента можно задать изменением границ объекта на поле экрана |
| **Размеры** | **Высота** | Высота элемента по оси Y | Размеры элемента можно задать изменением границ объекта на поле экрана |

<a id="topic-122428"></a>

#### Переключатель

Элемент **Переключатель** предназначен для управления состоянием переменной типа Bool, а также для отображения состояния этой переменной.

![Переключатель](https://docs.owen.ru/book_img/2379/151652.png)

*Внешний вид и панель Свойства элемента Переключатель*

##### Настройка свойств

Для настройки необходимого вида элемента **Переключатель** на экране прибора доступны следующие свойства:

| Группа | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- |
| **Внешний вид** | **Положение** | Вертикальное или горизонтальное расположение переключателя |   |
| **Внешний вид** | **Цвет заливки «True»** | Цвет заливки элемента, если переключатель включен |   |
| **Внешний вид** | **Цвет заливки «False»** | Цвет заливки элемента, если переключатель выключен |   |
| **Внешний вид** | **Толщина рамки** | Толщина контура элемента |   |
| **Внешний вид** | **Цвет рамки** | Цвет контура элемента |   |
| **Внешний вид** | **Цвет переключателя «True»** | Цвет переключателя в состоянии "включен" |   |
| **Внешний вид** | **Цвет переключателя «False»** | Цвет переключателя в состоянии "выключен" |   |
| **Данные** | **Переменная** | К параметру привязывается переменная типа Bool |   |
| **Контроль ввода** | **Запретить редактирование** | Установка/снятие запрета на изменение значения переключателя с экрана прибора |   |
| **Координаты** | **X** | Значение положения элемента по оси X.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана. |
| **Координаты** | **Y** | Значение положения элемента по оси Y.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и высотой экрана | Координаты можно задать перемещением объекта по полю экрана. |
| **Поведение** | **Видимость** | К параметру привязывается переменная типа Bool, которая определяет видимость элемента |   |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |   |
| **Размеры** | **Ширина** | Ширина элемента по оси X | Размеры элемента можно задать изменением границ объекта на поле экрана.<br>Пропорции переключателя сохраняются с соблюдением следующих правил:<br>– горизонтальное положение:<br>Длина = Ширина х 2<br>– вертикальное положение:<br>Длина = Ширина / 2 |
| **Размеры** | **Высота** | Высота элемента по оси Y | Размеры элемента можно задать изменением границ объекта на поле экрана.<br>Пропорции переключателя сохраняются с соблюдением следующих правил:<br>– горизонтальное положение:<br>Длина = Ширина х 2<br>– вертикальное положение:<br>Длина = Ширина / 2 |

<a id="topic-122429"></a>

#### Группа переключателей

Элемент **Группа переключателей** предназначен для управления списками параметров и отображения состояния этих списков:

- **радиокнопка** — допускает выбор только одного параметра из списка;
- **чекбокс** — допускает выбор одного или нескольких параметров из списка.

![Радиокнопка](https://docs.owen.ru/book_img/2379/151651.png)

*Внешний вид и панель Свойства элемента Группа переключателей*

##### Настройка свойств

Для настройки необходимого вида элемента **Группа переключателей** на экране прибора доступны следующие свойства:

| Группа | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- |
| **Внешний вид** | **Тип переключателей** | Выбор типа переключателя: радиокнопка или чекбокс |   |
| **Внешний вид** | **Наличие фона** | Наличие/отсутствие фона отображаемого в элементе текста |   |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого в элементе текста |   |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |   |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |   |
| **Внешний вид** | **Цвет переключателя** | Цвет рамки поля для установки метки |   |
| **Внешний вид** | **Толщина переключателя** | Толщина рамки поля для установки метки |   |
| **Внешний вид** | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |   |
| **Внешний вид** | **Цвет шрифта** | Цвет отображаемого в элементе текста |   |
| **Внешний вид** | **Цвет метки** | Цвет устанавливаемой метки |   |
| **Данные** | **Переменная** | К параметру привязывается целочисленная переменная |   |
| **Данные** | **Список переключателей**<br>(максимальное количество строк - 32) | Значения переменной и соответствующий им текст, который будет отображаться в элементе.<br>Для добавления строк нажмите "Редактировать" и воспользуйтесь контекстным меню открывшейся таблицы:<br>![Чекбокс1](https://docs.owen.ru/book_img/2379/151650.png)<br>Укажите значение переменной, а также текст для отображения в элементе | Добавление строк в список параметров также доступно на поле экрана:<br>1. Дважды кликните ЛКМ по элементу, размещенному на экране<br>2. Для добавления строк воспользуйтесь контекстным меню открывшейся таблицы:<br>![Чекбокс](https://docs.owen.ru/book_img/2379/151649.png)<br>3. Укажите значение переменной, а также текст для отображения в элементе |
| **Контроль ввода** | **Запретить редактирование** | Установка/снятие запрета на действие с экрана прибора:<br>• переключение между параметрами списка (для элемента радиокнопка);<br>• включение/отключение параметров списка (для элемента чекбокс) |   |
| **Координаты** | **X** | Значение положения элемента по оси X.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Координаты** | **Y** | Значение положения элемента по оси Y.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и высотой экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Поведение** | **Видимость** | К параметру привязывается переменная типа Bool, которая определяет видимость элемента |   |
| **Положение** | **Расположение переключателей** | Выбор расположения пунктов списка: горизонтальный или вертикальный |   |
| **Положение** | **Высота ячейки** | Высота ячейки для расположения пунктов списка |   |
| **Положение** | **Ширина ячейки** | Ширина ячейки для расположения пунктов списка |   |
| **Положение** | **Количество активных чекбоксов** | **Примечание.** Доступно только при выборе типа переключателя "Чекбокс"<br>Ограничение одновременного выбора нескольких параметров из списка.<br>Ограничение не может быть больше количества добавленных строк в Список переключателей |   |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |   |
| **Размеры** | **Ширина** | Ширина элемента по оси X | Размеры элемента можно задать изменением границ объекта на поле экрана |
| **Размеры** | **Высота** | Высота элемента по оси Y | Размеры элемента можно задать изменением границ объекта на поле экрана |

<a id="topic-122430"></a>

#### Изображение

##### Добавление пользовательского изображения в проект

Для добавления изображения:

1. Разместите в рабочей области объект **Изображение**.

   ![image visu](https://docs.owen.ru/book_img/2379/140373.png)

2. Дважды кликите ЛКМ по размещенной фигуре. Откроется окно выбора изображения.

   ![7 148](https://docs.owen.ru/book_img/2379/155040.png)

   > **Примечание.** Для выбора доступны следующие типы файлов: (\*.jpg; \*.jpeg; \*.jpe, \*.bmp).
   >
   > Максимальное разрешение изображения ограничено разрешением экрана устройства. Допускается уменьшение изображения в редакторе экрана Owen Logic.

3. Выберите изображение и нажмите **Открыть**.

##### Настройка свойств

Для настройки необходимого вида элемента **Изображение** на экране прибора доступны следующие свойства:

| Группа | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- |
| **Внешний вид** | **Толщина рамки** | Толщина рамки изображения |   |
| **Внешний вид** | **Цвет рамки** | Цвет рамки изображения |   |
| **Данные** | **Изображение** | Выбор файла изображения |   |
| **Действия** | **Настроить действия** | Выбор действия для перехода между экранами |   |
| **Действия** | **Короткое нажатие “ОК”** | Список действий, выполняемых по короткому нажатию на кнопку “ОК” |   |
| **Действия** | **Длинное нажатие “ОК”** | Список действий, выполняемых по длинному нажатию на кнопку “ОК” |   |
| **Действия** | **Удержание “ОК”** | Список действий, выполняемых при удержании кнопки “ОК” |   |
| **Координаты** | **X** | Значение положения элемента по оси X.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Координаты** | **Y** | Значение положения элемента по оси Y.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Поведение** | **Видимость** | К параметру привязывается булевская переменная, которая будет определять видимость элемента |   |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |   |
| **Размеры** | **Ширина** | Ширина элемента по оси X. Максимальное значение не более ширины загруженного изображения. | Размеры элемента можно задать изменением границ объекта на поле экрана. Ширина и высота элемента изменяются пропорционально размерам загруженного изображения. |
| **Размеры** | **Высота** | Высота элемента по оси Y. Максимальное значение не более высоты загруженного изображения. | Размеры элемента можно задать изменением границ объекта на поле экрана. Ширина и высота элемента изменяются пропорционально размерам загруженного изображения. |

> [!NOTE]
> **Примечание.** В случае копирования и привязки одного и того же изображения к нескольким элементам визуализации, не занимается дополнительный объем пользовательского ПЗУ визуализации (индикатор **Польз. ПЗУ. визуал.** в строке состояния).

<a id="topic-122431"></a>

#### Меню

Элемент **Меню** предназначен для перехода между экранами визуализации. К каждому пункту меню привязывается экран визуализации.

Для добавления компонента **Меню** на экран визуализации:

1. Разместите в рабочей области элемент **Меню**.

   ![В фокусе по умолчанию](https://docs.owen.ru/book_img/2379/154544.png)

2. Дважды кликните ЛКМ по размещенному элементу. Откроется окно Список строк Меню, в котором доступно редактирование строк.

   ![7 150](https://docs.owen.ru/book_img/2379/155059.png)

3. Добавьте необходимое количество строк.

   > **Примечание.** Максимальное количество строк — 128.

4. В столбце «Экран» укажите экран, на который будет выполняться переход в случае выбора данного пункта меню.

   > **Примечание.** Для выбора доступны все экраны проекта, кроме текущего.

5. В столбце «Текст» автоматически отображается название выбранного экрана. Для изменения текста нажмите на маркер ![Кнопка выбор текста](https://docs.owen.ru/book_img/2379/154542.png), расположенный в конце строки, и в открывшемся поле введите текст для отображения в пункте меню.

6. Настройте видимость добавленных строк, привязав переменные в столбце «Видимость».

7. Нажмите кнопку **ОК**.

##### Список свойств

Для настройки элемента **Меню** на экране прибора доступны следующие свойства:

| Группа | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- |
| **Внешний вид** | **Размер шрифта** | Размер отображаемого в элементе текста: 16, 32, 48 |   |
| **Внешний вид** | **Цвет шрифта** | Цвет отображаемого в элементе текста |   |
| **Внешний вид** | **Цвет фокуса** | Цвет строки в фокусе |   |
| **Внешний вид** | **Наличие фона** | Фон отображаемого в элементе текста |   |
| **Внешний вид** | **Цвет фона** | Цвет фона отображаемого в элементе текста |   |
| **Внешний вид** | **Толщина рамки** | Толщина рамки элемента |   |
| **Внешний вид** | **Цвет рамки** | Цвет рамки элемента |   |
| **Данные** | **Список строк** | Открывает окно редактирования строк |   |
| **Координаты** | **X** | Значение положения элемента по оси X.<br>Расположение элемента определяется координатами верхнего левого угла.<br>Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Координаты** | **Y** | Значение положения элемента по оси Y.<br>Расположение элемента определяется координатами верхнего левого угла.<br>Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и высотой экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Поведение** | **Видимость** | К параметру привязывается переменная типа Bool, которая определяет видимость элемента |   |
| **Поведение** | **В фокусе по умолчанию** | При выборе значения **Да** после перехода на экран элемент **Меню** будет находиться в фокусе.<br>**Примечание.** На одном экране допускается только один элемент со значением **В фокусе по умолчанию** - **Да** |   |
| **Прочее** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |   |
| **Размеры** | **Ширина** | Ширина элемента по оси X | Размеры элемента можно задать изменением границ объекта на поле экрана |
| **Размеры** | **Высота** | Высота элемента по оси Y | Размеры элемента можно задать изменением границ объекта на поле экрана |

<a id="topic-122432"></a>

#### График

Элемент **График реального времени** предназначен для отображения изменения значений переменных в графическом виде на экране прибора:

- позволяет визуализировать до 4 переменных типа udint или float одновременно;

- доступна настройка интервала времени опроса для построения графика (максимально допустимое значение 23ч59м59с);

- период опроса рассчитывается автоматически, зависит от максимального значения оси X, ширины элемента График и толщины рамки, и не может быть менее 1 секунды;

- количество срезов определяется по формуле:

  *Количество срезов = max Х / t опроса*, где:

  - max Х — максимальное значение оси X;
  - t опроса — период опроса.

> [!NOTE]
> **Примечание.** Функционал построения графиков доступен только для приборов с графическим цветным ЖКИ. Работа **Графика** в режиме симуляции не поддерживается.

Чтобы добавить график на экран выберите в окне Библиотека компонентов элемент ![Кнопка График](https://docs.owen.ru/book_img/2379/143330.png)**График** и разметите в рабочей области.

Появятся оси координат с отображением шкалы и сетки. Ось Х – ось времени, ось Y - ось значений переменных (udint или float).

![График1](https://docs.owen.ru/book_img/2379/143329.png)

*Оси координат со значениями по умолчанию*

Для настройки параметров и добавления переменных используйте окно **Свойства График**:

![График2](https://docs.owen.ru/book_img/2379/143328.png)

*Окно Свойства График*

Настройте **Внешний вид** графика:

- наличие и цвет сетки;

- наличие и цвет фона;

- наличие, толщина и цвет рамки;

- оси:

  Выберите строчку Оси и нажмите ЛКМ на <Редактировать> и затем на появившуюся кнопку ![Кнопка Редактировать](https://docs.owen.ru/book_img/2379/143357.png). Откроется окно Оси График:

  ![7 153](https://docs.owen.ru/book_img/2379/155058.png)

  *Окно Оси График*

  Если необходимо, настройте цвет и толщину осей, размер шрифта, видимость осей и дополнительных делений. Введите необходимое максимальное значение оси Х в формате hh:mm:ss. Максимально допустимое значение 23:59:59. Значение по умолчанию 20 секунд.

  > **Примечание.** Минимальное значение оси Х = 0 – не редактируемый параметр.

  Введите минимальное и максимальное значение оси Y. Значение по умолчанию: -12, 12.

  В случае ввода некорректного значения возникнет сообщение об ошибке, кнопка ОК станет неактивна:

  ![7 154](https://docs.owen.ru/book_img/2379/155057.png)

  *Ошибка ввода данных*

Для добавления переменных на график в разделе **Данные** окна Свойства График, выберите строчку Линии и нажмите ЛКМ на <Редактировать> и затем на появившуюся кнопку ![Кнопка Редактировать](https://docs.owen.ru/book_img/2379/143357.png), или дважды нажмите ЛКМ на поле графика. Откроется окно Список линий График:

![7 155](https://docs.owen.ru/book_img/2379/155056.png)

*Окно Список линий График*

В открывшемся окне выберите:

- тип переменной – целочисленное / с плавающей запятой;
- переменную;
- цвет и толщину линии;
- видимость - возможен выбор переменной булевского типа из категории Стандартные таблицы переменных.

> [!NOTE]
> **Примечание.** Максимальное количество переменных на графике - 4.

Для удобства понимания количества добавленных переменных, а также настроек внешнего вида линий на графике, линии отображаются со смещением по оси Y относительно друг друга.

Параметр Работа в фоне (Да/Нет) раздела **Данные** влияет на сохранение данных при переходе на другой экран.

Период опроса – не редактируемый параметр, зависит от максимального значения оси X, ширины элемента График и толщины рамки.

> [!NOTE]
> **Примечание.** Период опроса не может быть менее 1 секунды.

Расположение графика определяется координатами левого верхнего угла по осям X и Y. Координаты задаются перемещением объекта по полю экрана. В случае необходимости точного положения графика на экране прибора настройте координаты окна Свойства График в разделе **Координаты**.

При необходимости в разделе **Поведение** настройте видимость всего графика в зависимости от переменной булевского типа.

Изменение имени графика возможно в разделе **Прочее** окна Свойства График.

Для масштабирования графика наведите мышь на угловой или боковой маркер, удерживая ЛКМ задайте необходимый размер графика на экране, также изменение размера возможно в разделе **Размеры**: ширина и высота задаются в пикселях.

После [записи программы](#topic-122328) на экране прибора отобразится график с добавленными переменными:

![График на приборе](https://docs.owen.ru/book_img/2379/143353.png)

*Пример отображения графика на экране прибора*

> [!NOTE]
> **Примечание.** Если при отображении графика на экране прибора значение параметра выходит за границы минимального или максимального значения оси Y, то линия на графике продолжает движение по соответствующей границе.

В случае удаления из проекта переменной, добавленной на график, появится информационное окно:

![Удаление переменной](https://docs.owen.ru/book_img/2379/143352.png)

*Информационное окно*

В случае выбора **Удалить** привязка переменной удаляется.

<a id="topic-122433"></a>

#### Стрелочный индикатор

Элемент **Круговой индикатор со стрелочным указателем** предназначен для отображения текущего значения параметра на дуговой шкале. Положение стрелки позволяет визуально оценивать отклонение значения параметра от заданного диапазона в ту или иную сторону. Если значение параметра меньше значения начала шкалы — стрелка фиксируется на минимальном значении, если больше значения конца шкалы — на максимальном.

Диапазоны шкалы кругового индикатора:

- **Аварийно низкий** — от начала шкалы до границы аварийно низкого диапазона.
- **Предупреждающе низкий** — от границы аварийно низкого до границы предупреждающе низкого диапазона.
- **Базовый** — между низкими и высокими предупреждающими границами.
- **Предупреждающе высокий** — от границы предупреждающе высокого до границы аварийно высокого диапазона.
- **Аварийно высокий** — от границы аварийно высокого диапазона до конца шкалы.

##### Добавление элемента на экран

Выберите из Библиотеки компонентов элемент **Стрелочный индикатор** и разместите в рабочей области.

![Контрол Спидометр](https://docs.owen.ru/book_img/2379/161860.png)

*Элемент визуализации Стрелочный индикатор*

##### Настройка свойств

Для настройки отображения элемента **Стрелочный индикатор** на экране прибора доступны следующие свойства:

| Группа | Параметр | Параметр | Описание | Дополнительные возможности |
| --- | --- | --- | --- | --- |
| **Внешний вид** | **Шаблон** | **Шаблон** | Выбор формата элемента:<br>• круг;<br>• сектор круга |   |
| **Внешний вид** | **При выборе шаблона Сектор круга** | **Начальный угол** | Настройка начального угла элемента | Начальный и конечный углы можно изменить перемещением маркеров углов на поле экрана |
| **Внешний вид** | **При выборе шаблона Сектор круга** | **Конечный угол** | Настройка конечного угла элемента | Начальный и конечный углы можно изменить перемещением маркеров углов на поле экрана |
| **Внешний вид** | **Наличие фона** | **Наличие фона** | Настройка отображения фона элемента |   |
| **Внешний вид** | **Цвет фона** | **Цвет фона** | Цвет заливки элемента |   |
| **Внешний вид** | **Толщина рамки** | **Толщина рамки** | Толщина контура элемента |   |
| **Внешний вид** | **Цвет рамки** | **Цвет рамки** | Цвет контура элемента |   |
| **Внешний вид** | **Толщина стрелки** | **Толщина стрелки** | Настройка толщины стрелочного индикатора элемента |   |
| **Внешний вид** | **Цвет стрелки** | **Цвет стрелки** | Цвет стрелочного индикатора элемента |   |
| **Внешний вид** | **Толщина линии шкалы** | **Толщина линии шкалы** | Настройка толщины дуги шкалы |   |
| **Внешний вид** | **Цвет аварийного диапазона** | **Цвет аварийного диапазона** | Цвет аварийно высокого и низкого диапазонов элемента |   |
| **Внешний вид** | **Цвет предупреждающего диапазона** | **Цвет предупреждающего диапазона** | Цвет предупреждающе высокого и низкого диапазонов элемента |   |
| **Внешний вид** | **Цвет базового диапазона** | **Цвет базового диапазона** | Цвет нормального диапазона элемента |   |
| **Внешний вид** | **Толщина делений шкалы** | **Толщина делений шкалы** | Значение толщины делений шкалы элемента |   |
| **Внешний вид** | **Длина основных делений** | **Длина основных делений** | Значение длины основных делений. Задается в процентах от радиуса окружности. Длина дополнительных делений в два раза меньше длины основных делений |   |
| **Внешний вид** | **Видимость значений шкалы** | **Видимость значений шкалы** | Настройка отображения значений основных делений шкалы элемента |   |
| **Внешний вид** | **Размер шрифта** | **Размер шрифта** | Размер отображаемых в элементе значений шкалы: 16, 32, 48 |   |
| **Внешний вид** | **Цвет шрифта** | **Цвет шрифта** | Цвет отображаемых в элементе значений шкалы |   |
| **Данные** | **Тип переменной** | **Тип переменной** | Выбор типа данных привязанной переменной:<br>• целочисленное;<br>• с плавающей запятой - поддерживает числа до двух знаков после запятой (без округления) |   |
| **Данные** | **Переменная** | **Переменная** | К параметру привязывается переменная для отображения |   |
| **Данные** | **Начало шкалы** | **Начало шкалы** | Выбор значения начала шкалы | Доступные способы ввода:<br>• константа - ввод числового значения;<br>• переменная - привязка переменной |
| **Данные** | **Конец шкалы** | **Конец шкалы** | Выбор значения конца шкалы | Доступные способы ввода:<br>• константа - ввод числового значения;<br>• переменная - привязка переменной |
| **Данные** | **Граница аварийно низкого диапазона** | **Граница аварийно низкого диапазона** | Выбор значения границы аварийно низкого диапазона шкалы | Доступные способы ввода:<br>• константа - ввод числового значения;<br>• переменная - привязка переменной |
| **Данные** | **Граница предупреждающе низкого диапазона** | **Граница предупреждающе низкого диапазона** | Выбор значения границы предупреждающе низкого диапазона шкалы | Доступные способы ввода:<br>• константа - ввод числового значения;<br>• переменная - привязка переменной |
| **Данные** | **Граница предупреждающе высокого диапазона** | **Граница предупреждающе высокого диапазона** | Выбор значения границы предупреждающе высокого диапазона шкалы | Доступные способы ввода:<br>• константа - ввод числового значения;<br>• переменная - привязка переменной |
| **Данные** | **Граница аварийно высокого диапазона** | **Граница аварийно высокого диапазона** | Выбор значения границы аварийно высокого диапазона шкалы | Доступные способы ввода:<br>• константа - ввод числового значения;<br>• переменная - привязка переменной |
| **Деления** | **Количество основных делений** | **Количество основных делений** | Ввод количества основных делений на шкале |   |
| **Деления** | **Количество дополнительных делений** | **Количество дополнительных делений** | Ввод количества дополнительных делений на шкале |   |
| **Координаты** | **X** | **X** | Значение положения элемента по оси X.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет слева направо, конечное значение определяется размерами элемента и шириной экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Координаты** | **Y** | **Y** | Значение положения элемента по оси Y.<br>Расположение элемента определяется координатами верхнего левого угла. Отсчет координат начинается с 0 и идет сверху вниз, конечное значение определяется размерами элемента и высотой экрана | Координаты можно задать перемещением объекта по полю экрана |
| **Поведение** | **Видимость** | **Видимость** | К параметру привязывается переменная типа Bool, которая определяет видимость элемента |   |
| **Прочее** | **Имя** | **Имя** | Отображается в списке используемых элементов в левой части редактора визуализации |   |
| **Размеры** | **Ширина** | **Ширина** | Ширина элемента по оси X | Размеры элемента можно задать изменением границ объекта на поле экрана.<br>Размеры изменяются с сохранением пропорций 1:1 |
| **Размеры** | **Высота** | **Высота** | Высота элемента по оси Y | Размеры элемента можно задать изменением границ объекта на поле экрана.<br>Размеры изменяются с сохранением пропорций 1:1 |

##### Особые состояния элемента Стрелочный индикатор

При определенном сочетании настроек элемент может перейти в невалидное состояние, при котором корректная работа элемента и достоверное отображение данных невозможны.

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

| Сочетание настроек | Поведение элемента Стрелочный индикатор |
| --- | --- |
| Начало шкалы **≥** Конец шкалы | • отображение стрелки скрыто;<br>• шкала, деления и подписи на шкале скрыты;<br>• элемент отображается с прозрачностью 50% |
| Граница аварийно низкого диапазона **<** Начало шкалы | аварийно низкий диапазон скрыт |
| Граница аварийно низкого диапазона **>** Конец шкалы | аварийно низкий диапазон отображается на всей шкале |
| Граница предупреждающе низкого диапазона **<** Начало шкалы | предупреждающе низкий диапазон скрыт |
| Граница предупреждающе низкого диапазона **>** Конец шкалы | предупреждающе низкий диапазон отображается на всей шкале |
| Граница предупреждающе высокого диапазона **<** Начало шкалы | предупреждающе высокий  диапазон отображается на всей шкале |
| Граница предупреждающе высокого диапазона **>** Конец шкалы | отображение предупреждающе высокого диапазона скрыто |
| Граница аварийно высокого диапазона **<** Начало шкалы | аварийно высокий диапазон отображается на всей шкале |
| Граница аварийно высокого диапазона **>** Конец шкалы | аварийно высокий диапазон скрыт |
| Пересечение (наложение) диапазонов | Отображение происходит слоями, верхние слои перекрывают нижние:<br>• аварийно высокий (перекрывает все остальные);<br>• аварийно низкий;<br>• предупреждающе высокий;<br>• предупреждающе низкий (перекрывается всеми остальными) |

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

<a id="topic-122434"></a>

## Работа с прибором

В настоящем разделе описываются функции работы и конфигурации прибора:

- [Информация о приборе](#topic-122435);
- [Время цикла](#topic-122436);
- [Обновление встроенного ПО](#topic-122437);
- [Юстировка](#topic-122438);
- [Смена целевой платформы](#topic-122441).

<a id="topic-122435"></a>

### Информация о приборе

Для получения информации о подключенном приборе следует нажать кнопку ![device info](https://docs.owen.ru/book_img/2379/36740.png) на панели инструментов или выбрать в главном меню **Прибор → Информация...**.

Откроется окно с информацией о подключенном приборе:

![Информация о приборе1](https://docs.owen.ru/book_img/2379/161506.png)

Информация о проекте:

- **Выбранная модель прибора** – модель и модификация прибора, выбранные при создании проекта.

Информация о подключенном приборе:

- **Название подключенного прибора** – модель и модификация подключенного прибора;
- **Версия ПО прибора** – версия встроенного ПО подключенного прибора;
- **Среднее значение времени цикла** – средний временной промежуток выполнения операции в программе, зависит от сложности загруженной программы (см. раздел [Время цикла](#topic-122436));
- **Тип заказного элемента №** – тип выходного элемента подключенного прибора (дискретный, аналоговый);
- **Группа, номер, версия алгоритма** – значения, заданные пользователем для контроля версий загруженной программы в окне [Сведения о проекте](#topic-122330).

#### Информация о приборе второго поколения

Для приборов второго поколения выводимая в окне информация имеет отличия.

> [!NOTE]
> **Примечание.** Список приборов на новой платформе см. в разделе [О программе](#topic-122293).

![Информация о приборе](https://docs.owen.ru/book_img/2379/161505.png)

Информация о проекте:

- **Выбранная модель прибора** — модель и модификация прибора, выбранные при создании проекта.

Информация о подключенном приборе:

- **Название прибора** – модель и модификация подключенного прибора;

- **Версия ПО прибора** – версия встроенного ПО подключенного прибора;

- **Заводской номер** – уникальный идентификатор прибора, требуется для подключения к [OwenCloud](#topic-122351);

- **ПРМ Слот. Название модуля**

  – модель и модификация [модуля расширения](#topic-122348), подключенного к прибору;

- **ПРМ Слот. Версия ПО модуля**

  – версия встроенного ПО [модуля расширения](#topic-122348), подключенного к прибору;

- **Время цикла** — временной промежуток выполнения операции в программе, зависит от сложности загруженной программы (см. раздел [Время цикла](#topic-122436));

- **Состояние логики** — отображает текущий статус выполнения пользовательской программы

  ;

- **Имя, группа, номер, версия алгоритма** – значения, заданные пользователем для контроля версий загруженной программы в окне [Сведения о проекте](#topic-122330).

> [!NOTE]
> **Примечание.** Информация о приборах второго поколения может быть расширена разработчиками приборов.

<a id="topic-122436"></a>

### Время цикла

Время цикла – это время выполнения рабочего цикла прибора, а именно:

- опрос состояния физических входов прибора и копирование их значений в ячейки памяти;
- обработка программы;
- чтение/запись сетевых переменных программы;
- запись результатов работы программы в физические выходы прибора.

По умолчанию время цикла равно **1 мс**. Прибор подстраивает время цикла в зависимости от сложности программы.

Условия увеличения времени цикла:

- возрастает сложность алгоритма (задействовано большое количество ФБ и макросов);
- в программе используется большое количество сетевых переменных;
- используется большое количество элементов управления данными с помощью дисплея прибора.

Пользователь не может задавать время цикла. Если прибор оснащен дисплеем, то текущее время цикла можно посмотреть в системном меню прибора. Если прибор подключен к ПК, то время цикла можно посмотреть в окне [Информация о приборе](#topic-122435).

<a id="topic-122437"></a>

### Обновление встроенного ПО

#### Обновление встроенного ПО в приборе

Если для подключенного прибора выпущена новая версия встроенного ПО, то во время загрузки программы в прибор будет предложено обновить встроенное ПО:

![8 3](https://docs.owen.ru/book_img/2379/155055.png)

Для запуска обновления встроенного ПО следует нажать кнопку **Да**.

Без обновления встроенного ПО программа не будет загружена в прибор.

![Обновление встроенного ПО](https://docs.owen.ru/book_img/2379/145224.png)

Разрыв связи между ПК и прибором во время обновления приведет к повреждению встроенного ПО и неработоспособности прибора. Для восстановления работоспособности прибора следует повторить операцию.

#### Восстановление поврежденного встроенного ПО прибора

Для восстановления поврежденного встроенного ПО следует:

1. Если прибор исправен, то перевести его в режим загрузчика (см. *руководство по эксплуатации* прибора).

2. В главном меню выбрать **Прибор → Обновление встроенного ПО**.

   ![loading 03v2](https://docs.owen.ru/book_img/2379/36783.png)

3. В открывшемся окне на вкладке **Прибор** выбрать модель и модификацию.

4. Нажать кнопку **Выбрать**. Начнется процесс загрузки, по окончании система выведет сообщение о результатах загрузки.

Если вышеуказанный способ не срабатывает, то необходимо ознакомиться с п. 10 [FAQ](https://www.owen.ru/catalog/programmiruemie_rele/info/18) или обратиться в сервисный центр компании ОВЕН.

#### Обновление встроенного ПО модуля расширения

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

Встроенное ПО для модуля расширения обновляется по аналогии с прибором.

Для самостоятельного обновления встроенного ПО модуля расширения следует:

1. В главном меню выбрать **Прибор → Обновление встроенного ПО**.

2. В открывшемся окне на вкладке **Модуль** следует выбрать модификацию и номер слота.

   ![loading 04](https://docs.owen.ru/book_img/2379/36782.png)

3. Нажать кнопку **Выбрать**. Начнется процесс загрузки, по окончании система выведет сообщение о результатах загрузки.

Во время обновления следует не прерывать подачу питания на прибор и модули расширения.

Если в прибор загружается программа без подключенного модуля расширения, возможна ситуация, когда внутреннее ПО прибора и модуля расширения будут иметь несовместимые версии. Это приведет к ситуации, что на модуле расширения будет индицирована **Авария**. Для устранения **Аварии** следует повторно обновить встроенное ПО модуля расширения.

<a id="topic-122438"></a>

### Юстировка

> [!IMPORTANT]
> **Предупреждение.** Необходимость проведения юстировки определяется по результатам поверки прибора и должна производиться только квалифицированными специалистами метрологических служб, осуществляющих эту поверку.

> [!WARNING]
> **Внимание.** Юстировку прибора следует выполнять только в соответствии с требованиями *руководства по эксплуатации* прибора. Рекомендуется не проводить юстировку самостоятельно без должных знаний и квалификации и обратиться в сервисный центр ОВЕН. Неправильная юстировка приведет к некорректной работе прибора.

Для запуска юстировки следует выбрать в главном меню **Прибор → Юстировка входов/выходов…**.

Перед началом юстировки появится меню выбора модели и модификации прибора.

![ju-01](https://docs.owen.ru/book_img/2379/42215.png)

Далее в открывшемся диалоговом окне следует выбрать юстировку:

- [аналоговых входов](#topic-122439);
- [аналоговых выходов](#topic-122440).

![adjust 01](https://docs.owen.ru/book_img/2379/36866.png)

Если в приборе запущена программа, то во время юстировки она останавливается – на дисплее прибора отображается надпись **Программа LOGIC: Остановлена**.

<a id="topic-122439"></a>

#### Юстировка входов

##### Юстировка аналоговых входов

Для юстировки входов следует:

1. В диалоговом окне юстировки выбрать **Аналоговые входы**. Откроется окно настройки.

2. В окне настройки выбрать **Тип датчика**.

   ![adjust 03](https://docs.owen.ru/book_img/2379/36864.png)

3. Ввести параметры подключенных к входам датчиков.

   ![ju-02](https://docs.owen.ru/book_img/2379/42214.png)

4. Если необходимо восстановить значения по умолчанию в полях ввода, то следует нажать **Сбросить настройки**.

5. В выпадающем меню **Выбор канала** выбрать номер входа для настройки в соответствии с введенными параметрами и нажать **Далее**.

   ![adjust 04](https://docs.owen.ru/book_img/2379/36863.png)

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

   ![adjust 05](https://docs.owen.ru/book_img/2379/36862.png)

   > **Примечание.** Установка перемычек описывается в *руководстве по эксплуатации* прибора.

7. На юстируемые входы подать сигналы с требуемыми характеристиками.

   ![adjust 08](https://docs.owen.ru/book_img/2379/36861.png)

8. После юстировки появится сообщение об успешном завершении. Программа прибора будет снова запущена.

   ![Юстировка входов](https://docs.owen.ru/book_img/2379/147573.png)

##### Юстировка кондуктометрических входов

Для юстировки входов следует:

1. В диалоговом окне юстировки выбрать **Кондуктометрические входы**. Откроется окно настройки.

2. В окне настройки выбрать **Измеряемый сигнал**.

3. Ввести значение **Постоянной времени фильтра**.

   ![calibration CDM 1](https://docs.owen.ru/book_img/2379/106291.png)

4. Если необходимо восстановить значения по умолчанию в полях ввода, то следует нажать **Сбросить настройки**.

5. В выпадающем меню **Юстировать** выбрать номер входа для настройки в соответствии с введенными параметрами и нажать **Далее**.

6. В окне выбора параметров юстировки задать точки юстировки.

   ![calibration CDM 2](https://docs.owen.ru/book_img/2379/106290.png)

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

   ![calibration CDM 3](https://docs.owen.ru/book_img/2379/106289.png)

8. После юстировки появится сообщение об успешном завершении. Программа прибора будет снова запущена.

   ![Юстировка входов](https://docs.owen.ru/book_img/2379/147573.png)

<a id="topic-122440"></a>

#### Юстировка выходов

Для юстировки выходов следует:

1. В диалоговом окне юстировки выбрать **Аналоговые выходы**. Откроется окно настройки.

2. В окне настройки выбрать тип юстируемого выходного сигнала:

   - Дискретный;
   - Аналоговый, напряжение;
   - Аналоговый, ток.

   ![ju-03](https://docs.owen.ru/book_img/2379/42213.png)

3. Измерить величину поданного на выход сигнала. Номер выхода указан в правом верхнем углу окна. Ввести значение в поле ввода и нажать **Далее**.

   ![adjust 06](https://docs.owen.ru/book_img/2379/36860.png)

4. Аналогично измерить и ввести значения для всех типов сигналов.

5. После юстировки появится сообщение об успешном завершении.

   ![Юстировка выходов](https://docs.owen.ru/book_img/2379/147572.png)

<a id="topic-122441"></a>

### Смена целевой платформы

Функция **Смена целевой платформы** предназначена для переноса проекта на другую модификацию прибора, или прибор другой линейки, между приборами одного поколения.

Смена целевой платформы происходит по следующим правилам:

- холст автоматически подстраивается под изменение количества входов/выходов;

- настроенное пользователем расположение входов/выходов остается. Новые входы и выходы добавляются после уже существующих входов/выходов исходного проекта;

- связи входов/выходов, у которых изменился тип данных, разрываются;

- если количество входов/выходов увеличивается, но тип данных исходного набора входов/выходов не изменяется, то связи остаются;

- если количество входов/выходов уменьшается по сравнению с исходным, то связи удаленных входов/ выходов разрываются;

- если в исходной платформе были добавлены модули расширения, то они переносятся на новую платформу, связи для них остаются. В случае отсутствия возможности подключения модуля расширения к прибору, на который идет перенос проекта, откроется окно с информацией об удалении связей с переменными, привязанными к модулям расширения;

- настройки аналоговых входов/выходов переносятся (при наличии аналоговых входов/выходов на приборе, на который идет перенос проекта);

- интерфейсы связи переносятся без изменений. В случае отсутствия поддержки интерфейса у прибора, на который идет перенос проекта, откроется окно с информацией об удалении интерфейса, сетевых переменных и связей с ними;

- все экраны с настройками переносятся из одной целевой платформы на другую. В случае отсутствия экрана у прибора, на который идет перенос проекта, откроется окно с информацией об удалении связей с переменными, привязанными к элементам визуализации;

  > **Примечание.** При смене целевой платформы с ПР225 на ПР205 будет выполнено масштабирование элементов визуализации пропорционально изменению размеров экрана.
  >
  > При смене целевой платформы с ПР205 на ПР225 элементы визуализации переносятся без масштабирования.

- все переменные переносятся из одной целевой платформы на другую. Если в проекте есть привязка переменных к параметрам, не существующим в приборе на который идет перенос проекта, то откроется окно с информацией об удалении связей с переменными, привязанными к данным параметрам;

- если целевая платформа, на которую осуществляется перенос проекта, не поддерживает функциональные блоки, содержащиеся в исходном проекте, появится информационное окно с уведомлением о необходимости удаления функциональных блоков.

Для смены целевой платформы следует:

1. Открыть проект, который нужно перенести на другой прибор или другую модификацию прибора.

2. Выбрать в меню **Файл → Смена целевой платформы**. Owen Logic предложит сохранить проект перед сменой платформы. Далее появится меню со списком доступных для смены платформы приборов и модификаций:

   ![8 22](https://docs.owen.ru/book_img/2379/155054.png)

   *Окно выбора модели*

3. Выбрать прибор и модификацию, на который будет произведена смена платформы. Нажать кнопку **ОК**.

4. Проверить и восстановить разорванные связи, если они есть. Работу программы можно проверить в [Симуляторе](#topic-122324).

5. Сохранить измененный проект.

<a id="topic-122442"></a>

## Расширения

Расширения используются для создания сложных проектов и их интеграции с другими сервисами компании ОВЕН.

Расширения в Owen Logic:

- [Мастер тиражирования](#topic-122443). С помощью **Мастера тиражирования** можно загрузить программу в прибор без участия Owen Logic и защитить ее от копирования;
- [Экспорт устройства в OwenCloud](#topic-122447). Позволяет экспортировать конфигурацию сетевых переменных для опроса в облачном сервисе OwenCloud;
- [Экспорт устройства в OPC](#topic-122446). Позволяет экспортировать конфигурацию сетевых переменных для опроса в Owen OPC Server.

### Установка расширений

Для установки расширений следует:

1. В главном меню выбрать **Расширения → Управление расширениями**.

   ![Расширения](https://docs.owen.ru/book_img/2379/161474.png)

   .

2. В окне **Расширения** отметить галочкой необходимые расширения.

   ![9 2](https://docs.owen.ru/book_img/2379/155052.png)

3. Нажать кнопку **Установить**.

4. Через некоторое время появится сигнал об успешной установке в виде зеленой галочки напротив выбранных расширений ![OK 16](https://docs.owen.ru/book_img/2379/48607.png).

5. После закрытия окна **Расширения** появится диалоговое окно перезапуска Owen Logic.

   ![9 3](https://docs.owen.ru/book_img/2379/155051.png)

   После перезапуска Owen Logic расширения будут готовы к использованию.

> [!NOTE]
> **Примечание.** Если расширения не устанавливаются, следует проверить открыт ли порт 8084.

### Удаление расширений

Для удаления расширения следует:

1. В главном меню выбрать **Расширения → Управление расширениями**.

2. В окне **Расширения** нажать на кнопку ![del var](https://docs.owen.ru/book_img/2379/36836.png) напротив необходимого расширения.

   ![9 4](https://docs.owen.ru/book_img/2379/155050.png)

3. Пиктограмма удаления сменится на пиктограмму установки.

4. После закрытия окна **Расширения** появится диалоговое окно перезапуска Owen Logic. После перезапуска Owen Logic удаленные расширения перестанут быть доступными в главном меню.

<a id="topic-122443"></a>

### Мастер тиражирования

Мастер тиражирования позволяет создавать из проекта Owen Logic файл, содержащий внутри себя программу, с расширением:

*\*.exe* — для OC Windows;

*\*.dll* — для OC Linux.

С помощью файла можно загрузить программу в прибор без участия Owen Logic.

> [!WARNING]
> **Внимание.** Тиражировать программу можно только между одинаковыми модификациями прибора.

Результат записи программы в прибор с помощью мастера тиражирования зависит от наличия ключа в приборе и мастере тиражирования. Ключ в прибор можно записать с помощью Owen Logic.

![Схема Запись программы с помощью Мастера тиражирования](https://docs.owen.ru/book_img/2379/143107.jpg)

*Запись программы с помощью мастера тиражирования*

#### Создание мастера тиражирования

Перед созданием мастера тиражирования для ОС Windows рекомендуется создать текстовый файл с расширением *\*.rtf* с описанием проекта. Описание проекта будет отображаться во время запуска мастера тиражирования перед загрузкой программы в прибор.

Для создания мастера тиражирования для ОС Linux необходимо установить пакет .NET 6 SDK. Это возможно сделать при установке Owen Logic. Для этого поставьте чекбокс **Установить .NET 6 SDK** в окне установки:

![Установка5](https://docs.owen.ru/book_img/2379/155069.png)

*Окно установки Owen Logic*

В случае, если .NET 6 SDK не был установлен, при создании мастера тиражирования для ОС Linux возникнет ошибка, файл не будет создан. В нижней части окна отобразится информация о необходимости установки и ссылка для скачивания пакета:

![Установка5](https://docs.owen.ru/book_img/2379/143075.jpg)

*Ошибка создания файла*

Для создания мастера тиражирования:

1. Укажите на панели свойств проекта в поле **Имя файла с ключом** [файл, содержащий ключ](#topic-122310), хранящийся на ПК. Для загрузки программы без ключа оставьте это поле пустым.

   ![create key 02](https://docs.owen.ru/book_img/2379/36915.png)

   В случае, если после указания пути к файлу с ключом, ключ будет удален, мастер тиражирования не будет создан, в нижней части окна отобразится информация об ошибке:

   ![Ошибка создания файла с ключом1](https://docs.owen.ru/book_img/2379/143074.jpg)

   *Ошибка создания файла*

2. Выберите в главном меню **Расширения → Создать мастер тиражирования**.

3. Откроется окно для создания мастера тиражирования. Если к проекту подключен ключ, то будет выведена надпись **Пользовательская программа защищена ключом!** В ином случае будет выведена надпись **Устройство поддерживает защиту пользовательской программы, но для проекта не выбран ключ**.

   ![Создание МТ](https://docs.owen.ru/book_img/2379/143073.png)

   *Создание мастера тиражирования*

   **Параметры устройства** считываются из прибора и заполняются автоматически.

   В окне параметров компиляции заполните поля:

   - *Имя конечного файла* — имя файла мастера тиражирования, который будет создан;
   - *Путь к мастеру тиражирования* — расположение создаваемого файла;
   - *Файл с описанием алгоритма (для ОС Windows)* — путь к текстовому файлу с описанием проекта в формате *\*.rtf* (не обязательно);
   - *Компиляция файла для ОС* — ОС для которой создается файл.

4. Нажмите кнопку **Создать**. В случае отсутствия ошибок будет создан файл с указанным именем и расширением *\*.exe* или *\*.dll*.

   > **Примечание.** Создание мастера тиражирования для ОС Linux может занять довольно продолжительное время.

   > **Примечание.** Расширение файла *\*.dll* может не отображаться в ОС Windows, если не включена опция отображения системных файлов:
   >
   > ![МТ для Линукс](https://docs.owen.ru/book_img/2379/143072.png)
   >
   > <i>Отображение файла с расширением *\*.dll*</i>

   Отчет о создании файла выводится в нижней части окна.

   ![create key 08](https://docs.owen.ru/book_img/2379/36909.png)

   *Отчет о создании файла*

Чтобы скрыть или открыть область отображения отчета, следует нажать кнопку ![log](https://docs.owen.ru/book_img/2379/36908.png). Информация о предупреждениях и ошибках выводится, если отмечены соответствующие флажки.

![create key 09](https://docs.owen.ru/book_img/2379/36927.png)

*Примеры предупреждений*

<a id="topic-122444"></a>

#### Запись программы в прибор через мастер тиражирования на ОС
Windows

Для записи программы в прибор с помощью мастера тиражирования следует:

1. Запустить созданный файл мастера тиражирования.

   ![dupl master](https://docs.owen.ru/book_img/2379/36926.png)

   *Файл мастера тиражирования*

   > **Примечание.** Во время открытия мастера отобразится текст описания проекта из прикрепленного файла с расширением *\*.rtf*. Если файл не был прикреплен во время создания мастера, то описание проекта будет пустым.

2. Следовать указаниям мастера тиражирования.

   ![Окно МТ](https://docs.owen.ru/book_img/2379/143071.png)

   *Окно Мастер тиражирования*

3. В разделе **Настройки порта** указывается номер COM-порта, к которому подключен прибор. Как узнать номер порта описано в разделе [Настройка порта](#topic-122327).

4. Если устройство защищено паролем введите пароль в окне мастера тиражирования. В случае отсутствия или ввода неверного пароля кнопка **Далее** будет неактивна. После выбора порта в правом нижнем углу будет отображаться состояние подключения к прибору.

   ![Пароль](https://docs.owen.ru/book_img/2379/143070.jpg)

   *Ошибка подключения прибора*

   В случае ошибки подключения будет отображен знак ![sign attention](https://docs.owen.ru/book_img/2379/36923.png) и текст ошибки. При наведении на знак ![sign attention](https://docs.owen.ru/book_img/2379/36923.png) отобразится подсказка с описанием ошибки.

   | Ошибка | Возможные причины |
   | --- | --- |
   | Прибор не подключен | • неправильно выбран COM-порт;<br>• не установлен драйвер USB;<br>• разрыв соединения. |
   | Требуется другой прибор | Подключенный прибор не соответствует проекту. Нужно заменить прибор в проекте и создать новый мастер тиражирования, либо подключить подходящий прибор |

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

   ![Подключение прибора](https://docs.owen.ru/book_img/2379/143069.png)

   Если связь с прибором постоянно прерывается (галочка мигает), то, возможно, другое приложение занимает порт USB. Это может быть, если запущена программа Owen Logic и в ней настроено подключение к этому же порту. В таком случае для загрузки проекта в прибор другое приложение следует закрыть или перевести в режим [OFFLINE](#topic-122328--offline).

5. Если соединение стабильно, то следует нажать кнопку **Далее**.

   ![Запись программы](https://docs.owen.ru/book_img/2379/143068.png)

   *Запись программы*

6. Для записи программы в устройство следует нажать кнопку **Запись**. В нижней части окна отобразится строка состояния записи. Во время загрузки программы нельзя прерывать связь ПК с прибором. По завершении загрузки будет выведено сообщение.

   ![dupl master 05](https://docs.owen.ru/book_img/2379/36920.png)

   *Завершение загрузки*

##### Режим «тихой» установки

> [!NOTE]
> **Примечание.** Режим «тихой» установки доступен при работе с мастером тиражирования версии 1.21.14 и старше.

Мастер тиражирования поддерживает режим «тихой» прошивки приборов. Для его запуска следует использовать следующие аргументы командной строки:

- <b>*/silent*</b> – аргумент «тихой» установки;
- <b>*/password:*</b> – пароль, необходим, если прибор был защищён паролем;
- **<u>/ip:</u>** – IP адрес подключенного прибора (если прибор подключен по интерфейсу Ethernet);
- **/portname:** – номер СОМ-порта (если прибор подключен по интерфейсу USB);
- **1>> File_Name.txt** – текстовый файл с отображением процесса прошивки в процентах;
- **2>> File_Name.txt** – текстовый файл с отображением ошибок в процессе прошивки.

 

Пример команды запуска файла мастера тиражирования ReplicationUtilite.exe, расположенного на рабочем столе, при подключении по интерфейсу Ethernet:

**C:\\Users\\<Имя пользователя\\Desktop>ReplicationUtilite.exe /silent /IP:10.2.3.204**

Пример команды запуска файла мастера тиражирования ReplicationUtilite.exe, расположенного на рабочем столе, при подключении по интерфейсу USB к прибору с паролем *1234*:

**C:\\Users\\<Имя пользователя\\Desktop>ReplicationUtilite.exe /silent /portname:COM7 /password:1234**

Пример команды запуска файла мастера тиражирования ReplicationUtilite.exe, расположенного на рабочем столе, при подключении по интерфейсу USB, для создания текстового файла с отображением ошибок в процессе прошивки:

**C:\\Users\\<Имя пользователя\\Desktop>ReplicationUtilite.exe /silent /portname:COM7 2>> File_Name.txt**

<a id="topic-122445"></a>

#### Запись программы в прибор через мастер тиражирования на ОС
Linux

**Требования к ПК:**

- Ubuntu 22.04 или 24.04, архитектура процессора x86/32 или х64;
- .NET 6.

Для записи программы в прибор на ОС Linux откройте командную строку и введите команду:

- **./ReplicationUtilite -ip:192.168.1.100** — при подключении прибора по Ethernet, где 192.168.1.100 — IP - адрес прибора;
- **./ReplicationUtilite -portname:/dev/ttyACM0** — при подключении по последовательному порту, где ACM0 — адрес порта.

> [!NOTE]
> **Примечание.** Для определения порта устройства используйте команды:
>
> - **lsusb** — для USB;
> - **dmesg | grep tty** — для последовательного порта.

Пример команды запуска файла мастера тиражирования при подключении прибора по последовательному порту с адресом ACM0:

![Последовательный порт](https://docs.owen.ru/book_img/2379/143097.png)

*Команда для записи программы*

В случае верно выполненных действий в командной строке отобразится строка состояния загрузки программы в прибор:

![Прогресс](https://docs.owen.ru/book_img/2379/143096.jpg)

*Строка состояния*

**Возможные ошибки**

| Ошибка | Решение |
| --- | --- |
| Отсутствуют права на запуск файла ![Permission denied](https://docs.owen.ru/book_img/2379/143095.png) | • обратитесь к администратору;<br>• используйте команду<br>**sudo ./ReplicationUtilite -portname:/dev/ttyACM0**,<br>где ACM0 — адрес порта. |
| Ввод некорректной команды ![Неверные аргументы](https://docs.owen.ru/book_img/2379/143094.jpg) | Введите допустимую команду для запуска файла. |
| Устройство защищено паролем<br>![Пароль1](https://docs.owen.ru/book_img/2379/143093.jpg) | Введите команду **-password:**. |

<a id="topic-122446"></a>

### Экспорт устройства в OPC

Расширение **Экспорт устройства в OPC** экспортирует сетевые переменные из проекта Owen Logic для использования в ПО Owen OPC Server.

Для экспорта следует:

1. Экспортировать устройство из Owen Logic – выбрать в главном меню **Расширения → Экспорт устройства в ОРС**.

   ![opc 01](https://docs.owen.ru/book_img/2379/36919.png)

   Появится окно проводника, где следует выбрать место сохранения и имя файла с расширением *\*.dev*.

2. В Owen OPC Server добавить узел в дерево объектов.

3. В контекстном меню узла выбрать **Добавить → Устройство из файла**. Откроется окно проводника.

4. В окне выбрать файл, который был экспортирован из Owen Logic. Нажать кнопку **Открыть**.

5. Выбрать протокол обмена с устройством. Нажать **Выбрать**.

Устройство и теги будут добавлены в дерево объектов.

Если необходимо отредактировать устройство, то следует изменить свойства устройства и тегов.

Для проверки правильности настройки следует подключить прибор к ПК и запустить режим опроса.

Работа с Owen OPC Server описывается в справке к ПО.

<a id="topic-122447"></a>

### Экспорт устройства в OwenCloud

Экспорт устройства в OwenCloud сокращает время добавления прибора, настроенного в режим Slave, в облачный сервис компании ОВЕН.

Работа с OwenCloud требует подключения специального устройства, шлюза, к прибору. Будем считать, что шлюз уже настроен и подключен к прибору, настройки приведены в *Руководстве по эксплуатации* на шлюз.

Для экспорта конфигурации параметров Modbus прибора следует:

1. Создать проект с настройками в режиме Slave и сетевыми переменными.
2. Выбрать в главном меню **Расширения → Экспорт устройства в OwenCloud**.
3. В открывшемся меню выбрать расположение и задать имя файла в формате *\*.json*.

Дальнейшие действия требуют наличия личного кабинета в OwenCloud.

После входа в личный кабинет следует:

1. Нажать на кнопку ![owencloud 2-0](https://docs.owen.ru/book_img/2379/36918.png).

2. На открывшейся странице нажать кнопку ![owencloud 1-3](https://docs.owen.ru/book_img/2379/36710.png).

3. В появившемся меню следует задать **Идентификатор** — IMEI/заводской номер сетевого шлюза (указан на корпусе шлюза). В выпадающем списке **Тип прибора** выбрать **Произвольный прибор Modbus**. Ввести адрес прибора, который был задан в Owen Logic. Заполнить остальные поля. Далее следует нажать кнопку **Добавить**.

   ![owencloud 2-1](https://docs.owen.ru/book_img/2379/36937.png)

4. На вкладке **Общее/Общие настройки** указать скорость опроса и настройки COM-порта прибора в соответствии с настройками в Owen Logic. Нажать кнопку **Сохранить** для применения новых настроек.

   ![owencloud 2-3](https://docs.owen.ru/book_img/2379/36936.png)

5. В появившейся странице нажать кнопку **Настройки параметров**. Нажать на выпадающий список **Импортировать** и выбрать вариант **Загрузить из JSON**. В открывшемся меню выбрать ранее созданный файл в формате *\*.json* и нажать **Загрузить параметры**.

   ![owencloud 2-2](https://docs.owen.ru/book_img/2379/36935.png)

6. Modbus переменные прибора будут добавлены в OwenCloud.

<a id="topic-122448"></a>

## Сочетания клавиш

**Меню/Файл**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + N | Создать новый проект |
| Ctrl + О | Открыть существующий проект |
| Ctrl + Alt + S | Сохранить открытый проект под другим именем |
| Ctrl + S | Сохранить открытый проект |
| Ctrl + Р | Печать |
| Ctrl + Shift + C | Открыть менеджер компонентов |

**Меню/Вид**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + Z | Отменить последнее изменение |
| Ctrl + Y | Вернуть (восстановить) отмененное действие |

**Меню/Прибор**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + F7 | Записать программу в прибор |
| Ctrl + Shift + V | Открыть таблицу переменных |
| Ctrl + Shift + S | Открыть настройки прибора |

**Меню/Сервис**

| Сочетание клавиш | Действие |
| --- | --- |
| Shift + F5 | Перейти в режим симуляции |
| F6 | Запустить симуляцию |
| F7 | Остановить симуляцию |
| F8 | Пауза симуляции |
| F10 | Шаг на один цикл |
| Ctrl + F5 | Перейти в режим отладки |

**Меню/Расширения**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + Shift + P | Открыть управление расширениями |

**Меню/Помощь**

| Сочетание клавиш | Действие |
| --- | --- |
| F1 | Вызов справки |

**Панель вставки**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + Shift + F | Создать функцию на ST |
| Ctrl + Shift + M | Создать макрос |
| Ctrl + M | Создать макрос из выделенного участка |

**Панель «Места использования»**

| Сочетание клавиш | Действие |
| --- | --- |
| F5 | Обновить места использования функции на ST |

**Клавиши работы с элементами на схеме**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + С | Копировать выделенный элемент(ы) в буфер обмена |
| Ctrl + V | Вставить из буфера обмена |
| Delete | Удаление выбранного элемента |

**Клавиши изменения размера элемента на схеме**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + → | Увеличение ширины выделенного элемента |
| Ctrl + ← | Уменьшение ширины выделенного элемента |
| Ctrl + ↓ | Уменьшение высоты выделенного элемента |
| Ctrl + ↑ | Увеличение высоты выделенного элемента |

**Масштабирование холста**

| Сочетание клавиш | Действие |
| --- | --- |
| Ctrl + Колесо мыши | При вращении колеса мыши «от себя» масштаб холста увеличивается. Если «на себя», то уменьшается |
| Ctrl + «+» | Увеличение масштаба |
| Ctrl + «–» | Уменьшение масштаба |

**Переход между вкладками**

| Сочетание клавиш | Действие |
| --- | --- |
| Tab + → | Переход между вкладками |
| Tab + ← | Переход между вкладками |

**Перемещение элементов визуализации на экране**

| Сочетание клавиш | Действие |
| --- | --- |
| Alt + →  | Сдвиг элемента (группы элементов) на 1 px вправо, при включенной сетке (вне зависимости от шага сетки) |
| Alt + →  | Сдвиг элемента (группы элементов) на 1 px вправо, при включенной сетке (вне зависимости от шага сетки) |
| Alt + ←  | Сдвиг элемента (группы элементов) на 1 px влево, при включенной сетке (вне зависимости от шага сетки) |
| Alt + ↓  | Сдвиг элемента (группы элементов) на 1 px вниз, при включенной сетке (вне зависимости от шага сетки) |
| Alt + ↑  | Сдвиг элемента (группы элементов) на 1 px вверх, при включенной сетке (вне зависимости от шага сетки) |
| Alt + ЛКМ | Сдвиг элемента (группы элементов) по направлению движения курсора мыши с шагом 1 px, при включенной сетке (вне зависимости от шага сетки) |
| Shift + →  | Сдвиг элемента (группы элементов) на 10 px вправо |
| Shift + ←  | Сдвиг элемента (группы элементов) на 10 px влево |
| Shift + ↓  | Сдвиг элемента (группы элементов) на 10 px вниз |
| Shift + ↑  | Сдвиг элемента (группы элементов) на 10 px вверх |

<a id="topic-122449"></a>

## Примеры проектов

В данном разделе на примерах объясняется процесс создания программ в Owen Logic.

- [Вывод значения переменной на экран](#topic-122450);
- [Задание уставок таймеров с экрана](#topic-122451);
- [Подключения ПР200 к OwenCloud через шлюз ПМ210 по протоколу Modbus RTU](#topic-122452);
- [Подключение приборов второго поколения к OwenCloud](#topic-122453);
- [Упаковка/распаковка бит/целых чисел](#topic-122454);
- [Обработка битовых переменных с помощью маски](#topic-122455).

<a id="topic-122450"></a>

### Вывод значения переменной на экран

**Задача** – на приборе с подключенным к нему по интерфейсу связи модулю ввода необходимо считать значения на входах 1 и 2 модуля и вывести их на дисплей прибора.

Для разработки программы следует:

1. Создать новый проект в **Owen Logic**.

2. Подключить шаблон сетевого устройства в проект. Для этого следует запустить **менеджер компонентов** и отсортировать компоненты по категории **Шаблоны сетевых устройств**. Из сгенерированного списка выбрать **МВ110–8А** и нажатием на кнопку **Загрузить в библиотеку проекта** скачать шаблон.

   ![11 1](https://docs.owen.ru/book_img/2379/155068.png)

3. В окне **настроек прибора** подключить этот шаблон .

4. После добавления шаблона сетевого устройства в **таблице переменных** следует уточнить имена и типы переменных, которые планируется выводить на экран (**Izm_fl** и **Izm_fl2**). Это температуры, измеренные модулем, и передаваемые в прибор по протоколу Modbus. Переменные имеют тип с плавающей запятой.

   ![Пример проекта2](https://docs.owen.ru/book_img/2379/151513.png)

5. Перейти в **менеджер экранов**.

6. Двойным нажатием по экрану открыть редактор экранов.

7. Из библиотеки компонентов добавить элемент **Ввод/вывод (int/float)**.

8. Открыть свойства элемента и указать тип переменной – **Вещественный**. Затем в строке **Переменная** нажать на кнопку «**…**».

   ![Вывод знач переменной на экран 1](https://docs.owen.ru/book_img/2379/161473.png)

9. В **таблице переменных** выбрать переменную **Izm_fl** на вкладке **Сетевые, Слот1**.

10. В поле **Знаков** в свойствах элемента указать необходимое количество знаков для вывода значения выбранной переменной. В поле **После запятой** указать количество дробных разрядов. В поле **Длина** указать общее количество знаков элемента. В поле **Текст до** набрать **Т1** и поставить пробел для отделения значения от текста

11. В поле **Редактируемо** поставить **Нет**, так как менять измеренные на модуле значения температур нельзя.

12. На этом настройка одного элемента **Ввод/вывод (int/float)** завершена. Для упрощения дальнейшей работы следует скопировать элемент со всеми настройками, нажав на него ПКМ и выбрав в контекстном меню **Копировать** (или следует воспользоваться сочетанием клавиш **Ctrl + C**).

    ![Вывод значения переменной 2](https://docs.owen.ru/book_img/2379/161472.png)

13. Вставить скопированный элемент поверх существующего, нажав ПКМ на экран и выбрав в контекстном меню **Вставить** (или воспользоваться сочетанием клавиш **Ctrl + V**).

14. На вставленном элементе изменить переменную на **Izm_fl2** и заменить текстовый блок на **Т2**. Программа готова к загрузке в прибор.

<a id="topic-122451"></a>

### Задание уставок таймеров с экрана

**Задача** – необходимо управлять задержками ФБ Blink (генератор прямоугольных импульсов) и TP (импульс включения заданной длительности) с дисплея прибора. Предусмотреть возможность преобразования задержек в миллиcекунды, секунды или часы. Дополнительно необходимо отображать заданную уставку ФБ на дисплее прибора.

Для реализации задачи был выбран ПР200.

Холст проекта с элементами приведен на иллюстрации ниже.

![quickstart 10](https://docs.owen.ru/book_img/2379/36716.png)

*Схема алгоритма*

ФБ **Blink** (генератор прямоугольных импульсов) и **TP** (импульс включения заданной длительности) принимают в качестве уставок числа в целочисленном формате с дискретностью 1 мс.

Чтобы пересчитать уставки под нужные единицы времени следует:

- для отображения значений в секундах, следует разделить введенное значение на 1000;
- для отображения уставок в минутах следует разделить введенное значение на (60 ∙ 1000);
- для отображения уставок в часах. следует разделить введенное значение на (60 ∙ 60 ∙ 1000).

![quickstart 11](https://docs.owen.ru/book_img/2379/36715.png)

Если необходимо выводить значение уставки с десятичными знаками, следует перевести число в тип с плавающей запятой и поделить на соответствующий коэффициент.

**Пример**

Для перевода 2500 миллисекунд в секунды следует: 2500 мс ÷ 1000 = 2,5 с.

<a id="topic-122452"></a>

### Подключение ПР200 к OwenCloud через шлюз ПМ210 по протоколу
Modbus RTU

> [!NOTE]
> **Примечание.** Подключение приборов [первого поколения](#topic-122295) к OwenCloud доступно только через шлюзы линейки Пх210 и будет рассматриваться на примере ПР200 и шлюза ПМ210. Для подключения других приборов первого поколения выполните аналогичные действия.

Будем считать, что ПМ210 уже подключен к ПР200 и настроен для работы.

Для подключения следует:

1. Создать проект для ПР200 в Owen Logic.

2. В окне [настроек прибора](#topic-122352) задать параметры, как на иллюстрации ниже.

   ![owencloud 1-0-1](https://docs.owen.ru/book_img/2379/36714.png)

3. В настройках слота указать адрес **1** и добавить сетевые переменные, как на иллюстрации ниже.

   ![Настройки ПР200](https://docs.owen.ru/book_img/2379/147268.png)

4. <b>*Следует обратить внимание*</b>, что переменная с плавающей запятой (**rVar**) занимает два регистра в памяти прибора (в данном случае – 513 и 514).

5. Создать экран в [менеджере экранов](#topic-122305) и добавить на него элементы **Ввод-выход Int** и **Ввод-вывод** **Float**. Привязать к ним переменные **wVar** и **rVar**. В настройках элементов для параметра **Редактируемо** следует поставить значение **Да**, чтобы иметь возможность изменять их с дисплея ПР200.

   ![owencloud 1-2](https://docs.owen.ru/book_img/2379/36711.png)

6. Загрузить проект в ПР200 (**Прибор** → **Загрузить программу в прибор**).

7. Зайти на главную страницу сервиса **OwenCloud**. Если еще не зарегистрированы в сервисе – необходимо пройти процедуру регистрации.

8. Перейти на вкладку **Администрирование**, открыть вкладку **Приборы** и нажать кнопку **Добавить прибор** (![owencloud 1-3](https://docs.owen.ru/book_img/2379/36710.png)).

9. Указать следующие обязательные настройки:

   - **Тип прибора** – выбрать тип **Произвольное устройство** **Modbus**;
   - **Идентификатор** – ввести **заводской номер** сетевого шлюза (указан на корпусе шлюза);
   - **Адрес в сети** – указать адрес **1**;
   - **Название прибора** – ввести название прибора;
   - **Часовой пояс** – указать часовой пояс, в котором находится прибор.

   ![Клауд](https://docs.owen.ru/book_img/2379/147267.png)

10. Нажать кнопку **Добавить**.

11. Нажать на название прибора, чтобы перейти к его настройке:

    ![owencloud 1-5](https://docs.owen.ru/book_img/2379/36708.png)

12. На вкладке **Общее/Общие настройки** указать скорость опроса и настройки COM-порта прибора в соответствии с настройками в Owen Logic. Нажать кнопку **Сохранить** для применения новых настроек. В случае необходимости можно изменить и другие настройки (например, период опроса).

    ![owencloud 1-6](https://docs.owen.ru/book_img/2379/36737.png)

13. На вкладке **Параметры/Настройки параметров Modbus** добавить параметры вручную. **Следует обратить внимание**, что адреса регистров указываются в шестнадцатеричной системе – поэтому используемые значения отличаются от тех, которые приведены в Owen Logic – 512 (DEC) = 200 (HEX).

    ![owencloud 1-7](https://docs.owen.ru/book_img/2379/36736.png)

14. Перейти к просмотру значений параметров прибора. Изменить значения переменных с дисплея ПР200 и наблюдать соответствующие изменения в **OwenCloud**.

15. В случае необходимости изменения значений следует перейти на вкладку **Запись параметров**.

    ![owencloud 1-8](https://docs.owen.ru/book_img/2379/36735.png)

<a id="topic-122453"></a>

### Прямое подключение приборов второго поколения к OwenCloud

Для приборов [второго поколения](#topic-122295) доступно прямое подключение к OwenCloud.

Прибор должен быть настроен для работы и подключен к сети.

Для подключения к OwenCloud следует:

1. Подключить прибор к ПК и создать проект с использованием сетевых переменных.

2. Установить [пароль](#topic-122350) для доступа к прибору.

3. В окне [настроек прибора](#topic-122352) разрешить доступ к OwenCloud.

   ![Cloud4](https://docs.owen.ru/book_img/2379/143990.png)

   *Окно Настройка прибора*

   > **Примечание.** Значение параметра **Статус подключения к OwenCloud** можно считать по Modbus или привязать переменную пользовательской программы. Описание параметра приведено в таблице ниже.
   >
   > **Возможные состояния параметра «Статус подключения к OwenCloud»**
   >
   > | Состояние | Значение | Описание |
   > | --- | --- | --- |
   > | Нет соединения | 0 | Выключен обмен с OwenCloud |
   > | Идентификация | 1 | Устанавливается подключение к OwenCloud |
   > | Работа | 2 | OwenCloud управляет прибором, ошибок нет |
   > | Ошибка сети | 3 | Прибор не может установить соединение с сервером OwenCloud |
   > | Нет пароля | 4 | Не установлен пароль на прибор |

4. Разрешить удаленный доступ к регистрам Modbus.

   ![Cloud3](https://docs.owen.ru/book_img/2379/143989.png)

   *Окно Настройка прибора*

5. Загрузить программу в прибор(**Прибор** → **Загрузить программу в прибор**).

6. Зайти на главную страницу сервиса [OwenCloud](https://web.owencloud.ru/). Если регистрация отсутствует, то необходимо пройти процедуру регистрации.

7. Перейти на вкладку **Администрирование**, открыть вкладку **Приборы** и нажать кнопку **Добавить прибор** (![owencloud 1-3](https://docs.owen.ru/book_img/2379/36710.png)).

8. Появится окно с выбором типа прибора.

   > **Примечание.** Прямое подключение к OwenCloud будет рассматриваться на примере ПР103. Для подключения других приборов второго поколения выполните аналогичные действия.

   ![Cloud1](https://docs.owen.ru/book_img/2379/143960.png)

   *Выбор типа прибора*

   Вариант **ПР103 по Ethernet — Автоопределение**:

   > **Примечание.** При этом способе добавления прибора выводятся не только сетевые переменные, но и все дерево параметров прибора.

   1. В появившемся окне в полях:

      - **Идентификатор** ввести заводской номер прибора;
      - **Адрес в сети** оставить без изменения адрес **1**;
      - **Название прибора** – ввести название прибора;
      - **Часовой пояс** – указать часовой пояс, в котором находится прибор.

   2. Нажать кнопку «Добавить». Откроется интерфейс базовых настроек прибора.

   3. Ввести пароль от прибора. Если необходимо, можно изменить и другие настройки (например, период опроса).

   4. Нажать кнопку «Сохранить» для применения новых настроек.

   5. OwenCloud подключится к прибору и считает все параметры из него.

   Вариант **ПР103 по Ethernet — Ручная настройка**:

   1. В появившемся окне в полях:

      - **Идентификатор** ввести заводской номер прибора;
      - **Адрес в сети** оставить без изменения адрес **1**;
      - **Название прибора** – ввести название прибора;
      - **Часовой пояс** – указать часовой пояс, в котором находится прибор.

   2. Нажать кнопку «Добавить». Откроется интерфейс общих настроек прибора.

   3. Ввести пароль от прибора. Если необходимо, можно изменить и другие настройки. Нажать кнопку «Сохранить» для применения новых настроек.

   4. Далее во вкладке **Параметры**/**Настройки параметров** добавить сетевые параметры прибора одним из доступных способов:

      - вручную, в соответствии с заданными в ПР103 сетевыми переменными. **Следует обратить внимание**, что адреса регистров указываются в шестнадцатеричной системе — поэтому используемые значения отличаются от тех, которые приведены в Owen Logic - 16384 (DEC) = 4000 (HEX).

      - в виде файла \*.json, если воспользоваться расширением **Экспорт устройства в OwenCloud** Owen Logic.

        Для добавления параметров следует нажать на выпадающий список **Импортировать** и выбрать вариант **Загрузить из JSON**. В открывшемся меню выбрать ранее созданный файл в формате \*.json и нажать кнопку **Загрузить параметры**.

        ![Обл Имп Пар](https://docs.owen.ru/book_img/2379/109047.png)

        *Импорт параметров*

   Вариант **ПР103 по RS485 - Через шлюз**:

   1. В появившемся окне в полях:

      - **Идентификатор** ввести заводской номер шлюза;
      - **Адрес в сети** установить в соответствии с адресом порта к которому подключен шлюз;
      - **Название прибора** – ввести название прибора;
      - **Часовой пояс** – указать часовой пояс, в котором находится прибор.

   2. Нажать кнопку «Добавить». Появится окно настройки обмена с OwenCloud.

      ![Cloud7](https://docs.owen.ru/book_img/2379/144015.png)

      *Настройки обмена с OwenCloud*

      Поля должны соответствовать аналогичным настройкам порта к которому подключен шлюз.:

      - **Скорость СОМ-порта**
      - **Настройка СОМ-порта** установить в соответствии с адресом порта к которому подключен шлюз;
      - **Протокол Modbus** – ввести название прибора;

   3. Нажать кнопку «Сохранить» для применения новых настроек.

   4. Далее во вкладке **Параметры**/**Настройки параметров** добавить сетевые параметры прибора одним из доступных способов:

      - вручную, в соответствии с заданными в ПР103 сетевыми переменными. **Следует обратить внимание**, что адреса регистров указываются в шестнадцатеричной системе — поэтому используемые значения отличаются от тех, которые приведены в Owen Logic - 16384 (DEC) = 4000 (HEX).

      - в виде файла \*.json, если воспользоваться расширением **Экспорт устройства в OwenCloud** Owen Logic.

        Для добавления параметров следует нажать на выпадающий список **Импортировать** и выбрать вариант **Загрузить из JSON**. В открывшемся меню выбрать ранее созданный файл в формате \*.json и нажать кнопку **Загрузить параметры**.

        ![Обл Имп Пар](https://docs.owen.ru/book_img/2379/109047.png)

        *Импорт параметров*

Если все настройки были корректными, то на вкладке **Общие данные** отобразятся данные от прибора.

Если прибор не опрашивается из OwenCloud, то следует проверить сетевые настройки, статус подключения к OwenCloud:

![Доб Обл-03](https://docs.owen.ru/book_img/2379/140477.png)

*Пример отображения подключения к OwenCloud*

Если значения не пишутся в прибор из OwenCloud следует проверить наличие установленной галочки в столбце **Управляемый параметр**.

![Доб Обл-000](https://docs.owen.ru/book_img/2379/140479.png)

*Управляемый параметр*

<a id="topic-122454"></a>

### Упаковка/распаковка бит/целых чисел

**Задача** – необходимо считывать состояние входов прибора и выводить на экран состояние выбранного входа.

На иллюстрации ниже приведен холст проекта с использованием макросов из [менеджера компонентов](#topic-122331) и настройки свойств элементов вывода на экран.

![pr mask1](https://docs.owen.ru/book_img/2379/36732.png)

<a id="topic-122455"></a>

### Обработка битовых переменных с помощью маски

**Задача** – по сигналу выходы включаются или выключаются. Если реализуется дополнительное условие — срабатывает вход 1, то выходы 2, 4, 6 и 8 должны принимать инвертированное состояние относительно текущего.

Для задания состояний выходов следует использовать макросы из [менеджера компонентов](#topic-122331) — **BOOL_INT** и **INT_BOOL**.

Дополнительное условие данного примера можно реализовать с помощью побитного исключения XOR. В качестве маски можно воспользоваться целочисленной константой — **170** (10101010 в двоичном виде).

Холст проекта в режиме симуляции приведен ниже.

![umask](https://docs.owen.ru/book_img/2379/37678.png)

<a id="topic-122456"></a>

## Язык программирования ST

ST (Structured Text) - это текстовый язык высокого уровня. Является одним из пяти языков, поддерживаемых стандартом МЭК 61131-3.

В Owen Logic доступно создание функций и функциональных блоков на языке ST.

- [Синтаксис](#topic-122457)
- [Типы данных](#topic-122464)
- [Конструкции языка](#topic-122467)
- [Системные функции](#topic-122482)
- [Системные функциональные блоки](#topic-122506)

<a id="topic-122457"></a>

### Синтаксис

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

Имена переменных, функций и функциональных блоков подчиняются следующим правилам:

- Имя не должно содержать пробелов и спецсимволов (например, !, @ и т.д.). Исключение – символ нижнего подчеркивания (\_);
- Имя должно начинаться с буквы;
- Имя переменной может содержать только буквы латинского алфавита;
- Имя не должно содержать несколько символов нижнего подчеркивания(\_), размещенных подряд (т.е. имя **i\_\_Test** недопустимо, а имя **i_Te_st** - допустимо);
- Регистр имен объектов не учитывается (**ITest** и **iTEST** будет интерпретироваться как одно и то же имя);
- На длину имени не накладывается никаких ограничений;
- Имя не должно совпадать ни с одним из зарезервированных ключевых слов (например, VAR, INT, и т.д.);
- Рекомендуется для имен переменных использовать венгерскую нотацию и стиль lowerCamelCase.

<a id="topic-122458"></a>

#### Побитовый доступ к переменным

Побитовый доступ доступен для переменных типа UDINT. Для обращения нужно использовать следующую форму:

```
Переменная.Номер требуемого бита
```

**Пример**

```
Variable.1 := TRUE;
Variable.31 := FALSE;
```

Номер бита при этом должен быть задан целым числом от 0 до 31. Использование переменных в качестве номера бита не допускается.

<a id="topic-122459"></a>

#### Использование функций в других элементах программы на ST

Функцию можно вызвать в другой функции или функциональном блоке. Для этого нужно использовать следующий формат (неформальный вызов):

*Имя функции (перечисление через запятую входов функции)*

**Пример**

```
FUNCTION rFun1: REAL;
    
    VAR_INPUT
        rIn1 : REAL;
        rIn2 : REAL;
    END_VAR
    
    rFun1 := rIn1 + rIn2;
    
END_FUNCTION
```

Есть функция **rFun1**:

Ее вызов в функции **rFun2** будет выглядеть следующим образом:

```
FUNCTION rFun2: REAL;
    
    VAR_INPUT
        rIn1_0 : REAL;
        rInf1_1 : REAL;
        rInf1_2 : REAL;
    END_VAR
    
    rFun2 := rIn1_0 * rFun1(rInf1_1, rInf1_2);
    
END_FUNCTION
```

Функция **rFun2** будет возвращать число, равное произведению **rIn1_0** на сумму **rInf1_1** и **rInf1_2**, которые задаются на входе этой функции.

<a id="topic-122460"></a>

#### Использование одного функционального блока в другом

Экземпляры одного функционального блока могут быть созданы в другом функциональном блоке, а именно в области объявления локальных переменных в формате:

    **(краткое обозначение):(имя функционального блока)**

После создания экземпляра функционального блока можно начинать работу с его данными. Входы экземпляра блока доступны для записи извне. Выходы – для чтения.

Вызвать экземпляр можно по-разному. В качестве примера рассмотрим вызов счетчика для прямого счета, который создается как шаблон при создании функционального блока.

1. Через формальный вызов:

   ```
   FUNCTION_BLOCK fb2

       VAR_INPUT
           xIn : BOOL;  
       END_VAR

       VAR_OUTPUT
           xAlarmMax : BOOL;
           udiQ : UDINT;
       END_VAR

       VAR
           fb1 : functionblock1; //объявление экземпляра функционального блока
       END_VAR

       fb1 (U := xIn, Q => udiQ); //вызов экземпляра функционального блока
       IF fb1.Q > 10 THEN
           xAlarmMax := TRUE;
       END_IF
      
   END_FUNCTION_BLOCK
   ```

   > **Примечание.** Обратите внимание на специфический оператор копирования значения из выходных переменных блока («=>»).

2. Через обращение к входам/выходам функционального блока (объявление переменных аналогичное):

   ```
       fb1.U := xIn; //запись данных на вход ФБ
       fb1 (); //вызов экземпляра функционального блока
       udiQ := fb1.Q; //чтение выхода экземпляра ФБ
       IF fb1.Q > 10 THEN
           xAlarmMax := TRUE;
       END_IF
   ```

   На выходе **fb2** будет индикация превышения 10 импульсов и накопленное значение счетчика.

> [!IMPORTANT]
> **Предупреждение.** Объявлять экземпляр функционального блока в теле функции нельзя.

> [!IMPORTANT]
> **Предупреждение.** В функциональном блоке на ST максимальная вложенность блоков – не более 8.

> [!IMPORTANT]
> **Предупреждение.** Функциональные блоки на ST не поддерживают переменные типа RETAIN.

> [!IMPORTANT]
> **Предупреждение.** Функциональные блоки на ST резервируют место в памяти ПЗУ после их добавления в библиотеку проекта, независимо от того используются они в проекте или нет.

<a id="topic-122461"></a>

#### Комментирование в редакторе ST

Редактор ST в Owen Logic поддерживает функцию комментирования. Доступны два типа комментариев:

1. Однострочный. Его маркером является двойной слеш – //

2. Многострочный. Его маркером является:

   - (\* – начало комментария;
   - \*) – конец комментария.

<a id="topic-122462"></a>

#### Копирование элементов на ST между проектами

Для копирования компонентов на ST между проектами следует:

1. Выделить на схеме исходного проекта те элементы на ST, которые необходимо скопировать.

2. Скопировать выбранные элементы с помощью сочетания клавиш **Ctrl + C** или с помощью контекстного меню.

   ![copy ST elements](https://docs.owen.ru/book_img/2379/134442.png)

3. Открыть проект для вставки скопированных элементов.

4. Вставить элементы на схему второго проекта с помощью сочетания клавиш **Ctrl + V** или с помощью контекстного меню.

В результате в библиотеку компонентов проекта в соответствующий раздел добавятся шаблоны всех скопированных элементов.

> [!NOTE]
> **Примечание.**
>
> 1. Если в библиотеке компонентов нет группы, которая была указана для скопированного компонента, она будет создана.
> 2. Если группа скопированного компонента не указана, шаблон будет добавлен в папку **Другое**.

При копировании сохраняются все связи между всеми компонентами, которые вошли в операцию копирования.

> [!IMPORTANT]
> **Предупреждение.** Если какой-либо из скопированных элементов содержит ошибку, вставка элементов на схему проекта будет отменена.
>
> Отобразится сообщение об ошибке с указанием имени некорректного элемента.
>
> ![Копирование ФБ](https://docs.owen.ru/book_img/2379/147488.jpg)
>
> Прочие компоненты отобразятся в библиотеке компонентов в соответствующих разделах.

<a id="topic-122463"></a>

### Документирование в редакторе ST

Редактор ST поддерживает функцию документирования.

Маркером документирования является тройной слэш «///».

Документирование добавляется над объектами: объявление функции / функционального блока, объявление входной / выходной переменной.

Теги для документирования перечислены в таблице ниже.

| Тег | Описание |
| --- | --- |
| \<Description>…\</Description> | Описание элемента программы (функции, функционального блока, входной и выходной (только для функционального блока) переменной) |
| \<Author>…\</Author> | Имя создателя функции или функционального блока |
| \<GroupName>…\</GroupName> | Имя группы для группировки функции или функционального блока в библиотеке компонентов |
| \<OutputDescription>…\</OutputDescriotion> | Описание выхода функции |
| \<Password>…\</Password> | Пароль для доступа в блок |

Информация из тегов документирования будет отображаться в [сниппетах](#snip) при вызове функции или функционального блока.

![clip image002](https://docs.owen.ru/book_img/2379/136936.png)

**Документирование функции**

```
///<Description>Преобразователь сопротивления в температуру (Pt1000)</Description>
///<OuptutDescription>Температура</OutputDescription>
///<Author>ОВЕН</Author>
///<GroupName>Температурный датчики</GroupName>

FUNCTION f_PT1000: REAL; // функция для датчика термосопротивления PT1000
    
    VAR_INPUT

        ///<Description>Сопротивление</Description>
        R : REAL;
        
    END_VAR
```

После импорта в менеджер компонентов описание функции будет представлено в соответствии с указанными тегами документировани:

![Description function](https://docs.owen.ru/book_img/2379/131705.png)

 

**Пример документирования функционального блока**

```
///<Description>Счетчик для прямого счета</Description>
///<Author>ОВЕН</Author>
///<GroupName>Таймеры и счетчики</GroupName>

FUNCTION_BLOCK fb_Counter

    VAR_INPUT
        
        ///<Description>Детектор импульсов</Description>
        U : BOOL; //входная переменная с типом данных bool

        ///<Description>Флаг сброса счетчика</Description>
        Res : BOOL; //входная переменная с типом данных bool

        ///<Description>Предустановленное значение счетчика</Description>
        N : UDINT; //входная переменная с типом данных bool
       
    END_VAR

    VAR_OUTPUT
    
        ///<Description>Значение счетчика</Description>
        Q : UDINT; //выходная переменная с типом данных udint
       
    END_VAR
```

После импорта в менеджер компонентов описание функционального блока будет представлено в соответствии с указанными тегами документирования:

![Description FB](https://docs.owen.ru/book_img/2379/131704.png)

<a id="topic-122464"></a>

### Типы данных

Тип данных переменной определяет род информации, диапазон представлений и множество допустимых операций.

> [!NOTE]
> **Примечание.** Любую переменную можно использовать только после её объявления. Присваивать значения одной переменной другой можно, только если они одного типа. В противном случае используются [преобразователи типов](#topic-122471).

> [!IMPORTANT]
> **Предупреждение.** Преобразование больших типов в более мелкие может привести к потере информации.

Типы данных, поддержанные в Owen Logic, перечислены в таблице ниже:

| Название | Тип | Возможные значения | Размер в байтах |
| --- | --- | --- | --- |
| BOOL | Логический | FALSE, TRUE | 4 байта |
| UDINT | Целочисленный | 0…4294967295 | 4 байта |
| REAL | Вещественный | –1,2×10<sup>-38</sup>…3,4×10<sup>38</sup> | 4 байта |
| TIME | Интервал времени | T#0…4294967295ms<br>T#0..4294967s<br>T#0..71582m<br>T#0..1193h<br>T#0..49d<br>T#0..49d17h02m47s295ms | 4 байта |
| DT | Время суток и дата | DT#2000-01-01-00:00:00..2136-02-07-6:28:15 | 4 байта |
| ARRAY | Массив | — | — |

<a id="topic-122465"></a>

#### Зарезервированные ключевые слова

> [!NOTE]
> **Примечание.** В таблице полужирным шрифтом выделены доступные для использования слова.

|   |   |   |   |
| --- | --- | --- | --- |
| **ABS** | END_TRANSITION | **RETURN** | **SYS.TOF** |
| ACTION | END_TYPE | SEL | **SYS.TON** |
| **AND** | **END_VAR** | **SHL** | **SYS.TP** |
| **ARRAY** | **END_WHILE** | **SHR** | TASK |
| AT | ENO | SINT | **THEN** |
| BEGIN | **EXIT** | STEP | **TIME** |
| **BOOL** | F_EDGE | STRING | TIME_OF_DAY |
| **BOOL_TO_REAL** | **FALSE** | STRUCT | **TIME_TO_UDINT** |
| **BOOL_TO_UDINT** | **FOR** | **SYS.ACOS** | **TO** |
| **BY** | **FROM** | **SYS.ASIN** | TOD |
| **CASE** | **FUNCTION** | **SYS.ATAN** | TRANSITION |
| **CD32** | **FUNCTION_BLOCK** | **SYS.BLINK** | **TRUE** |
| CONFIGURATION | **GET_DATE_TIME** | **SYS.CLOCK** | TYPE |
| **CONTINUE** | **GET_TIME** | **SYS.CLOCKWEEK** | **UDINT** |
| DATE | **IF** | **SYS.COMPARE_DATE_TIME** | **UDINT_TO_BOOL** |
| **DATE_AND_TIME** | INITIAL_STEP | **SYS.COS** | **UDINT_TO_DT** |
| **DC32** | INT | **SYS.CT** | **UDINT_TO_REAL** |
| DINT | LINT | **SYS.CTN** | **UDINT_TO_TIME** |
| **DO** | LREAL | **SYS.CTU** | UINT |
| **DT** | LWORD | **SYS.DTRIG** | ULINT |
| **DT_TO_UDINT** | **MOD** | **SYS.EXP** | **UNTIL** |
| DWORD | NON_RETAIN | **SYS.FACT** | USINT |
| **ELSE** | **NOT** | **SYS.FMAX** | **VAR** |
| **ELSIF** | **OF** | **SYS.FMIN** | VAR_ACCESS |
| EN | ON | **SYS.FTRIG** | VAR_CONFIG |
| **END** | **OR** | **SYS.IS_LEAP_YEAR** | VAR_EXTERNAL |
| END_ACTION | **POW** | **SYS.LG** | VAR_GLOBAL |
| **END_CASE** | PROGRAM | **SYS.LN** | VAR_IN_OUT |
| END_CONFIGURATION | R_EDGE | **SYS.LOG** | **VAR_INPUT** |
| **END_FOR** | READ_ONLY | **SYS.MAX** | **VAR_OUTPUT** |
| **END_FUNCTION** | READ_WRITE | **SYS.MIN** | VAR_TEMP |
| **END_FUNCTION_BLOCK** | **REAL** | **SYS.RS** | **WHILE** |
| **END_IF** | **REAL_TO_BOOL** | **SYS.RTRIG** | WITH |
| **END_REPEAT** | **REAL_TO_UDINT** | **SYS.SIN** | WORD |
| END_RESOURCE | **REPEAT** | **SYS.SQRT** | WSTRING |
| END_STEP | RESOURCE | **SYS.SR** | **XOR** |
| END_STRUCT | RETAIN | **SYS.TAN** |   |

<a id="topic-122466"></a>

#### Массивы

##### Синтаксис объявления массива

Для объявления массива применяется следующий синтаксис:

```
<Имя массива>:ARRAY[Индекс1..ИндексN]OF <ТИП ЭЛЕМЕНТА>:=[Значение по умолчанию 
элемента1, Значение по умолчанию элемента2, Значение по умолчанию элементаN];
```

Где:

Индекс1 - номер первого элемента массива;

ИндексN - номер последнего элемента массива.

Правило для индексов:

- Значение ИндексN не может быть меньше или равно значению Индекс1;
- Индексы должны быть только целого типа и не могут принимать отрицательные значения.

Примеры объявления массива:

```
        Mass1: ARRAY[0..2] OF UDINT; //объявление массива состоящего из трех элементов 
типа UDINT
        Mass1: ARRAY[0..2] OF UDINT :=[1, 3, 5]; //инициализация элементов массива при 
объявлении массива
```

Ошибки при объявлении массива:

```
        Mass1: ARRAY[0] OF UDINT :=[1, 5]; //ошибка: размерность массива должна быть 
указана в виде <целое число>...<целое число>
        Mass1: ARRAY[] OF UDINT; //ошибка: размерность массива должна быть указана в 
виде <целое число>...<целое число>
```

##### Синтаксис для доступа к элементам массива

Для доступа к элементам массива применяется следующий синтаксис:

```
<Имя массива>[Индекс1];
```

Примеры работы с элементами массива:

```
VAR:=Mass1[5]; //присвоение переменной Var значения из пятого элемента массива
VAR:=Mass1[5]+5*2;
VAR:=UDINT_TO_BOOL(Mass1[5]); //присвоение переменной Var преобразованного значения 
из пятого элемента массива
VAR:=(Mass1[i]); //присвоение переменной Var значения из i элемента массива,
 где i - переменная (локальная/входная)
```

При работе с массивами действуют следующие правила:

1. Массив может быть только одномерный.

2. Количество элементов массива ограничено до 32768 элементов.

3. Элементы массива могут быть следующих типов: BOOL, UDINT, REAL, TIME и DT.

4. Поддержка массива для функции:

   - функция может возвращать тип данных типа массив;

     Пример работы функции, которая возвращает массив:

     ```
     //функция MyFunction вернет переменную типа "Массив"
     function MyFunction: ARRAY [0..1] OF  UDINT ;
        var_input
           //входные переменные типа "Массив"
            Mass1 : ARRAY [0..1] OF  UDINT ;
        end_var
           //формируем возвращаемый массив в теле функции
     MyFunction [0]:= Mass1 [0];
     MyFunction [1]:= Mass1 [1];
     end_function
     ```

   - объявление переменной типа массив в функции происходит в области VAR...END_VAR и/или VAR_INPUT...END_VAR;

     Пример объявление переменных типа массив в разных областях функции:

     ```
     //функция MyFunction вернет переменную типа "Массив"
     function MyFunction: ARRAY [0..1] OF  UDINT ;
        var_input
           //входные переменные типа "Массив"
            Mass1 : ARRAY [0..1] OF  UDINT ;
        end_var
        var
           //локальные переменные типа "Массив"
            Mass2 : ARRAY [0..1] OF  UDINT ;
        end_var
     end_function
     ```

   для функционального блока:

   - объявление переменной типа массив в ФБ происходит в области VAR...END_VAR, VAR_INPUT...END_VAR и/или VAR_OUTPUT...END_VAR.

     ```
     function_block MyFunctionblock
        var_input
           //объявление входной переменной типа "Массив"
            Mass1 : ARRAY [0..1] OF  UDINT ;
        end_var
        var_output
           //объявление выходной переменной типа "Массив"
            Mass2 : ARRAY [0..1] OF  UDINT ;
        end_var
           //объявление локальной переменной типа "Массив"
            Mass3 : ARRAY [0..1] OF  UDINT ;
        end_var
     end_function_block
     ```

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

6. При инициализации элементов массива, количество значений по умолчанию должно соответствовать количеству элементов массива.

   Пример:

   ```
           Mass1: ARRAY[0..3] OF UDINT:=[1,3,5,7];
   ```

   Ошибка:

   ```
           Mass1: ARRAY[0..1] OF UDINT:=[1,5,7];
           Mass1: ARRAY[0..1] OF UDINT:=[1];
   ```

Ограничения при работе с массивами:

1. Не поддержан побитовый доступ к элементам массива.

   Пример:

   ```
           Mass1: ARRAY[0..1] OF UDINT:=[1,5]; 
           Mass1[1].1:= TRUE; //ошибка
   ```

2. Не поддержано повторение последовательности элементов массива.

   Пример:

   ```
           Mass1: ARRAY[0..5] OF UDINT:=[1,5,7(2)]; //где (2) означает повторение 
   последовательности [1, 5, 7] 2 раза //ошибка
   ```

3. Не поддержано присвоение значения сразу нескольким элементам массива.

   Пример:

   ```
          Mass1[1, 5]:=1; //ошибка: присвоение значения 1 первому и пятому 
   элементам массива
   ```

Пример [использования массивов](#topic-122479).

<a id="topic-122467"></a>

### Конструкции языка

К конструкциям языка ST относятся:

- [арифметические операции](#topic-122469);
- [битовые операции](#topic-122470);
- [операции преобразования типов данных](#topic-122471);
- [логические операции](#topic-122472);
- [операции сравнения](#topic-122473);
- [операция присвоения](#topic-122475);
- [конструкция **IF – ELSIF – ELSE**](#topic-122476);
- [конструкция **CASE**](#topic-122477);
- [конструкция **RETURN**](#topic-122478)
- [цикл **FOR**](#topic-122479);
- [цикл **WHILE**](#topic-122480);
- [цикл **REPEAT – UNTIL**](#topic-122481).

> [!NOTE]
> **Примечание.** При записи выражений допустимо использовать переменные (входные, выходные и локальные) и константы.

<a id="topic-122468"></a>

#### Операции

<a id="topic-122469"></a>

##### Арифметические операции

| Операция | Ключевое слово | Типы данных | Пример использования |
| --- | --- | --- | --- |
| Сложение | + | IN, OUT: UDINT/REAL | OUT := IN1 + IN2 + … |
| Умножение | \* | IN, OUT: UDINT/REAL | OUT := IN1 \* IN2 \* … |
| Вычитание | - | IN, OUT: UDINT/REAL | OUT := IN1 - IN2 |
| Деление | / | IN, OUT: UDINT/REAL | OUT := IN1 / IN2 |
| Остаток от целочисленного деления | MOD | IN, OUT: UDINT | OUT := IN1 MOD IN2 |
| Абсолютное значение | ABS (IN) | IN, OUT: REAL | OUT := ABS (IN1) |
| Возведение в степень | POW (IN, N)IN – основаниеN – степень | IN, N, OUT: REAL | OUT := POW (IN1, N) |

Доступные [математические константы.](#topic-122489)

> [!NOTE]
> **Примечание.** При записи арифметических выражений допустимо использование скобок для указания порядка вычислений. Действие, заключенное в скобки, имеет наивысший [приоритет при вычислениях](#topic-122474).

<a id="topic-122470"></a>

##### Битовые операции

| Операция | Ключевое слово | Типы данных | Пример использования |
| --- | --- | --- | --- |
| Побитовый сдвиг влево | SHL (IN, N) | IN, OUT: UDINT<br>N: 1..32 | OUT := SHL (IN1, N) |
| Побитовый сдвиг вправо | SHR (IN, N) | IN, OUT: UDINT<br>N: 1..32 | OUT := SHR (IN1, N) |
| Дешифратор.<br>Преобразует двоичный код в позиционный код. | DC32 (IN) | IN, OUT: UDINT | OUT := DC32 (IN1) |
| Шифратор.<br>Преобразует позиционный код в двоичный код. | CD32 (IN) | IN, OUT: UDINT | OUT := CD32 (IN1) |

<a id="topic-122471"></a>

##### Операции преобразования типов данных

| Операция | Ключевое слово | Типы данных | Пример использования |
| --- | --- | --- | --- |
| UDINT в REAL | UDINT_TO_REAL (IN) | IN: UDINT<br>OUT: REAL | OUT := UDINT_TO_REAL (IN) |
| UDINT в BOOL | UDINT_TO_BOOL (IN) | IN: UDINT<br>OUT: BOOL | OUT := UDINT_TO_BOOL (IN) |
| UDINT в TIME | UDINT_TO_TIME (IN) | IN: UDINT<br>OUT: TIME | OUT := UDINT_TO_TIME (IN) |
| UDIMT в DT | UDINT_TO_DT (IN) | IN: UDINT<br>OUT: DT | OUT := UDINT_TO_DT (IN) |
| REAL в UDINT | REAL_TO_UDINT (IN) | IN: REAL<br>OUT: UDINT | OUT := REAL_TO_UDINT (IN) |
| REAL в BOOL | REAL_TO_BOOL (IN) | IN: REAL<br>OUT: BOOL | OUT := REAL_TO_BOOL (IN) |
| BOOL в REAL | BOOL_TO_REAL (IN) | IN: BOOL<br>OUT: REAL | OUT := BOOL_TO_REAL (IN) |
| BOOL в UDINT | BOOL_TO_UDINT (IN) | IN: BOOL<br>OUT: UDINT | OUT := BOOL_TO_UDINT (IN) |
| TIME в UDINT | TIME_TO_UDINT (IN) | IN: TIME<br>OUT: UDINT | OUT := TIME_TO_UDINT (IN) |
| DT в UDINT | DT_TO_UDINT (IN) | IN: DT<br>OUT: UDINT | OUT := DT_TO_UDINT (IN) |

<a id="topic-122472"></a>

##### Логические операции

| Операция | Ключевое слово | Типы данных | Пример использования |
| --- | --- | --- | --- |
| Логическое отрицание «НЕ» | NOT | IN, OUT: BOOL | OUT := NOT IN1 |
| Конъюнкция<br>Логическое умножение «И» | AND<br>& | IN, OUT: BOOL | OUT := IN1 AND IN2<br>OUT := IN1 & IN2 |
| Дизъюнкция<br>Логическое сложение «ИЛИ» | OR | IN, OUT: BOOL | OUT := IN1 OR IN2 |
| Исключающее ИЛИ | XOR | IN, OUT: BOOL | OUT := IN1 XOR IN2 |

<a id="topic-122473"></a>

##### Операции сравнения

| Операция | Ключевое слово | Типы данных | Пример использования |
| --- | --- | --- | --- |
| Больше | > | IN: UDINT/REAL<br>OUT: BOOL | OUT := IN1 > IN2 |
| Больше или равно | >= | IN: UDINT/REAL<br>OUT: BOOL | OUT := IN1 >= IN2 |
| Равно | = | IN: UDINT/REAL<br>OUT: BOOL | OUT := IN1 = IN2 |
| Меньше или равно | <= | IN: UDINT/REAL<br>OUT: BOOL | OUT := IN1 <= IN2 |
| Меньше | < | IN: UDINT/REAL<br>OUT: BOOL | OUT := IN1 < IN2 |
| Неравно | <> | IN: UDINT/REAL<br>OUT: BOOL | OUT := IN1 <> IN2 |

<a id="topic-122474"></a>

##### Приоритеты операций

> [!NOTE]
> **Примечание.** Операции в таблице расположены **от наивысшего к низшему приоритету**. Чем выше приоритет операции, тем раньше она выполняется.

| Операция | Ключевое слово |
| --- | --- |
| Скобки | (выражение) |
| Вызов функции и функционального блока | Пример: fb1();<br>function1 := … ; |
| Битовые операции | Пример: fb1();<br>function1 := … ; |
| Унарный минус | – |
| Логическое отрицание | NOT |
| Возведение в степень | POW |
| Умножение | \* |
| Деление | / |
| Остаток от целочисленного деления | MOD |
| Сложение | + |
| Вычитание | – |
| Операции сравнения | >, <, >=, <= |
| Равно | = |
| Неравно | <> |
| КонъюнкцияЛогическое умножение «И» | &AND |
| Исключающее ИЛИ | XOR |
| ДизъюнкцияЛогическое сложение «ИЛИ» | OR |

<a id="topic-122475"></a>

#### Присвоение

Для обозначения присвоения используется парный знак «**:=**». В правой и левой части выражения должны быть операнды одного типа (автоматического приведения типов не предусмотрено). В левой части выражения (принимающая сторона) может быть использована только переменная. Правая часть может содержать выражение или константу.

<a id="topic-122476"></a>

#### Оператор IF

Оператор **IF** позволяет проверить одно или несколько условий, и, если хотя бы одно из условий является истинным, выполнить заданные для этого условия выражения. После выполнения выражений производится выход из оператора – то есть оставшиеся условия уже не проверяются.

Рассмотрим работу оператора на примере сигнализации выхода значения температуры за допустимые границы:

```
FUNCTION_BLOCK fb //имя функционального блока

    VAR_INPUT //объявление входных переменных
        rTemp : REAL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        xHigh : BOOL;
        xLow : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        rHighTemp : REAL := 20;
        rLowTemp : REAL := 10;
    END_VAR
    
    //область кода

    IF rTemp > rHighTemp THEN
        xHigh := TRUE;
    ELSIF rTemp < rLowTemp THEN
        xLow := TRUE;
    ELSE
        xHigh := FALSE;
        xLow := FALSE;
    END_IF
    
END_FUNCTION_BLOCK
```

Если условие в операторе **IF** выполняется (значение переменной **rTemp** больше **rHighTemp**), то переменной **xHigh** будет присвоено значение **TRUE** и произойдет выход из оператора (следующее условие проверяться не будет). Если же условие не выполняется, то произойдет проверка следующего условия, размещенного во вложенном операторе **ELSIF**. Если условие в **ELSIF** выполняется (значение переменной **rTemp** меньше **rLowTemp**), то переменной **xLow** будет присвоено значение **TRUE** и произойдет выход из оператора (следующее условие проверяться не будет). Если ни одно из условий в **IF** и **ELSIF** не выполняется (то есть значение температуры находится в допустимых пределах), то произойдет выполнение выражений, размещенных во вложенном операторе **ELSE** – присвоение переменным **xHigh** и **xLow** значения **FALSE**.

Использование вложенных операторов **ELSIF** и **ELSE** является необязательным. Внутри оператора **IF** может быть размещено произвольное число операторов **ELSIF**.

Конструкция допускает вложенность, то есть внутри одного **IF** может быть еще один и т.д. Также внутри оператора **IF** могут быть использованы циклы и оператор **[CASE](#topic-122477)**.

<a id="topic-122477"></a>

#### Оператор CASE

Оператор **CASE** позволяет сравнить значение заданной целочисленной переменной (селектора) с набором констант или целочисленных значений (метками), и в случае совпадения выполнить заданные для этой метки выражения. После выполнения выражений производится выход из оператора.

Рассмотрим работу оператора на примере:

```
FUNCTION_BLOCK fb1 //имя функционального блока

    VAR_INPUT //объявление входных переменных
        udiSel : UDINT;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        xOut1 : BOOL;
        xOut2 : BOOL;
        xOut3 : BOOL;
        xOut4 : BOOL;
    END_VAR

    //область кода

    xOut1 := FALSE;
    xOut2 := FALSE;
    xOut3 := FALSE;
    xOut4 := FALSE;

    CASE udiSel OF
        0:
            xOut1 := TRUE;
        1..3:
            xOut2 := TRUE;
        4, 6:
            xOut3 := TRUE;
    ELSE
        xOut4 := TRUE;
    END_CASE
    
END_FUNCTION_BLOCK 
```

Если значение **udiSel**:

- Равно 0, то **xOut1** примет значение **TRUE**;
- Попадет в диапазон 1..3, то **xOut2** примет значение **TRUE**;
- Равно 4 или 6, то **xOut3** примет значение **TRUE**;
- Не попадет ни в одно из указанных значений, то **xOut4** примет значение **TRUE**;

Как видно из примера – метка может включать в себя несколько значений, перечисленных через запятую «4, 6», или диапазон «1..3». При этом значения одной из меток не должны совпадать со значениями других. Также, при указании диапазона значений начало диапазона должно быть меньше его конца.

Вложенный оператор **ELSE** является необязательным; размещенные в нём выражения выполняются в том случае, если значение селектора не совпало ни с одной из меток.

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

<a id="topic-122478"></a>

#### Оператор RETURN

Оператор **RETURN** позволяет выйти из программного объекта.

Пример использования:

```
IF xDone THEN
    RETURN;
END_IF;
    
udiCounter := udiCounter + 1;
```

Если переменная **xDone** примет значение **TRUE**, то выражение «**udiCounter** := **udiCounter** + 1» выполнятся не будет (как и все, что будет находится ниже в теле программы).

<a id="topic-122479"></a>

#### Цикл FOR

Оператор **FOR** применяется для организации цикла с заранее известным числом итераций. Обычно он используется для операций над массивами данных.

Внутри цикла могут использоваться операторы **IF** и **CASE**, а также другие операторы цикла.

В качестве примера рассмотрим реализацию пузырьковой сортировки от меньшего к большему:

```
FUNCTION_BLOCK MaxI_MinI //Максимальное и минимальное число при помощи пузырьковой
 // сортировки от меньшего к большему
    
    VAR_INPUT //объявление входных переменных
        udiX1, udiX2, udiX3, udiX4, udiX5 : UDINT; 
        //Добавление необходимого кол-ва входных переменных и определение типа данных
    END_VAR
    
    VAR_OUTPUT //объявление выходных переменных
        udiMaxI, udiMinI : UDINT;
    END_VAR
    
    VAR //объявление локальных переменных
        udiI, udiJ, udiN, udiK : UDINT;
        audiX : ARRAY [1..5] OF UDINT; //Задается диапазон массива и тип данных массива
    END_VAR
    
    //область кода
    //объявление массива
    audiX[1] := udiX1;
    audiX[2] := udiX2;
    audiX[3] := udiX3;
    audiX[4] := udiX4;
    audiX[5] := udiX5;
    udiN := 5; // задается кол-во чисел для сортировки (размер массива)
    
    FOR udiI := 1 TO udiN-1 DO
        FOR udiJ := 1 TO udiN-udiI DO
            IF audiX[udiJ] > audiX[udiJ+1] THEN
                udiK := audiX[udiJ];
                audiX[udiJ] := audiX[udiJ+1];
                audiX[udiJ+1] := udiK;
            END_IF;
        END_FOR;   
    END_FOR;

    udiMaxI := audiX[udiN]; //выводится последнее (максимальное) число массива
    udiMinI := audiX[1]; //выводится первое (минимальное) число массива

END_FUNCTION_BLOCK
```

Переменная **udiI** называется итератором (счетчиком) цикла. Эта переменная должна принадлежать целочисленному знаковому типу (**UDINT**). После каждого выполнения тела цикла происходит изменение значения итератора – по умолчанию на **+1**. Пользователь может сам задать «шаг» итератора с помощью вложенного оператора **BY**. После этого сразу происходит переход к следующей итерации – то есть весь цикл выполняется «от начала и до конца». Структура будет выглядеть следующим образом:

```
// udiI будет принимать значения 1, 4, 7, 10 и т.д.
FOR udiI := 1 TO udiN-1 BY 3 DO
    .. // код цикла
END_FOR
```

Итератор (счетчик) цикла, его начальное и конечное значение, а также приращение являются целочисленными. Они вычисляются до входа в цикл и изменение значений переменных, входящих в любое из этих выражений, не приведет к изменению числа итераций.

Досрочно выйти из цикла можно при помощи оператора **EXIT**. Пример структуры:

```
FOR udiI := 1 TO udiN-1 DO
    IF audiX[2] > 100 THEN
        EXIT;
    ELSE
        .. // код цикла
    END_IF
END_FOR
```

Пропустить шаг цикла можно при помощи оператора **CONTINUE**.

```
FOR udiI := 1 TO udiN-1 DO
    IF udiI = 3 THEN
        CONTINUE;
    ELSE
        .. // код цикла
        END_IF
END_FOR
```

<a id="topic-122480"></a>

#### Цикл WHILE

Оператор **WHILE** используется для создания цикла с заранее неизвестным числом итераций. Завершение цикла произойдет, если проверяемое условие вернет **FALSE**. При этом проверка условия выполняется ДО выполнения выражения (цикл с предусловием). Таким образом, если условие сразу возвращает **FALSE**, то цикл не выполнится ни разу.

Внутри цикла могут использоваться операторы **IF** и **CASE**, а также другие операторы цикла.

Пример конструкции:

```
WHILE rVar < 100 DO
    rVar := rVar + 1;
END_WHILE
```

Результатом выполнения данного цикла (с начальным значением переменной **rVar** := 10) будет число 100.

Досрочно выйти из цикла можно при помощи оператора **EXIT**.

Пропустить шаг цикла можно при помощи оператора **CONTINUE**.

<a id="topic-122481"></a>

#### Цикл REPEAT UNTIL

Оператор **REPEAT** используется для создания цикла с заранее неизвестным числом итераций. Завершение цикла произойдет, если проверяемое условие вернет **TRUE**. При этом проверка условия выполняется ПОСЛЕ выполнения выражения (цикл с постусловием). Таким образом, если условие сразу возвращает **TRUE**, то цикл выполнится один раз.

Внутри цикла могут использоваться операторы **IF** и **CASE**, а также другие операторы цикла.

Пример конструкции:

```
REPEAT            
    IF rVar > 100 THEN
        EXIT;
    END_IF;           
    rVar := rVar + 1;            
UNTIL rVar > 180        
END_REPEAT;
```

Результатом выполнения данного цикла (с начальным значением переменной **rVar** := 10) будет число 101.

Для досрочного выхода из цикла можно использовать оператор **EXIT**.

Пропустить шаг цикла можно при помощи оператора **CONTINUE**.

<a id="topic-122482"></a>

### Системные функции

В редакторе ST поддержаны системные функции:

- [функции работы с датой и временем](#topic-122483);
- [математические функции](#topic-122488);
- [логарифмические функции](#topic-122495);
- [тригонометрические функции](#topic-122499).

<a id="topic-122483"></a>

#### Функции работы с датой и временем

- [функция GET_TIME](#topic-122484);
- [функция GET_DATE_TIME](#topic-122485);
- [функция SYS.COMPARE_DATE_TIME](#topic-122486);
- [функция SYS.IS_LEAP_YEAR](#topic-122487).

<a id="topic-122484"></a>

##### Функция GET_TIME

Функция **GET_TIME** возвращает значение типа TIME (4 байта), содержащее время, прошедшее с момента последнего включения прибора, в миллисекундах.

**Пример**

```
VAR
    Time_1 : TIME := T#0ms;
    Time_2 : TIME := T#0ms;
    Q :      BOOL := FALSE;
END_VAR

IF Time_1 = T#0ms THEN
   Time_1 := GET_TIME();
END_IF

Time_2 := GET_TIME();

IF (Time_2 - Time_1) >= T#1000ms THEN
    Q      := NOT Q;
    Time_1 := T#0ms;
    Time_2 := T#0ms;
END_IF
```

<a id="topic-122485"></a>

##### Функция GET_DATE_TIME

**Функция GET_DATE_TIME** возвращает значение тип DT (4 байта), содержащее данные часов реального времени, в секундах с 00:00:00 1.01.2000 г., с учетом часового пояса, установленного в приборе.

**Пример**

```
VAR
    Ton_UDINT : UDINT;
    Ton_DT : DT;
END_VAR

Ton_DT := GET_DATE_TIME();

Ton_UDINT := DT_TO_UDINT(Ton_DT);
```

<a id="topic-122486"></a>

##### Функция SYS.COMPARE_DATE_TIME

**Функция SYS.COMPARE_DATE_TIME** сравнивает два значения UDINT, поданных на вход по заданной маске даты/времени и возвращает значение типа UDINT, которое приравнивается к:

- 1 – значение 1 больше значения 2;
- 2 – значение 1 меньше значения 2;
- 0 – значение 1 равно значению 2.

Сравнение происходит по количеству секунд, начиная с 00:00:00 01.01.2000

**Пример**

```
FUNCTION udiCompare: UDINT;
    
    VAR_INPUT
        udiValue1:  UDINT; //значение 1
    END_VAR
    
    VAR
        udiValue2 : UDINT; //значение 2
        udiMask :   UDINT := 63; //маска даты/времени
    END_VAR
    
    udiValue2  := DT_TO_UDINT (GET_DATE_TIME ());
    udiCompare := SYS.COMPARE_DATE_TIME (udiValue1, udiValue2, udiMask);

END_FUNCTION
```

Маска = 63 (0b111111) – используются все разряды:

    0 бит – если 1, то используются секунды;

    1 бит – если 1, то используются минуты;

    2 бит – если 1, то используются часы;

    3 бит – если 1, то используются дни;

    4 бит – если 1, то используются месяцы;

    5 бит – если 1, то используются годы.

<a id="topic-122487"></a>

##### SYS.IS_LEAP_YEAR function

The **SYS.IS_LEAP_YEAR** function returns a BOOL value containing data on whether the UDINT number given as an input corresponds to a leap year (1 - leap year, 0 - not).

**Example**

```
FUNCTION xLeapYear: BOOL; //function name and output data type
    
    VAR_INPUT //declaration of input variables
        udiYear : UDINT; //year being checked
    END_VAR
    
    xLeapYear := SYS.IS_LEAP_YEAR (udiYear);
    
END_FUNCTION
```

<a id="topic-122488"></a>

#### Математические функции

- [математические константы](#topic-122489);
- [MIN/FMIN](#topic-122490);
- [MAX/FMAX](#topic-122491);
- [SQRT](#topic-122492);
- [EXP](#topic-122493);
- [FACT](#topic-122494).

<a id="topic-122489"></a>

##### Математические константы (CONST.\*)

| Константа | Значение | Назначение |
| --- | --- | --- |
| CONST.PI | 3.1415927 | Число Пи (π) |
| CONST.E | 2.7182817 | Число Эйлера (е) |
| CONST.POS_INF | + ∞ | Положительная бесконечность |
| CONST.NEG_INF | – ∞ | Отрицательная бесконечность |

<a id="topic-122490"></a>

##### MIN/FMIN

**Функции MIN/FMIN** — возвращают наименьшие значения из двух входных переменных.

Входные переменные и возвращаемое значение для функции:

- **MIN** — для типа UDINT (оба аргумента и результат);
- **FMIN** — для типа REAL (оба аргумента и результат).

**Пример 1**

```
VAR
    Var_1: UDINT;
    Var_2: UDINT := 7;
    Var_3: UDINT := 5;
END_VAR
Var_1 := SYS.MIN(Var_2, Var_3); // возвращаемое значение 5
```

**Пример 2**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 7.1;
    Var_3: REAL := 8.2;
END_VAR
Var_1 := SYS.FMIN(Var_2, Var_3); // возвращаемое значение 7.1
```

<a id="topic-122491"></a>

##### MAX/FMAX

**Функции MAX/FMAX** — возвращают наибольшие значения из двух входных переменных.

Входные переменные и возвращаемое значение для функции:

- **MAX** — для типа UDINT (оба аргумента и результат);
- **FMAX** — для типа REAL (оба аргумента и результат).

**Пример 1**

```
VAR
    Var_1: UDINT;
    Var_2: UDINT := 7;
    Var_3: UDINT := 8;
END_VAR
Var_1 := SYS.MAX(Var_2, Var_3); // возвращаемое значение 8
```

**Пример 2**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 7.5;
    Var_3: REAL := 5.2;
END_VAR
Var_1 := SYS.FMAX(Var_2, Var_3); // возвращаемое значение 7.5
```

<a id="topic-122492"></a>

##### SQRT

**Функция SQRT** - возвращает квадратный корень входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 4.0;
END_VAR
Var_1 := SYS.SQRT(Var_2); // возвращаемое значение 2.0
```

<a id="topic-122493"></a>

##### EXP

**Функция EXP** — возвращает значение экспоненты, возведенной в степень входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 1.0;
END_VAR
Var_1 := SYS.EXP(Var_2); // возвращаемое значение 2.7182817
```

<a id="topic-122494"></a>

##### FACT

**Функция FACT** — возвращает факториал входного числа. Функция возвращает корректные значения при значении входной переменной, принадлежащем интервалу от 0 до 12. Во всех остальных случаях функция возвращает 0.

Входная переменная и возвращаемое значение типа UDINT.

**Пример**

```
VAR
    Var_1: UDINT;
    Var_2: UDINT := 5;
END_VAR
Var_1 := SYS.FACT(Var_2); // возвращаемое значение 120
```

<a id="topic-122495"></a>

#### Логарифмические функции

- [LOG](#topic-122496);
- [LG](#topic-122497);
- [LN](#topic-122498).

<a id="topic-122496"></a>

##### LOG

**Функция LOG** — возвращает логарифм входного числа с произвольным основанием.

Входная переменная и возвращаемое значение типа REAL.

| Основание логарифма | Число логарифма | Результат |
| --- | --- | --- |
| < 0 | Любое | NaN\* |
| NaN | 1 | 0 |
| + inf\*\* | 0 | NaN |
| + inf | >0 | 0 |
| + inf | + inf | NaN |
| 0 | > 0, ≠ 1 | 0 |
| 0 | 0 | NaN |
| 0 | + inf | NaN |
| 0  | 1 | 0 |
| 1 | Любое | NaN |
| NaN | NaN | NaN |
| > 0, ≠ 1 | > 0 | число |
| > 0, ≠ 1 | 0 | - inf\*\*\* |
| > 0, ≠ 1 | + inf | + inf |

\*NaN (Not-a-Number) — не число;

\*\*+ inf (infinity) — положительная бесконечность;

\*\*\*- inf (infinity) — отрицательная бесконечность.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 2; // основание логарифма
    Var_3: REAL := 8; // число логарифма
END_VAR
Var_1 := SYS.LOG(Var_2, Var_3); // возвращаемое значение 3
```

<a id="topic-122497"></a>

##### LG

**Функция LG** — возвращает десятичный логарифм входного числа.

Входная переменная и возвращаемое значение типа REAL.

| Число логарифма | Результат |
| --- | --- |
| 0 | - inf\* |
| < 0 | NaN\*\* |
| NaN | NaN |
| + inf\*\*\* | + inf |

\*- inf (infinity) — отрицательная бесконечность.

\*\*NaN (Not-a-Number) — не число;

\*\*+ inf (infinity) — положительная бесконечность;

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 10; 
END_VAR
Var_1 := SYS.LG(Var_2); // возвращаемое значение 1
```

<a id="topic-122498"></a>

##### LN

**Функция LN** — возвращает натуральный логарифм входного числа.

Входная переменная и возвращаемое значение типа REAL.

| Число логарифма | Результат |
| --- | --- |
| 0 | - inf\* |
| < 0 | NaN\*\* |
| NaN | NaN |
| + inf\*\*\* | + inf |

\*- inf (infinity) — отрицательная бесконечность.

\*\*NaN (Not-a-Number) — не число;

\*\*+ inf (infinity) — положительная бесконечность;

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 2.718281; 
END_VAR
Var_1 := SYS.LN(Var_2); // возвращаемое значение ~1
```

<a id="topic-122499"></a>

#### Тригонометрические функции

- [SIN](#topic-122500);
- [COS](#topic-122501);
- [TAN](#topic-122502);
- [ASIN](#topic-122503);
- [ACOS](#topic-122504);
- [ATAN](#topic-122505).

<a id="topic-122500"></a>

##### SIN

**Функция SIN** - возвращает значение sin (синуса) входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 1.5708; // в радианах
END_VAR
Var_1 := SYS.SIN(Var_2); // возвращаемое значение 1
```

<a id="topic-122501"></a>

##### COS

**Функция COS** - возвращает значение cos (косинуса) входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 1.0472; // в радианах
END_VAR
Var_1 := SYS.COS(Var_2); // возвращаемое значение 0.49999794
```

<a id="topic-122502"></a>

##### TAN

**Функция TAN** - возвращает значение tan (тангенса) входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 1.3734; // в радианах
END_VAR
Var_1 := SYS.TAN(Var_2); // возвращаемое значение 4.999982
```

<a id="topic-122503"></a>

##### ASIN

**Функция ASIN** - возвращает значение arcsin (арксинуса) входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 0.5;
END_VAR
Var_1 := SYS.ASIN(Var_2); // возвращаемое значение 0.52359825
```

> [!NOTE]
> **Примечание.** Относительная погрешность результата функции составляет 1e-5.

<a id="topic-122504"></a>

##### ACOS

**Функция ACOS** - возвращает значение arccos (арккосинуса) входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 0.5;
END_VAR
Var_1 := SYS.ACOS(Var_2); // возвращаемое значение 1.047198
```

<a id="topic-122505"></a>

##### ATAN

**Функция ATAN** - возвращает значение arctg (арктангенса) входного числа.

Входная переменная и возвращаемое значение типа REAL.

**Пример**

```
VAR
    Var_1: REAL;
    Var_2: REAL := 1.73205; // 3^(1/2)
END_VAR
Var_1 := SYS.ATAN(Var_2); // возвращаемое значение 1.0471973
```

<a id="topic-122506"></a>

### Системные функциональные блоки

В редакторе ST поддержаны системные функциональные блоки:

- [Триггеры](#topic-122507);
- [Таймеры](#topic-122513);
- [Генераторы](#topic-122519);
- [Счетчики](#topic-122521).

Использование системных функциональных блоков в других элементах программы аналогично [использованию пользовательских функциональных блоков](#topic-122460).

Для каждого системного функционального блока редактор предлагает подсказку по его использованию.

![подсказа к сист фб](https://docs.owen.ru/book_img/2379/131734.png)

<a id="topic-122507"></a>

#### Триггеры

- [RS-триггер с приоритетом выключения (SYS.RS)](#topic-122508);

- [SR-триггер с приоритетом включения (SYS.SR)](#topic-122509)

  ;

- [Детектор переднего фронта импульса (SYS.RTRIG)](#topic-122510);

- [Детектор заднего фронта импульса (SYS.FTRIG)](#topic-122511);

- [D-триггер (SYS.DTRIG)](#topic-122512).

<a id="topic-122508"></a>

##### RS-триггер с приоритетом выключения (SYS.RS)

RS-триггер с приоритетом выключения (SYS.RS) используется для переключения с фиксацией состояния во время поступления коротких импульсов на соответствующий вход. На выходе Q появится логическая «1» по фронту сигнала на входе S.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| S | BOOL | Вход SET |
| R | BOOL | Вход RESET |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход триггера |

```
FUNCTION_BLOCK RS_trigger //имя функционального блока

    VAR_INPUT //объявление входных переменных
        R_in : BOOL;
        S_in : BOOL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        RS_1: SYS.RS;
    END_VAR
    
    //область кода

    RS_1(R := R_in, S := S_in, Q => Q_out);
    
END_FUNCTION_BLOCK
```

В случае одновременного поступления сигналов на оба входа приоритетным является сигнал входа R.

<a id="topic-122509"></a>

##### SR-триггер с приоритетом включения (SYS.SR)

SR-триггер с приоритетом включения (SYS.SR) используется для переключения с фиксацией состояния во время поступления коротких импульсов на соответствующий вход. На выходе Q появится логическая «1» по фронту сигнала на входе S.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| S | BOOL | Вход SET |
| R | BOOL | Вход RESET |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход триггера |

```
FUNCTION_BLOCK SR_trigger //имя функционального блока

    VAR_INPUT //объявление входных переменных
        S_in : BOOL;
        R_in : BOOL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        SR_1: SYS.SR;
    END_VAR
    
    //область кода

    SR_1(S := S_in, R := R_in, Q => Q_out);
    
END_FUNCTION_BLOCK
```

В случае одновременного поступления сигналов на оба входа приоритетным является сигнал входа S.

<a id="topic-122510"></a>

##### Детектор переднего фронта импульса (SYS.RTRIG)

Детектор переднего фронта импульса (SYS.RTRIG) используется в случае необходимости иметь реакцию на изменение состояния дискретного входного сигнала. На выходе Q генерируется единичный импульс по переднему фронту входа I.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| I | BOOL | Вход триггера |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход триггера |

```
FUNCTION_BLOCK R_trigger //имя функционального блока

    VAR_INPUT //объявление входных переменных
        RT_in : BOOL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        RT_out : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        RTrig_1: SYS.RTRIG;
    END_VAR
    
    //область кода

    RTrig_1(I := RT_in, Q => RT_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122511"></a>

##### Детектор заднего фронта импульса (SYS.FTRIG)

Детектор заднего фронта импульса (SYS.FTRIG) используется в случае необходимости иметь реакцию на изменение состояния дискретного входного сигнала. На выходе Q генерируется единичный импульс по заднему фронту входа I.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| I | BOOL | Вход триггера |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход триггера |

```
FUNCTION_BLOCK F_trigger //имя функционального блока

    VAR_INPUT //объявление входных переменных
        FT_in : BOOL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        FT_out : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        FTrig_1: SYS.FTRIG;
    END_VAR
    
    //область кода

    FTrig_1(I := FT_in, Q => FT_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122512"></a>

##### D-триггер (SYS.DTRIG)

D-триггер (SYS.DTRIG) используется для формирования импульса включения выхода на интервал времени импульса на входе D, выходной интервал будет синхронизирован с тактовой частотой на входе С.

На выходе Q триггера появится сигнал логической «1» по фронту тактовых импульсов на входе С при наличии сигнала логической «1» на входе D. Возврат выхода Q в сигнал логического «0» произойдет по фронту тактовых импульсов на входе С при наличии сигнала логического «0» на входе D.

Вход S принудительно устанавливает выход Q в состояние логической «1».

Вход R является приоритетным и устанавливает выход Q в состояние логического «0».

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| S | BOOL | Вход SET |
| D | BOOL | Вход триггера |
| C | BOOl | Тактовая частота |
| R | BOOL | Вход RESET |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход триггера |

```
FUNCTION_BLOCK D_trigger //имя функционального блока

    VAR_INPUT //объявление входных переменных
        S_in : BOOL;
        D_in : BOOL;
        C_in : BOOL;
        R_in : BOOL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        DTrig_1: SYS.DTRIG;
    END_VAR
    
    //область кода

    DTrig_1(S := S_in, D := D_in, C := C_in, R := R_in, Q => Q_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122513"></a>

#### Таймеры

- [Импульс включения заданной длительности (SYS.TP)](#topic-122514);
- [Таймер с задержкой включения (SYS.TON)](#topic-122515);
- [Таймер с задержкой отключения (SYS:TOF)](#topic-122516);
- [Интервальный таймер (SYS.CLOCK)](#topic-122517);
- [Интервальный таймер с недельным циклом (SYS:CLOCKWEEK)](#topic-122518).

<a id="topic-122514"></a>

##### Импульс включения заданной длительности (SYS.TP)

Импульс включения заданной длительности (SYS.TP) используется для формирования импульса включения выхода на заданный интервал времени. На выходе Q блока появляется сигнал логической «1» по фронту входного сигнала I. После запуска выход Q не реагирует на изменение значения входного сигнала в течение интервала T<sub>имп</sub>. По истечение интервала T<sub>имп</sub> выходной сигнал сбрасывается в логический «0».

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| I | BOOL | Включение таймера |
| T | TIME | Длительность импульса |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход таймера |

```
FUNCTION_BLOCK TP_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
        I_in : BOOL := FALSE;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        TP_1: SYS.TP;
    END_VAR
    
    //область кода
    TP_1(I := I_in, T := T#1000ms);
    //где ms - миллисекунды, s - секунды, m - минуты, h - часы, d - дни
    Q_out := TP_1.Q;
END_FUNCTION_BLOCK
```

```
FUNCTION_BLOCK TP_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
        I_in : BOOL := FALSE; 
        T_in : UDINT := 5000;//миллисекунд
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        TP_1: SYS.TP;
        T_time: TIME;
    END_VAR
    
    //область кода

    T_time := UDINT_TO_TIME(T_in);
    TP_1(I := I_in, T := T_time, Q => Q_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122515"></a>

##### Таймер с задержкой включения (SYS.TON)

Таймер с задержкой включения (SYS.TON) используется для операции задержки передачи сигнала. На выходе Q таймера появится сигнал логической «1» с задержкой относительно фронта входного сигнала I продолжительностью не менее длительности Ton и выключится по спаду входного сигнала.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| I | BOOL | Запуск таймера (по переднему фронту) |
| T | TIME | Задержка на включение |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход таймера |

```
FUNCTION_BLOCK TON_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
        I_in : BOOL := FALSE;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        TON_1: SYS.TON;
    END_VAR
    
    //область кода

    TON_1(I := I_in, T := T#1000ms);
    //где ms - миллисекунды, s - секунды, m - минуты, h - часы, d - дни
    Q_out := TON_1.Q;

END_FUNCTION_BLOCK
```

```
FUNCTION_BLOCK TON_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
        I_in : BOOL := FALSE; 
        Ton_in : UDINT := 5000;//миллисекунд
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        TON_1: SYS.TON;
        Ton_time: TIME;
    END_VAR
    
    //область кода

    Ton_time := UDINT_TO_TIME(Ton_in);
    TON_1(I := I_in, T := Ton_time, Q => Q_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122516"></a>

##### Таймер с задержкой выключения (SYS.TOF)

Таймер с задержкой отключения (SYS.TOF) используется для задержки отключения выхода. На выходе Q таймера появится сигнал логической «1» по фронту сигнала на входе I, отсчет времени задержки отключения Toff начнется по каждому спаду входного сигнала. После отключения входного сигнала на выходе появится сигнал логического «0» с задержкой Toff.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| I | BOOL | Запуск таймера (по заднему фронту) |
| T | TIME | Задержка на включение |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход таймера |

```
FUNCTION_BLOCK TOF_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
        I_in : BOOL := FALSE;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        TOF_1: SYS.TOF;
    END_VAR
    
    //область кода

    TOF_1(I := I_in, T := T#1000ms);
    //где ms - миллисекунды, s - секунды, m - минуты, h - часы, d - дни
    Q_out := TOF_1.Q;

END_FUNCTION_BLOCK
```

```
FUNCTION_BLOCK TOF_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
        I_in : BOOL := FALSE; 
        Tof_in : UDINT := 5000;//миллисекунд
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        TOF_1: SYS.TOF;
        Tof_time: TIME;
    END_VAR
    
    //область кода

    Tof_time := UDINT_TO_TIME(Tof_in);
    TOF_1(I := I_in, T := Tof_time, Q => Q_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122517"></a>

##### Интервальный таймер (SYS.CLOCK)

Интервальный таймер (SYS.CLOCK) используется для формирования импульса включения выхода Q по часам реального времени. Время включения Ton и отключения Тoff выхода устанавливают в качестве параметров таймера.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Ton | DT | Время включения |
| Toff | DT | Время выключения |
| Mask | UDINT | Выбор используемых величин |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход таймера |

> [!NOTE]
> **Примечание.** Указание переменной Mask необязательно.
>
> Если значение переменной Mask не указано, то по умолчанию блок работает с маской Mask = 63 (0b111111),
>
> Где:
>
> Mask = 63 (0b111111)
>
> 0 бит – если 1, то используются секунды
>
> 1 бит – если 1, то используются минуты
>
> 2 бит – если 1, то используются часы
>
> 3 бит – если 1, то используются дни
>
> 4 бит – если 1, то используются месяцы
>
> 5 бит – если 1, то используются годы

```
FUNCTION_BLOCK CLOCK_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
       I_in : BOOL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        CLOCK_1: SYS.CLOCK;
    END_VAR
    
    //область кода

    CLOCK_1(Ton := DT#2023-09-28-7:20:55, Toff := DT#2023-09-28-12:30:59);

    Q_out := CLOCK_1.Q;

END_FUNCTION_BLOCK
```

<a id="topic-122518"></a>

##### Интервальный таймер с недельным циклом (SYS.CLOCKWEEK)

Интервальный таймер с недельным циклом (SYS.CLOCKWEEK) используется для формирования импульса включения выхода Q по часам реального времени с учетом дней недели. Время включения Ton и отключения Toff выхода Q и дни недели работы устанавливают в качестве параметров таймера.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Ton | DT | Время включения |
| Toff | DT | Время выключения |
| DayOfWeekMask | UDINT | Выбор используемых дней |
| DateTimeMask | UDINT | Выбор используемых величин |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход таймера |

> [!NOTE]
> **Примечание.** Указание переменных DayOfWeekMask и DateTimeMask необязательно.
>
> Если значение переменной DayOfWeekMask не указано, то по умолчанию блок работает с маской DayOfWeekMask = 127 (0b1111111),
>
> Если значение переменной DateTimeMask не указано, то по умолчанию блок работает с маской DateTimeMask = 63 (0b111111),
>
> Где:
>
> DayOfWeekMask = 127 (0b1111111)
>
> 0 бит – если 1, то учитываются понедельники
>
> 1 бит – если 1, то учитываются вторники
>
> 2 бит – если 1, то учитываются среды
>
> 3 бит – если 1, то учитываются четверги
>
> 4 бит – если 1, то учитываются пятницы
>
> 5 бит – если 1, то учитываются субботы
>
> 6 бит – если 1, то учитываются воскресенья
>
>  
>
> DateTimeMask = 63 (0b111111)
>
> 0 бит – если 1, то используются секунды
>
> 1 бит – если 1, то используются минуты
>
> 2 бит – если 1, то используются часы
>
> 3 бит – если 1, то используются дни
>
> 4 бит – если 1, то используются месяцы
>
> 5 бит – если 1, то используются годы

```
FUNCTION_BLOCK CLOCKWEEK_timer //имя функционального блока

    VAR_INPUT //объявление входных переменных
       I_in : BOOL;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        CLOCKWEEK_1: SYS.CLOCKWEEK;
    END_VAR
    
    //область кода

    CLOCKWEEK_1(Ton := DT#2023-09-28-7:20:55, Toff := DT#2023-09-28-12:30:59);
    Q_out := CLOCKWEEK_1.Q;
END_FUNCTION_BLOCK
```

<a id="topic-122519"></a>

#### Генераторы

- [Генератор прямоугольных импульсов (SYS.BLINK)](#topic-122520).

<a id="topic-122520"></a>

##### Генератор прямоугольных импульсов (SYS.BLINK)

Генератор прямоугольных импульсов (SYS.BLINK) используется для формирования прямоугольных импульсов пульсации. На выходе Q генератора формируются импульсы с заданными параметрами длительности включенного (Т<sub>вкл</sub> – сигнал логической «1») и отключенного (Т<sub>откл</sub> – сигнал логического «0») состояния на время действия управляющего сигнала на входе I (сигнал логической «1»).

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| I | BOOL | Разрешение на работу |
| Th | TIME | Длительность логической единицы |
| Tl | TIME | Длительность логического нуля |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Выход генератора |

```
FUNCTION_BLOCK BLINK_generator //имя функционального блока

    VAR_INPUT //объявление входных переменных
       I_in : BOOL := FALSE;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        BLINK_1: SYS.BLINK;
    END_VAR
    
    //область кода

    BLINK_1(I := I_in, Th := T#1000ms, Tl := T#1000ms);
    //где ms - миллисекунды, s - секунды, m - минуты, h - часы, d - дни
    
    Q_out := BLINK_1.Q;

END_FUNCTION_BLOCK
```

```
FUNCTION_BLOCK BLINK_generator //имя функционального блока

    VAR_INPUT //объявление входных переменных
        I_in : BOOL := FALSE; 
        Th_in : UDINT := 5000;//миллисекунд
        Tl_in : UDINT := 5000;//миллисекунд
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR 
        BLINK_1: SYS.BLINK;
        Th_time: TIME;
        Tl_time: TIME;
    END_VAR
    
    //область кода

    Th_time := UDINT_TO_TIME(Th_in);
    Tl_time := UDINT_TO_TIME(Tl_in);
    BLINK_1(I := I_in, Th := Th_time, Tl := Tl_time, Q => Q_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122521"></a>

#### Счетчики

- [Инкрементный счетчик с автосбросом (SYS.CT)](#topic-122522);
- [Универсальный счетчик (SYS.CTN)](#topic-122523);
- [Инкрементный счетчик (SYS.CTU)](#topic-122524).

<a id="topic-122522"></a>

##### Инкрементный счетчик с автосбросом (SYS.CT)

Инкрементный счетчик с автосбросом (SYS.CT) используется для подсчета заданного числа импульсов **N** (вход **N** – уставка числа импульсов). На выходе **Q** счетчика появится импульс сигнала логической «1» с длительностью рабочего цикла прибора (Tцикл), если число приходящих на вход **С** импульсов достигнет установленного значения **N**.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| C | BOOL | Вход счетчика |
| N | UDINT | Уставка счетчика |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Сигнализация достигнутой уставки (длительность один цикл) |

```
FUNCTION_BLOCK CT_counter //имя функционального блока

    VAR_INPUT //объявление входных переменных
        C_in : BOOL;
        N_in : UDINT := 10;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        CT_1: SYS.CT;
    END_VAR
    
    //область кода

    CT_1(C := C_in, N := N_in, Q => Q_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122523"></a>

##### Универсальный счетчик (SYS.CTN)

Универсальный счетчик (SYS.CTN) используется для прямого и обратного счета. Операция «прямой счет» выполняется по переднему фронту импульса на входе прямого счета **U**, что увеличивает значение выходного сигнала **Q**. Импульсы, приходящие на вход **D** («обратный счет»), уменьшают значение выхода **Q**. В случае поступления на вход **R** сигнала логической «1», выход счетчика **Q** устанавливается в значение входа N.

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| U | BOOL | Вход для прямого счета |
| D | BOOL | Вход для обратного счета |
| R | BOOL | Сброс состояния выхода на значение N |
| N | UDINT | Уставка |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | UDINT | Накопительное значение импульсов |

```
FUNCTION_BLOCK CTN_counter //имя функционального блока

    VAR_INPUT //объявление входных переменных
        U_in : BOOL;
        D_in : BOOL;
        R_in : BOOL;
        N_in : UDINT := 10;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : UDINT;
    END_VAR

    VAR //объявление локальных переменных
        CTN_1: SYS.CTN;
    END_VAR
    
    //область кода

    CTN_1(U := U_in, D := D_in, R := R_in, N := N_in, Q => Q_out);
    
END_FUNCTION_BLOCK
```

<a id="topic-122524"></a>

##### Инкрементный счетчик (SYS.CTU)

Инкрементный счетчик (SYS.CTU) используется для подсчета числа импульсов, приходящих на вход **С**. На выходе **Q** счетчика появится импульс сигнала логической «1», если число приходящих на вход импульсов достигнет установленного значения на входе **N** (**N** – уставка).

**Входы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| U | BOOL | Вход для прямого счета |
| R | BOOL | Сброс состояния счетчика в 0 |
| N | UDINT | Уставка |

**Выходы**

| Обозначение | Тип данных | Описание |
| --- | --- | --- |
| Q | BOOL | Сигнализация достигнутой уставки |

```
FUNCTION_BLOCK CTU_counter //имя функционального блока

    VAR_INPUT //объявление входных переменных
        C_in : BOOL;
        R_in : BOOL;
        N_in : UDINT := 10;
    END_VAR

    VAR_OUTPUT //объявление выходных переменных
        Q_out : BOOL;
    END_VAR

    VAR //объявление локальных переменных
        CTU_1: SYS.CTU;
    END_VAR
    
    //область кода

    CTU_1(C := C_in, R := R_in, N := N_in, Q => Q_out);
    
END_FUNCTION_BLOCK
```
