Документация по программе Fork

ООО «Миконт»

ООО «Миконт»

Версия Fork 1.2.3

1 Журнал

Программа Fork предназначена для работы с журналами контроллеров СМАРТ, МИКОНТ (ООО «МИКОНТ») и БВР.М (АО «ИПФ «СибНА»).

Структура журнала описана в документе «Структура журнала» в подпапке docs программы Fork.

Примечание 1. Для задач теплоучёта и учёта расхода газа меню контроллера «Настройки» находится в меню «Системные настройки».

Примечание 2. Все действия программы логируются. Чтобы открыть папку, где расположены файлы логов, выберите пункт меню «Справка» → «Открыть папку с логами».

1.1 Загрузка журнала

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

1.1.1 Загрузка из файла

Журнал выгружается на флеш-накопитель из главного меню контроллера, пункт «Журнал» → «Выгрузить (USB)».

Современные версии контроллеров создают папку на USB-устройстве вида SMART_Nnnnnn_yymmdd_hhmm, где 5-значное число nnnnn представляет собой заводской номер контроллера (меню контроллера «Настройки» → «О системе» → «Заводской номер»), а yymmdd и hhmm — дату и время выгрузки журнала с контроллера.

В папке находятся 3 файла: системный (основной) журнал (system.dat), суточный журнал (daily.dat) и месячный (monthly.dat).

Журналы с контроллеров предыдущих версий, как правило, называются MIC_nnnn.DAT, где nnnn — номер контроллера.

Выберите пункт меню «Журнал» → «Загрузить журнал из файла…».

Выберите файл журнала и нажмите «Открыть».

1.1.2 Загрузка через последовательный порт

Журнал можно выгрузить через последовательный порт контроллера RS-232 или RS-485.

Контроллер СМАРТ, МИКОНТ:

Контроллер БВР.М:

Выберите пункт меню «Журнал» → «Загрузить журнал через последовательный порт…».

Выберите тип журнала: системный, суточный или месячный.

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

Скорость, чётность, количество бит данных и стоповых бит, а также адрес контроллера и протокол должны совпадать с настройками в самом контроллере (меню «Настройки» → «Сеть», далее либо пункт «rs232», либо «rs485-2»).

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

То же самое справедливо для поля «Количество последовательно допустимых ошибок».

Примечание. Задать все эти параметры по умолчанию можно в настройках.

Если все параметры были указаны верно, то журнал начнёт считываться с контроллера.

В Linux в случае ошибки «Отказано в доступе» («Permission denied») программа предложит попытаться установить права доступа на последовательный порт (скорее всего, потребуется ввести пароль sudo).

Досрочно прекратить считывание журнала можно, выбрав пункт меню «Журнал» → «Остановить загрузку». При этом уже считанные записи будут успешно отображены в таблице.

Загруженный журнал можно сохранить в виде файла, выбрав пункт меню «Журнал» → «Сохранить в виде файла…».

1.2 Работа с журналом

При успешной загрузке журнала будут открыта вкладка «Заголовок» и вкладка «Данные» (если они имеются).

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

После условных обозначений указаны суммарные данные о записях и переменных. В конце перечислены все оперативные переменные журнала с указанием имени и режима сохранения (см. более подробное описание в документе «Структура журнала»).

На вкладке «Данные» находятся отсортированные по номеру записи журнала со значениями сохраняемых переменных.

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

Отображение данных можно скорректировать в «Настройках».

Выбранные данные можно скопировать в буфер обмена.

Журнал можно экспортировать в формат CSV, в качестве разделителя полей будет использоваться точка с запятой. Можно выбрать кодировку Windows-1251 или UTF-8.

Чтобы корректно импортировать данные из файла CSV в Microsoft Excel, выберите в Excel пункт меню «Данные» → «Из текстового/CSV-файла» («Data» → «From Text/CSV»). В открывшемся диалоговом окне можно выбрать кодировку файла и указать в качестве разделителя полей точку с запятой.

