Страница 1 из 2

Использование рецептов RW, EM в EasyBuilder

СообщениеДобавлено: 11 июл 2013, 14:52
VanMo
Для создания рецептов используется утилита RecipeEditor, входящая в состав программ EasyBuilder.
С ее помощью можно создать файл данных как для хранения во внутренней памяти панели (в RW-регистрах), так и на внешнем носителе (EM0-EM9).
Во внутреннюю память рецепты загружаются с помощью Project Manager, а на внешние носители записываются файлы с расширением emi.
В проекте EasyBuilder доступ к рецептам осуществляется прямым обращением к памяти панели или к памяти EMI, связанной с внешним файлом.
Ниже приложен архив с файлом рецептов в формате rcp и примером проекта, в котором используются рецепты, загружаемые во внутреннюю память панели.

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 11 июл 2013, 17:43
Сема
Здравствуйте панель оператора MTH6070I, а можете мне подсказать пожалуйста, а как мне сделать чтобы у меня был выпадающий список, и там из этого списка я мог выбрать интересующий меня рецепт. 10 рецептов. Рецепт состоит из 3 компонентов, это вес муки, время и вес сахара, как я могу в три регистра менять интересующие меня рецепты?? Можете мне подсказать. Я не понимаю как макросы эти делать, с чем они связаны?? Как там мне можно расписать рецепты??

И ещё, я не понял как мне пользоваться редактором рецептов?? Можно поподробнее. Как писать, что писать?? Я не понимаю. Потом, как мне эти регистры в панели, связать с контроллером ПЛК100??

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 11 июл 2013, 18:04
Denis
Уважаемый Сема, обратите внимание, в предыдущем посте приложен файл проекта с реализованной Вашей задачей, там есть и макросы, скачайте и изучайте.
Вряд ли мы сможем ответить подробнее, чем пример проекта...

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 12 июл 2013, 09:37
Сема
Я не понимаю, как мне с этим менеджером рецептов работать?? Как адресация идет?? Я пример изучил, но там много непонятного, как он понимает, что ему надо из той группы рецептов брать?? как мне с MODBUS протоколом это связать?? А как вы подписали каждый рецепт??

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 12 июл 2013, 10:59
VanMo
Сема писал(а):Я не понимаю, как мне с этим менеджером рецептов работать?? Как адресация идет?? Я пример изучил, но там много непонятного, как он понимает, что ему надо из той группы рецептов брать?? как мне с MODBUS протоколом это связать??

В менеджере рецептов создаете таблицу такого же формата, как и представленная, с любым количеством записей. Либо, если вам нужно изменить формат, например, добавить полей или увеличить поле имени, то в проекте это нужно учесть - в макросах поменяйте размер записи:
Макрос Init:
Код: Выделить всё
short RecipeSize=13//Размер записи

Макрос ApplyRecipe:
Код: Выделить всё
i=i*13

Длина записи 13 слов(регистров), 10 на название рецепта и по одному на каждый параметр (мука, время, сахар).
Данные таблицы записываются в память панели начиная с регистра RW0.
Записи идут последовательно, как записаны в таблице, первая запись "Хлеб 1" начинается с регистра RW0, а запись "Хлеб 2" с регистра RW13.
Так как объект "Список" может брать только последовательно размещенные записи, в макросе Init есть следующий код:

Код: Выделить всё
//Создадим список названий рецептов
for i=0 to RecipeCount
GetData(Name[0], "Local HMI", RW, 0+i*RecipeSize, 10)
SetData(Name[0], "Local HMI", LW, 101+i*10, 10)
next i

