База рецептов: что это такое и как этим пользоваться?

Здесь мы публикуем ответы на ваши наиболее частые вопросы по продукции Weintek

Модераторы: kiv, 8bit, VanMo

База рецептов: что это такое и как этим пользоваться?

Сообщение 8bit » 24 июл 2020, 17:31

База рецептов доступна для всех моделей серии , кроме cMT-G01, cMT-G02, cMT-G03, cMT-G04, cMT-CTRL01.

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

В проекте представлено два набора рецептов для двух различных (вымышленных) процессов: термообработка (thermo) и электрические испытания (electric)

В проекте используется два экрана:
1) предназначен для работы с базой рецептов (просмотр, добавление, удаление, обновления) рецептов и записи конкретного рецепты в переменные устройства
база_рецептов_04.png
база_рецептов_04.png (61.62 КБ) Просмотров: 14759


2) предназначен для импорта/экспорта самой базы данных рецептов для сохранения и редактирования на ПК.
база_рецептов_21.png
база_рецептов_21.png (90.12 КБ) Просмотров: 14759


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

В блоке следующие элементы:
1) № выбранной строки - номер текущей строки в таблице рецепта (нумерация с 0)
2) Количество строк в рецепте - общее количество строк в рецепте (полезный индикатор, потому что таблица не отображает этого)
3) Кнопки команд: Добавить (добавляет новую строку в таблице рецепта), Удалить (удаляет текущую строку в таблице), Удалить все (удаляет все строки в таблице), Обновить (необходимо нажимать после каждой операции по удалению или добавлению для переноса изменений из таблицы в базу рецептов)
4) Результат - результат выполнения операций с таблицей (удачно или нет)
5) Значения соответствующих полей в текущей строке таблицы

база_рецептов_05.png
база_рецептов_05.png (60.38 КБ) Просмотров: 14759


В результате выполнения операций со строками могут быть ошибки. Список ошибок приведен на рисунке ниже
база_рецептов_15_errors.png
база_рецептов_15_errors.png (19.93 КБ) Просмотров: 14759


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

Для предотвращения свободного редактирования значений текущего рецепта предусмотрена блокировка - кнопка со значком замка.
база_рецептов_09.png
база_рецептов_09.png (120.48 КБ) Просмотров: 14759


Для отображения результат операций со строками в таблице использован объект "Список опций"
база_рецептов_16_options_list.png
база_рецептов_16_options_list.png (21.98 КБ) Просмотров: 14759


Во втором блоке отображаются значения уставок в устройстве (для простоты в данном случае это регистры HMI, но могут быть сразу теги ПЛК).
Кнопка Копировать в панель - вызывает макрос, который копирует значения полей текущей строки в соответствующие регистры панели.
база_рецептов_11.png
база_рецептов_11.png (127.86 КБ) Просмотров: 14759

база_рецептов_26_макросы.png
база_рецептов_26_макросы.png (4.63 КБ) Просмотров: 14759

база_рецептов_20_copy_recipes.png
база_рецептов_20_copy_recipes.png (7.63 КБ) Просмотров: 14759


Код: Выделить всё
macro_command main()

short temper1, temper2
unsigned short time
float press1, press2
float lw200

lw200 = 123.456
SetData(lw200, "Local HMI", LW, 200, 1)

GetData(temper1, "Local HMI", RECIPE, "thermo.temper1")
SetData(temper1, "Local HMI", LW, 0, 1)

GetData(temper2, "Local HMI", RECIPE, "thermo.temper2")
SetData(temper2, "Local HMI", LW, 1, 1)

GetData(press1, "Local HMI", RECIPE, "thermo.press1")
SetData(press1, "Local HMI", LW, 2, 1)

GetData(press2, "Local HMI", RECIPE, "thermo.press2")
SetData(press2, "Local HMI", LW, 4, 1)

GetData(time, "Local HMI", RECIPE, "thermo.time")
SetData(time, "Local HMI", LW, 6, 1)



end macro_command


В третьем блоке сами таблицы рецептов.

В проекте даны текстовые метки регистрам, используемых для получения имен файла, папки и полного пути к файлу экспорта базы рецептов.
база_рецептов_14.png
база_рецептов_14.png (38.91 КБ) Просмотров: 14759


В база данных рецептов создаем две таблицы : thermo и electric .
база_рецептов_17_база.png
база_рецептов_17_база.png (20.29 КБ) Просмотров: 14759

база_рецептов_18_база.png
база_рецептов_18_база.png (11.69 КБ) Просмотров: 14759


Для отображения таблиц рецепта в окно необходимо добавить объект "Просмотрщик рецептов"
база_рецептов_19_таблица рецептов.png
база_рецептов_19_таблица рецептов.png (17.79 КБ) Просмотров: 14759


Чтобы работали кнопки импорта/экспорта базы рецептов в текстовый файл *.csv необходимо сконфигурировать соответствующие регистры
база_рецептов_12.png
база_рецептов_12.png (34.74 КБ) Просмотров: 14759


Для выбора папки для экспортируемого файла на носителе (в данном случае SD карте) в проекте использован объект Проводник
база_рецептов_13.png
база_рецептов_13.png (19.97 КБ) Просмотров: 14759