Если в программе Fork при экспорте использовались десятичный разделитель и разделитель групп разрядов, отличные от системных, то перед импортом нужно убедиться, что в Microsoft Excel используются те же разделители. Это можно проверить/изменить через меню «Файл» → «Параметры», вкладка «Дополнительно», раздел «Параметры правки», пункт «Использовать системные разделители» («File» → «Options», вкладка «Advanced», раздел «Editing options», пункт «Use system separators»).

В LibreOffice при открытии файла CSV можно сразу указать кодировку и выбрать локаль. В частности, если в качестве локали выбрать «Русский», то для десятичного разделителя будет использоваться запятая, а для разделителя групп разрядов — пробел. Если в качестве локали выбрать «Английский», то для десятичного разделителя будет использоваться точка, а для разделителя групп разрядов — запятая.

Также журнал можно экспортировать в формат HTML.

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

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

Про работу с шаблонами можно прочитать в соответствующем разделе.

А также можно построить графики.

2 База данных

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

Однако, хранение данных за длительный период, а также создание и использование шаблонов возможно лишь при использовании базы данных.

Конфигурация СУБД и базы данных описана в «Настройках».

Чтобы подключиться к базе данных, выберите пункт меню «База данных» → «Подключиться к базе данных».

Примечание. Чтобы открыть папку, где расположена актуальная база данных (для локального варианта расположения базы), выберите пункт меню «База данных» → «Открыть папку с базой данных».

2.1 Иерархия данных

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

Выберите пункт меню «База данных» → «Добавить компанию…».

В открывшемся диалоговом окне введите название и (опционально) описание.

Таким же образом можно добавить подразделение. Выделите компанию и выберите пункт меню «База данных» → «Добавить подразделение…».

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

Элементы дерева данных можно перемещать вверх (), вниз (), а также редактировать ().

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

2.2 Корзина

Откройте меню «База данных» → «Корзина…».

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

Тип объекта обозначен соответствующей пиктограммой в списке.

Порядок сортировки списка может быть изменён щелчком по заголовку таблицы:

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

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

Возможно безвозвратно удалить объект, но только, если при запуске программы Fork был указан ключ --superuser или кратко -s (см. меню «Справка» → «О программе»).

2.3 Импорт журнала в базу данных

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

Для этого выберите пункт меню «База данных» → «Внести загруженные данные в базу».

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

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

Альтернативно можно создать новую запись о контроллере и добавить данные журнала уже в неё.

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

3 Шаблоны

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

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

Откройте меню «Шаблоны» → «Редактировать шаблоны…».

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

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

Чтобы создать шаблон нажмите кнопку «Создать».

Введите название шаблона, его описание, если нужно, и укажите режим записи, для которого создаётся шаблон.

Шаблон можно переименовать (и изменить описание), удалить, а также изменить положение в списке. При удалении шаблон перемещается в корзину.

Откройте шаблон (кнопка «Открыть» или двойной щелчок мыши по названию).

Таблица содержит список переменных журнала, каждая из которых характеризуется набором свойств (столбцы таблицы).

Для каждого журнала существует три специальных переменных:

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

3.1 Свойства переменных

3.1.1 Отображаемая переменная

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

Для этого свойства доступны групповые операции (ячейки выделяются с помощью клавиш Shift и Ctrl; также можно выделить весь столбец, щёлкнув по заголовку). Вызвав контекстное меню по правой кнопке мыши можно отметить/сбросить отображаемость сразу для нескольких переменных. То же можно сделать, использовав сочетание клавиш Ctrl+Пробел.

3.1.2 Вычисляемая переменная

Признак вычисляемой переменной.

3.1.3 Тип

Тип переменной.

Типы для оригинальных переменных (все 32-битные):

Символ Описание
F Вещественное число одинарной точности
U Беззнаковое целое
S Знаковое целое
CS Целая часть составного числа
CF Дробная часть составного числа

Типы для вычисляемых переменных:

Символ Описание
D Вещественное число двойной точности
L Знаковое целое 64 бита
A Автоматически выводимый из формулы