То есть, названия рецептов записываются в память LW последовательно для дальнейшего использования выпадающим списком.
Для выбора конкретной записи рецептов используется индексный регистр, который указывает смещение от регистра RW0.
Так как выпадающий список может записать в регистр только номер выбранного пункта, необходимо выполнить макрос ApplyRecipe, который задает размер смещения в индексном регистре.
Для запуска этого макроса используется кнопка "применить", либо, если необходимо делать это автоматически, используется ПЛК-триггер на запуск макроса, который включается кнопкой "мониторить".
Чтобы связать выбранный рецепт с регистрами ModBus, предлагаю дописать примерно следующий код в макрос ApplyRecipe:
Код: Выделить всё
//Запишем данные выбранного рецепта в регистры модбас
short val[3]//массив значений параметров рецепта
GetData(val[0], "Local HMI", RW, 10+i, 3)// в переменной i содержится смещение; параметры первой записи начинаются с регистра RW10

SetData(val[0], "MODBUS RTU", 4x, 1, 1)//записываем в 1 модбас-регистр количество муки
SetData(val[1], "MODBUS RTU", 4x, 2, 1)//записываем во 2 модбас-регистр время
SetData(val[2], "MODBUS RTU", 4x, 3, 1)//записываем в 3 модбас-регистр количество сахара


Вроде все рассказал, если есть еще вопросы, задавайте.

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 12 июл 2013, 11:22
Сема
А где находится макрос Init?? Там идет индексация регистров?? И как мне вместо ХЛЕБА переименовать в слово сластёна?? То есть получается эти 10 регистров в менеджере рецептов это слово?? Мда вот это жёсткое программирование, не думал, что это многоуровневая интеллектуальная система...,

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

Я код в макросе Init не понял, можно более подробные комментарии?? А в макросе recipe_apply почему берётся регистр LW 9200 откуда берется такой??

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 12 июл 2013, 11:58
VanMo
Сема писал(а):А где находится макрос Init?? Там идет индексация регистров?? И как мне вместо ХЛЕБА переименовать в слово сластёна?? То есть получается эти 10 регистров в менеджере рецептов это слово?? Мда вот это жёсткое программирование, не думал, что это многоуровневая интеллектуальная система...,

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

Макрос Init запускается вместе с запуском панели, эта опция включается в системных настройках. Доступ к макросам через меню инструменты-макросы.
Параметры и названия Вы можете менять как угодно, изменяя память RW. Менеджер рецептов используется только для удобного представления данных, в самой панели нет механизмов работы с рецептами, все напрямую через память.
10 регистров используются для хранения названия рецепта, Вы можете этого не делать и хранить только сами параметры, а в выпадающем списке жестко задать названия.
Сейчас выпадающий список берет названия из памяти: в регистр LW98 записывается выбранный пункт списка после выбора пользователем; в регистр LW99 записывается команда заполнения списка макросом Init после подготовки списка названий; в регистре LW100 количество пунктов; начиная с LW101 идут имена пунктов, по 10 регистров на каждый. Назначения регистров расписаны в настройках самого компонента списка, там же есть ссылка на описание в справке.

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 16 июл 2013, 11:26
Сема
А как мне связать панель оператора с контроллером Modbus, номер ПЛК в настройках - это что имеется ввиду?? Какие должны быть настройки?? Контроллер ПЛК100, что я должен настроить??

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 16 июл 2013, 14:34
VanMo
Сема писал(а):А как мне связать панель оператора с контроллером Modbus, номер ПЛК в настройках - это что имеется ввиду?? Какие должны быть настройки?? Контроллер ПЛК100, что я должен настроить??

Номер ПЛК - это адрес modbus-устройства по-умолчанию. Так же можно задать конкретный адрес в частном случае, подробнее в мануале.
Кроме адреса контроллера, необходимо указать интерфейс связи в поле "ПЛК I/F", к которому Вы подключили ПЛК (RS-232 или RS-485).
И указать настройки порта в поле "COM" (скорость, четность и т.д.). Больше ничего в панели настраивать не нужно.

Re: Использование рецептов в EasyBuilder8000

СообщениеДобавлено: 16 июл 2013, 15:47
Сема
В сетевых настройках вроде все указано верно, а из-за чего ещё не может быть связи между панелью и контроллером??