Макрос генерирующий имя файла экспорта вызывается циклически пока открыта окно "Импорт/экспорт базы рецептов"
Код: Выделить всё

macro_command main()

// объявляем переменные
short iSecond, iMinute, iHour, iDay, iMonth, iYear
char sSecond[2], sMinute[2], sHour[2], sDay[2], sMonth[2], sYear[4]

char filename[100]  // имя файла в виде thermo_2020-05-28_18-55-34.csv (40 символов)
char foldername[100]
char fullpath[100]


// считываем регистры
GetData(iSecond, "Local HMI", LW, 9017, 1)
GetData(iMinute, "Local HMI", LW, 9018, 1)
GetData(iHour, "Local HMI", LW, 9019, 1)
GetData(iDay, "Local HMI", LW, 9020, 1)
GetData(iMonth, "Local HMI", LW, 9021, 1)
GetData(iYear, "Local HMI", LW, 9022, 1)

StringGet(foldername[0], "Local HMI", "receipe_foldername", 40)


// конвертируем числа в текст
DEC2ASCII(iSecond, sSecond[0], 2)
DEC2ASCII(iMinute, sMinute[0], 2)
DEC2ASCII(iHour, sHour[0], 2)
DEC2ASCII(iDay, sDay[0], 2)
DEC2ASCII(iMonth, sMonth[0], 2)
DEC2ASCII(iYear, sYear[0], 4)

// склеиваем имя файла
StringCat("thermo_", filename[0])    // thermo_
StringCat(sYear[0], filename[0])   // thermo_2020
StringCat("-", filename[0])       // thermo_2020-

StringCat(sMonth[0], filename[0])   // thermo_2020-05
StringCat("-", filename[0])       // thermo_2020-05-

StringCat(sDay[0], filename[0])      // thermo_2020-05-28
StringCat("_", filename[0])       // thermo_2020-05-28_

StringCat(sHour[0], filename[0])   // thermo_2020-05-28_18
StringCat("-", filename[0])       // thermo_2020-05-28_18-

StringCat(sMinute[0], filename[0])   // thermo_2020-05-28_18-55
StringCat("-", filename[0])       // thermo_2020-05-28_18-55-

StringCat(sSecond[0], filename[0])   // thermo_2020-05-28_18-55-34
StringCat(".csv", filename[0])       // thermo_2020-05-28_18-55-34.csv



StringCat(foldername[0], fullpath[0])   // склеиваем полный путь=имя_папки + имя_файла
StringCat("/", fullpath[0])

StringCat(filename[0], fullpath[0])      // копируем имя файла в полный путь

// записываем значения в регистры
StringSet(foldername[0], "Local HMI", "receipe_foldername", 100)
StringSet(filename[0], "Local HMI", "recipe_filename", 100)
StringSet(fullpath[0], "Local HMI", "receipe_fullpath", 100)

// ощищаем переменну "путь к файлу" для следующего цикла
StringCopy("", filename[0])
StringCopy("", fullpath[0])



end macro_command


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

Для экспорта таблицы в текстовый файл необходимо в проводнике выбрать необходимую папку и нажать соответствующую кнопку экспорта.
база_рецептов_22.png
база_рецептов_22.png (76.31 КБ) Просмотров: 14759


Файлы экспорта отображаются сразу же.
база_рецептов_23.png
база_рецептов_23.png (85.53 КБ) Просмотров: 14759


Забрать их можно подключившись к панели по ftp
база_рецептов_24_ftp.png
база_рецептов_24_ftp.png (7.44 КБ) Просмотров: 14759
база_рецептов_25_ftp.png
база_рецептов_25_ftp.png (6.09 КБ) Просмотров: 14759


Смотрим файл в текстовом редакторе - все верно
база_рецептов_27.png
база_рецептов_27.png (25.97 КБ) Просмотров: 14759


Саму базу рецептов можно взять по ftp в папке recipe и открыть SQLite редактором
база_рецептов_02.png
база_рецептов_02.png (20.17 КБ) Просмотров: 14759


Проект для ознакомления прикреплен.
Вложения
рецепты cMT3090.7z
(8.41 МБ) Скачиваний: 606
база_рецептов_07.png
база_рецептов_07.png (13.16 КБ) Просмотров: 14759
база_рецептов_06.png
база_рецептов_06.png (11.25 КБ) Просмотров: 14759
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1107
Зарегистрирован: 20 апр 2020, 19:07

Re: База рецептов: что это такое и как этим пользоваться?

Сообщение 8bit » 15 фев 2022, 13:45

mik писал(а):В проекте "рецепты cMT3090" используется библиотека rusavto.flbx. Скорее всего, ее отсутствие не влияет на функционал проекта. Но лучше наверное ее выложить сюда.


перезалил файл архивом ccmp, в котором эта библиотека в комплекте
Хороший вопрос содержит половину ответа - A good question contains half the answer
Аватара пользователя
8bit
 
Сообщения: 1107
Зарегистрирован: 20 апр 2020, 19:07


Вернуться в Часто задаваемые вопросы по Weintek (F.A.Q.)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2