Специальный тип данных:

Символ Описание
DT Дата и время

При импорте журнала в базу данных для переменных типа CS+CF (они всегда идут в связке) создаётся вычисляемая переменная типа D, представляющая собой сумму этих переменных.

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

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

Изменить тип вычисляемой переменной можно по двойному щелчку мыши, по контекстному меню или по нажатию Enter.

3.1.4 Имя

Имена оригинальных переменных неизменяемы.

Жёстких требований к названиям вычисляемых переменных нет. Можно использовать в том числе буквы любого алфавита и некоторые спецсимволы. Изменить название можно, выделив ячейку с именем и нажав F2. Также название можно изменить в окне смены типа переменной.

Имя переменной используется в формулах.

3.1.5 Заголовок

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

3.1.6 Описание

По умолчанию при создании шаблона поле «Описание» скрыто. Его можно включить, отметив соответствующую настройку внизу на панели управления.

3.1.7 Единица измерения

Данное поле дополняет заголовок переменной и может быть отображено рядом с ним. Особенности отображения настраиваются в меню «Журнал» → «Настройки» → «Интерфейс» → «Журнал».

Заполняется в произвольной форме.

3.1.8 Выравнивание

Определяет положение значения ячейки по вертикали и горизонтали.

Значение «Default» на данный момент совпадает с выравниванием «по левому краю/посередине».

Поле поддерживает групповое изменение значений по правой кнопке мыши (ячейки выделяются с помощью клавиш Shift и Ctrl; также можно выделить весь столбец, щёлкнув по заголовку).

3.1.9 Формат

Формат используется для преобразования представления значения переменной. Строка формата во многом соответствует спецификатору преобразования (форматному спецификатору) форматной строки функции printf.

Формат для действительных чисел

Синтаксис
%[flags][width][.precision[.extra]]type
Флаги (flags)

Количество флагов может быть от 0 (без указания флагов) до 4 нижеперечисленных (в любом порядке):

Символ Описание
+ (плюс) Добавляет слева знак + для неотрицательных значений.
⎵ (пробел) Добавляет слева пробел для неотрицательных значений. Флаг игнорируется, если также указан флаг +.
0 (ноль) В случае, когда указана ширина (width), значение дополняется слева нулями, а не пробелами.
Ширина (width)

Задаёт минимальное количество символов для вывода. Значение дополняется слева нулями (если указан флаг 0) или пробелами (по умолчанию).

Точность (precision)

Задаёт количество знаков после запятой.

Специальный формат (extra)

Существует специальный формат, в котором точность рассчитывается так, чтобы суммарное количество цифр до запятой и после было одинаковым. Для этого в качестве precision нужно указать звёздочку (*), а в качестве extra указать это суммарное количество цифр (см. примеры ниже).

Тип (type)

Либо f, либо F. Разница состоит лишь в том, в каком регистре буду отображаться бесконечные и NaN значения (inf, nan для f и INF, NAN для F).

Примеры

Задан разделитель групп разрядов пробел.

Формат Число 24 Число −189 Число 1968
%7.*.5f ⎵24,000 ⎵−189,00 1 968,0
%0+8.*.5f +024,000 -0189,00 +1 968,0

Формат для целых чисел

Синтаксис
%[flags][width]type
Флаги (flags)

Количество флагов может быть от 0 (без указания флагов) до 4 нижеперечисленных (в любом порядке):

Символ Описание
+ (плюс) Добавляет слева знак + для неотрицательных значений.
⎵ (пробел) Добавляет слева пробел для неотрицательных значений. Флаг игнорируется, если также указан флаг +.
0 (ноль) В случае, когда указана ширина (width), значение дополняется слева нулями, а не пробелами.
# (хеш) Для типа x или X (вывод числа в шестнадцатеричной форме) добавляет префикс 0x или 0X соответственно.
Ширина (width)

Задаёт минимальное количество символов для вывода. Значение дополняется слева нулями (если указан флаг 0) или пробелами (по умолчанию).

Тип (type)

Одно из следующих значений:

Символ Описание
d, i Вывод знакового целочисленного значения в десятичном формате.
x, X Вывод знакового целочисленного значения в шестнадцатеричном формате. x использует буквы в нижнем регистре, X — в верхнем.
b Вывод знакового целочисленного значения в двоичном формате.
Примеры

Задан разделитель групп разрядов пробел.

Формат Число 24 Число −189 Число 1968
%+05d +0024 −0189 +1 968
%⎵5d ⎵⎵⎵24 ⎵−0189 ⎵1 968
%#6x ⎵⎵0x18 0xffffffffffffff43 ⎵0x7b0
%04X 0018 ffffffffffffff43 07B0

Формат для булевых чисел

Булевый тип определяется формулой, тип переменной должен быть «A» («Автоматически выводимый из формулы»).

По умолчанию булевые значения отображаются как 0 и 1. Можно изменить это и выводить их в текстовом виде. Для этого в поле «Формат» нужно ввести слово text или просто букву t. Тогда будут выводиться значения false и true.

Для вывода с заглавной буквы (False и True) нужно ввести Text или T.

3.1.10 Ширина

Здесь можно задать ширину столбца в экранных сантиметрах.

Если в меню «Журнал» → «Настройки» → «Интерфейс» → «Журнал» можно отметить пункт, при котором при изменении ширины столбца мышью она автоматически сохраняется в это поле.

3.1.11 Агрегатная функция

Примечание. См. также следующее свойство «Игнорировать нулевые значения».

При использовании шаблона можно агрегировать данные за определённый интервал времени (см. «Применение шаблона и агрегация данных»).

В этом случае для агрегатного значения переменной используется функция агрегации.

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

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

Если отметить опцию «Игнорировать нулевые значения», то, соответственно, при расчёте нулевые значения не будут приниматься во внимание.

Пусто

Применяется в случае, когда используется агрегатная функция по умолчанию, но требуется оставить агрегатную ячейку данной переменной пустой.

Сумма

Значения переменной текущего интервала агрегации суммируются.

Среднее

Рассчитывается среднеарифметическое для текущего интервала агрегации.

Если отмечена опция «Игнорировать нулевые значения», то из числа n вычитается количество нулевых значений в текущем интервале.

Если все значения равны 0, то агрегатное значение также будет равно 0.

Минимум

Определяется минимальное значение для текущего интервала агрегации. Если отмечена опция «Игнорировать нулевые значения», то минимум определяется среди ненулевых значений.

Максимум

Определяется максимальное значение для текущего интервала агрегации. Если отмечена опция «Игнорировать нулевые значения», то максимум определяется среди ненулевых значений.

Отличие ↑

Совпадает с одноимённой функцией в Microsoft Excel.

Рассчитывается разница между первым значением следующего интервала агрегации и первым значением текущего интервала агрегации.

Пример. Интервал агрегации 24 часа.

Дата/время var1 Комментарий
01.01.2023 08:00 2
01.01.2023 09:00 5
01.01.2023 10:00 9
01.01.2023 11 Отличие ↑ (13 − 2)
02.01.2023 08:00 13
02.01.2023 09:00 15
02.01.2023 7 Отличие ↑ (20 − 13)
03.01.2023 08:00 20
03.01.2023 11:00 22
03.01.2023 Отличие ↑ (пусто, так как следующий интервал отсутствует)

Отличие ↓

Совпадает с одноимённой функцией в Microsoft Excel.

Рассчитывается разница между последним значением текущего интервала агрегации и последним значением предыдущего интервала агрегации.

Пример. Интервал агрегации 24 часа.

Дата/время var1 Комментарий
01.01.2023 08:00 2
01.01.2023 09:00 5
01.01.2023 10:00 9
01.01.2023 Отличие ↓ (пусто, так как предыдущий интервал отсутствует)
02.01.2023 08:00 13
02.01.2023 09:00 15
02.01.2023 6 Отличие ↓ (15 − 9)
03.01.2023 08:00 20
03.01.2023 11:00 22
03.01.2023 7 Отличие ↓ (22 − 15)

Первое

Выбирается первое значение текущего интервала агрегации. Если отмечена опция «Игнорировать нулевые значения», то выбирается первое ненулевое значение (или ноль, если ненулевые значения отсутствуют).

Последнее

Выбирается последнее значение текущего интервала агрегации. Если отмечена опция «Игнорировать нулевые значения», то выбирается последнее ненулевое значение (или ноль, если ненулевые значения отсутствуют).

Количество

Подсчитывается количество записей, попадающих в текущий интервал агрегации. Если отмечена опция «Игнорировать нулевые значения», то нулевые значения не участвуют в подсчёте.

Формула

Используется формула, заданная пользователем.

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

В формуле можно использовать только отображаемые переменные (см. свойство «Отображаемая переменная»).

3.1.12 Игнорировать нулевые значения

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

Для этого свойства доступны групповые операции (ячейки выделяются с помощью клавиш Shift и Ctrl; также можно выделить весь столбец, щёлкнув по заголовку). Вызвав контекстное меню по правой кнопке мыши можно отметить/сбросить этот признак сразу для нескольких переменных. То же можно сделать, использовав сочетание клавиш Ctrl+Пробел.

3.1.13 Формула

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

Используется язык программирования JavaScript.

Редактор формул настраивается через меню «Журнал» → «Настройки» → «Интерфейс» → «Редактор формул».

Чтобы использовать значение какой-либо переменной, нужно ввести её название, поставив перед ней знак доллара ($).

Также вставить название переменной можно двойным щелчком по названию переменной в списке.

Пример 1.

// p1 — избыточное давление с датчика в МПа.
// Рассчитываем абсолютное давление.
$p1 + 0.101325

Пример 2.

// Если значение переменной var1 < 0, то выводим 0.
// Если значение переменной var1 > 1, то выводим 1.
// В остальных случаях выводим значение var1.
if ($var1 < 0) {
    0
} else if ($var1 > 1) {
    1
} else {
    $var1
}

Пример 3.

// Расстояние между двумя точками.
Math.sqrt(($x1 - $x2) ** 2 + ($y1 - $y2) ** 2)

Пример 4. Тип переменной должен быть «A» («Автоматически выводимый из формулы»).

// Гипербола.
// Если значение переменной x == 0, то выводим знак бесконечности.
if ($x === 0) {
    "∞"
} else {
    1 / $x
}

Пример 5. Тип переменной должен быть «A» («Автоматически выводимый из формулы»).

// Выводим либо "> 0", либо "≤ 0"
$var1 > 0 ? "> 0" : "≤ 0"

Пример 6. Тип переменной должен быть «A» («Автоматически выводимый из формулы»).

// Значение типа bool.
// Если в поле «Формат» указать «t», то будет выводиться «true» для чётных чисел и «false» для нечётных.
$num % 2 == 0

Пример 7. Если указать тип переменной «L» («Знаковое целое 64 бита»), то будет выведено целое число, иначе будут добавлены 6 нолей после запятой.

// Получаем четырёхзначное значение года.
// Переменная dateTime типа «DT» («Дата и время»).
try {
    $dateTime.getFullYear();
} catch (e) {
    ""; // Для агрегатных значений.
}

Пример 8.

// Вычисление факториала переменной num.
let f = 1;
for (i = 2; i <= $num; ++i)
    f *= i;

f;

3.2 Управление переменными

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

Можно добавить/удалить вычисляемую переменную, переместить любую переменную выше или ниже по списку.

Переместить переменную можно также мышью, перетащив строку за её заголовок с номером.

Доступны операции «Отменить» и «Повторить».

Также можно скрыть неотображаемые переменные.

Про агрегатную функцию по умолчанию написано выше.

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

3.3 Применение шаблона и агрегация данных

Выберите журнал (контроллер) в дереве слева и затем выберите пункт меню «База данных» → «Загрузить все записи из базы данных» или просто щёлкните дважды по названию журнала (контроллера).

Точно так же, как и при открытии журнала через последовательный порт, можно досрочно прекратить загрузку журнала из базы, выбрав пункт меню «Журнал» → «Остановить загрузку».

По умолчанию загружаются все записи выбранного журнала. Можно ограничить набор записей, указав диапазон дат и нажав кнопку «Отфильтровать записи».

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

Теперь для открытого журнала доступны все шаблоны, которые к нему применимы.

Выберите пункт меню «Шаблоны» → «Применить шаблон», а затем щёлкните по названию шаблона, который хотите применить к журналу.

Теперь к таблице данных применён выбранный шаблон.

Примечание. Для таблицы можно выбрать шрифт в меню «Журнал» → «Настройки» → «Интерфейс» → «Шрифты».

Для агрегации данных выберите интервал в комбобоксе «Интервал агрегации».

Можно ввести интвервал вручную, указав число и единицу времени.

Единицу времени можно указывать кратко, как на русском, так и на английском языке, например: 2 мес, 24 months, 5 часов, 2 weeks, 24 мин.

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

На русском На английском
мин, минута, минуты, минут min, minute, minutes
ч, час, часа, часов h, hour, hours
д, день, дня, дней d, day, days
н, неделя, недели, недель w, week, weeks
мес, месяц, месяца, месяцев mon, month, months

Для значений минут < 60 отсчёт агрегации будет начинаться с 00 минут каждого часа. Например, если вы ввели значение 25 минут, то для каждого часа будут следующие интервалы: «00 минут—25 минут», «25 минут—50 минут», «50 минут—00 минут следующего часа».

Для значений минут > 60 они будут округляться до часа в меньшую сторону. Например, значение 100 минут будет преобразовано в 60 минут, значение 125 минут — в 120 минут.

То же самое справедливо для часов. Для значений часов < 24 отсчёт агрегации будет начинаться с 00 часов каждого дня. Например, если вы ввели значение 5 часов, то для каждого дня будут следующие интервалы: «00 часов—05 часов», «05 часов—10 часов», «10 часов—15 часов», «15 часов—20 часов», «20 часов—00 часов следующего дня».

Для значений часов > 24 они будут округляться до суток в меньшую сторону. Например, значение 40 часов будет преобразовано в 24 часа, 50 часов — в 48 часов.

Для значений дней отсчёт агрегации начинается с начала месяца первой записи.

Для значений месяцев отсчёт агрегации начинается с начала года первой записи.

Если в очередном интервале записи отсутствуют, то он не отображается в таблице.

Все интервалы имеют математическое обозначение: «[начало—конец)», то есть конечное значение не включается в интервал. Например, для интервала 24 часа значение «01.01.2023 00:00:00» будет включено в интервал «01.01.2023 00:00:00—02.01.2023 00:00:00», а значение «02.01.2023 00:00:00» — уже в следующий интервал «02.01.2023 00:00:00—03.01.2023 00:00:00».

Примечание. Можно выбрать цвет фона ячеек для агрегатных значений в меню «Журнал» → «Настройки» → «Интерфейс» → «Журнал».

4 Графики

Графики можно строить:

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

Далее необходимо выбрать режим записи и (если применимо) шаблон.

4.1 Временной график

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

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

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

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

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

4.2 График по двум переменным

Для отображения графика по двум переменным, сначала нужно нажать кнопку «Выбрать X» и выбрать из списка переменную, значения которой будут расположены по оси абсцисс. Затем нажать кнопку «Выбрать Y» и выбрать, соответственно, переменную, значения которой будут расположены по оси ординат.

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

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

4.3 Параметры графиков

Для всех графиков доступна опция «Игнорировать нулевые значения», в этом случае при построении графиков все нулевые значения будут игнорироваться.

Пример графика с учётом всех значений:

Пример того же графика без учёта нулевых значений:

Для данных на основе шаблона доступна опция «Агрегатные данные за 24 часа». В этом случае ко всем записям будет применён интервал агрегации 24 часа, и для графиков будут использоваться только агрегатные данные (чуть подробнее в разделе «Применение шаблона и агрегация данных»).

4.4 Настройка графиков

4.4.1 Цвета и линии графиков

По нажатию на кнопку «Цвета и линии графиков» будет открыто диалоговое окно, где для каждой линии графика (в порядке выбора переменных) можно настроить её цвет, толщину и размер точек.

Примечание. Переход к кнопке «Цвета и линии графиков» с помощью клавиатуры, если вы находитесь в списке переменных — Ctrl+Tab.

При нажатии на кнопку «Цвет по умолчанию» для линии будет восстановлен стандартный цвет.

Толщина линии равная 0 ничем не отличается от толщины линии равной 1, кроме как при сохранении графика в pdf-файл.

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

Кроме того, цветовые схемы графиков можно экспортировать и импортировать.

4.4.2 Условные обозначения

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

Их можно убрать, сняв соответствующие отметки.

Кроме того, условные обозначения можно переместить в любой из четырёх углов.

4.4.3 Управление масштабом

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

Пример. До приближения:

После приближения:

Кнопка «Назад» внизу формы поволяет откатиться к предыдущему виду (масштабу).

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

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

Кнопка «100 %» возвращает график к первоначальному виду.

4.5 Сохранение графика в файл

Отображаемый график можно сохранить либо в формат PDF, либо в формат PNG.

Нажмите кнопку «Сохранить график», затем выберите нужный формат в списке «Тип файла» и введите название файла.

5 Настройки

Откройте меню «Журнал» → «Настройки…».

5.1 Интерфейс

5.1.1 Общие параметры

Язык

Задаёт язык интерфейса программы. По умолчанию «Русский», если в операционной системе интерфейс на русском, иначе «English».

Размер иконок

Доступны 5 вариантов: 20x20, 30x30, 40x40, 50x50, 60x60.

Для больших размеров имеет смысл настроить панели инструментов.

Тема

Кроме стандартного отображения пользовательского интерфейса, представлены две кастомизированные темы: светлая и тёмная.

Запрашивать подтверждение закрытия журнала

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

Закрывать диалоговое окно «Шаблоны» при открытии окна редактирования

Можно включить опцию автоматического закрытия диалогового окна со списком шаблонов при открытии формы редактирования выбранного шаблона.

Разделитель целой и дробной части

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

Разделитель групп разрядов

Опять же, вместо системного разделителя групп разрядов (по 3 цифры: тысяча, миллион и т. д.) можно задать пробел или же убрать его.

5.1.2 Журнал

Набор режимов сохранения записей

Режимы сохранения записей менялись с течением времени, поэтому здесь доступна опция для старых (больше не поддерживаемых) контроллеров МИКОНТ-186 и БКТ.М.

Подробнее см. раздел 1.12 документа «Структура журнала» в подпапке docs программы Fork.

Отображать номера переменных (при отсутствии шаблона)

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

Отображать номера записей (при отсутствии шаблона)

При включённом флаге будет отображён столбец с логическим номером записи (см. раздел 1.3 документа «Структура журнала»).

Зафиксировать столбцы «Номер записи», «Дата/время» и «Режим», если они находятся в начале

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

Сохранять ширину столбца при её изменении с помощью мыши

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

Отделить единицу измерения при использовании шаблона

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

Цвет агрегатных ячеек

Можно выбрать цвет фона агрегатных ячеек, отдельно для светлой темы и для тёмной темы.

При экспорте журнала в формат HTML (меню «Журнал» → «Экспортировать в HTML…») этот же цвет будет использован в итоговом HTML-документе.

5.1.3 Шрифты

Кроме шрифта для описания контроллера, остальные шрифты можно сбросить на значения по умолчанию (то есть основной шрифт операционной системы).

Основной шрифт

Шрифт для всех основных элементов приложения, за исключением текста описания контроллера и шрифта таблицы журнала.

Для описания контроллера

При загрузке журнала (как из файла, так и по связи) указанный здесь моноширинный шрифт используется на вкладке «Заголовок» основного окна, а также при выборе журнала/контроллера в дереве слева из базы данных.

Шрифт данных таблицы

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

Шрифт заголовка таблицы

Используется в заголовке основной таблицы.

5.1.4 Редактор формул

Шрифт

Для редактора формул шаблонов можно задать отдельный моноширинный шрифт.

Цветовая схема

Для отдельных элементов редактора формул можно задать цвет. Изначально существуют 4 встроенных цветовых схемы, на основе которых можно создать свою схему.

Схемы можно экспортировать в yaml-файл, а также импортировать из yaml-файла.

Примечание. Переход к следующему элементу управления с помощью клавиатуры, если вы находитесь в редакторе формулы — Ctrl+Tab.

Сохранять положение окна

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

Собственное расположение окна для каждого шаблона

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

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

Здесь можно разбить панель инструментов по умолчанию на несколько панелей и по-разному их настроить.

Сначала нужно выбрать одну из возможных 8 панелей инструментов.

Панель можно расположить сверху, снизу, слева или справа (4 кнопки внизу). Также можно добавить текст к кнопке или же вообще убрать иконку, оставив только текст. Длинные названия можно разбить на две строки.

Затем, выбирая действие в правой колонке, можно добавлять его на выбранную панель (кнопка или двойной щелчок мышью). Можно группировать действия, добавляя разделители (кнопка ).

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

5.2 База данных

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

Для Windows полный путь к базе данных будет %APPDATA%\Micont\Fork\fork.fdb. Значение переменной среды окружения %APPDATA% можно проверить командой echo %APPDATA%.

Для Linux полный путь к базе данных будет $HOME/.local/share/Micont/Fork/fork.fdb. Значение переменной среды окружения $HOME можно проверить командой echo $HOME. Для установки базы данных в Linux нужно запустить скрипт install-database.sh.

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

При нажатии на иконку путь к базе будет восстановлен на стандартный.

В Windows при локальной работе с базой отмечать флаг «Сервер» необязательно.

Если же планируется работать с базой с нескольких рабочих мест, а также при работе в Linux необходимо настроить сервер СУБД Firebird.

Установка СУБД Firebird под Linux описана в файле how-to-install.txt. Для Windows скачать сервер и прочитать про настройку можно на официальном сайте https://firebirdsql.org/en/firebird-3-0/.

Имя сервера

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

Порт

Номер TCP-порта, по умолчанию 3050.

Имя пользователя, пароль и роль

По умолчанию указано имя пользователя SYSDBA, это администратор базы данных. Пароль указывается при установке СУБД Firebird.

В случае произвольной установки (например, zip-пакет в Windows) инициализация пользователя SYSDBA описана в документации на официальном сайте.

Управление пользователями и ролями осуществляется средствами СУБД и/или сторонними программными средствами.

Программа Fork позволяет предоставлять и отзывать права доступа конкретным пользователям базы данных (кнопка «Предоставить права доступа»).

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

Настройки по умолчанию для чтения журнала с контроллера по последовательному порту.

Для типа журнала доступны 3 варианта: системный (основной), суточный и месячный.

Список последовательных портов состоит из тех, что доступны в системе.

Скорость, чётность, количество бит данных и стоповых бит, а также адрес контроллера и протокол должны совпадать с настройками в самом контроллере (меню «Настройки» → «Сеть», далее либо пункт «rs232», либо «rs485-2»).

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

То же самое справедливо для поля «Количество последовательно допустимых ошибок».

Список изменений

Версия 1.2.3

21.12.2023

Версия 1.2.2

24.11.2023

Версия 1.2.1

30.10.2023

Версия 1.2.0

05.10.2023

Версия 1.1.1

12.05.2023

Версия 1.1.0

25.03.2023

Версия 1.0.5

17.02.2023

Версия 1.0.4

26.10.2022

Версия 1.0.3

08.08.2022

Версия 1.0.2

11.05.2022

Версия 1.0.1

18.03.2022

Версия 1.0.0

16.03.2022