ikhor
Junior Member / Новичок
Участник № / Member № 8423
отправлено / posted
Добрый день. Есть несколько экранов. Один из экранов это ПИД коэффициенты, подобранные для насосов. Эти коэффициенты могут меняться в течение работы. Необходимо, чтобы эти изменения сохранялись после выключения компьютера. Ранее в версии 6.06 это делалось через Dump. Т. е. Открываем узел RTM на редактирование, вкладка Отчет тревог/Дамп/Параметры, в разделе Синхр/Дамп ставим галочки -- Считывать при старте и -- Сохранять, Задаем имя файла без всяких расширений, выставляем необходимые периоды. На этом с RTM заканчиваем. Далее открываем сам экран с коеффициентами на редактирование, во вкладке Архивация напротив Синхр/Дамп выбираем -- Синхр/Дамп. На этом настройка дампа закончилась. По итогу при запуске RTM в версии 6.10.2 создается файл с указанным именем, но после перезапуска компьютера изменения экрана либо не сохраняются либо не загружаются. Что сделано не верно в моих действиях и что нужно проверить? И какой еще альтернативный вариант сохранения существует.
2) И вопрос по поводу переменной @Sound_File. Звук работает только одну минуту. Пробовал задавать в качестве параметра различные значения как предлагается из документации, но результат не меняется. Звук типа будильника циклично повторяется, но максимум одну минуту. Чтобы звук сработал отправляю 1 в эту переменную, чтобы отключить -1. Нужно, чтобы звук работал непрерывно до тех пор пока оператор не нажмет кнопку Отключение сигнализации.
Сообщения / Posts 11 | Из / From: Украина
| IP / IP: IP адрес / IP address |
1. Дамп рекомендуется использовать для числовых каналов. Если Вам необходимо записывать коэффициенты ПИД-алгоритма (или любой другой параметр, который изменяется редко), то рекомендую использовать запись в файл (атрибуты 128 и 129 канала Call, описание в Справочной Системе - Каналы и системные переменные - Канал класса Call - Атрибуты канала класса Call) После изменения сохраняете значения, а при необходимости - подчитываете ранее сохраненное.
ikhor
Junior Member / Новичок
Участник № / Member № 8423
отправлено / posted
Добрый день. Как вы и рекомендовали по первому вопросу на экране с ПИД коэффициентами, я добавил на экране две кнопки с ГЭ Кнопка, добавил два аргумента - один на чтение, один на запись. Соответственно по нажатию одной кнопки передаю значение "1" в атрибут 128 этого же экрана класса CALL с типом вызова Screen для чтения, и значение "1" в атрибут 129 для записи в файл. Все по записывается и считыватся из файла. Спасибо. Хотел сделать так, чтобы при каждом вводе значения одновременно и передавалась команда на запись. Для этого для каждой кнопки пробовал вторым значением передавать "1" "Прямая передача" в аргумент "Запись в файл", но значение не записывается. Запись произойдет только если два раза нажать на одну и ту же кнопку. Пробовал писать программу на FBD, чтобы один раз в минуту передавалась "1" в 129 атрибут, а остальное время на выходе в программе передается "0". Запись не происходит. В аргументах экрана как были заданные "Значения по умолчанию" так они и остаются. Как сделать так, чтобы после ввода любого коэффициента происходила автоматическая запись значения в файл, не прибегая к дополнительным кнопкам. И второе, как чтобы при загрузке проекта подгружались уже сохраненные значения коеффициентов опять же без использования дополнительной кнопки.
Сообщения / Posts 11 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Проверили настройку DUMP у канала Call. Он прекрасно сохраняет и восстанавливает данные из дампа.
У каналы вызова шаблона программы установите флаг Дамп. У шаблона экрана аргументам, которые задают коэффициенты, задайте направление in|out. Привязки со стороны аргументов экрана.
ikhor
Junior Member / Новичок
Участник № / Member № 8423
отправлено / posted
Добрый день. Когда к аргументам канала Call я привязал числовые каналы, например, типа Float, и в настройках числового канала выставил флаг DUMP, то все замечательно сохраняется и считывается на старте проекта. Но у меня все аргументы канала Call далее передаются в программу на языке FBD, т. е. аргументы программы FBD, управляющей насосом, привязаны к аргументам экрана с коэффициентами для всех насосов. В настройках канала Call c типом вызова Screen я выставлял Синхр/Дамп и просто Дамп. И менял время сохранения в настройках узла RTM, и к файлу добавлял расширение .dmp и без него. Сохранение в файл дампа происходит если к аргументу канала Call c типом вызова Screen привязан числовой канал. Направление у аргументов IN/OUT тоже выставлял. Как сделать, чтобы аргументы канала, не привязанные к числовым каналам, и передающиеся в программу FBD (аргументы прогаммы привязаны к аргументам экрана), сохранялись в файле DUMP без дополнительных нажатий на кнопки и считывались при старте проекта тоже без всяких лишних нажатий на кнопку? Версия Trace Mode 6.10.2. Может я вам вышлю свой небольшой проект и вы на нем все попробуете, может я допускаю какие-то ошибки? Спасибо.
Сообщения / Posts 11 | Из / From: Украина
| IP / IP: IP адрес / IP address |
ikhor
Junior Member / Новичок
Участник № / Member № 8423
отправлено / posted
Сделал простой тестовый проект. Два Call.Screen. В первом Call.Screen есть два аргумента -- Значение_1 и Значение_2, во втором Call.Screen есть один аргумент -- Сумма. Сделал Call.Program на FBD -- сумма двух значений, в нем соответственно 3 аргумента -- Значение_1 (INPUT), Значение_2 (INPUT), Сумма (OUTPUT). Соответственно из первого экрана мы значения передаем в программу, а из программы результат отправляем во второй экран. Далее в редакторе RTM задал имя файла, поставил флаги Считывать при старте и Сохранять. В редакторе программы указал дамп. Перепробовал все варианты с направлениями аргументов (INPUT/OUTPUT) в Call.Program, затем в Call.Screen, затем микс обоих, выставлял также дамп и у Call.Program и у Call.Screen. По итогу в папке RTM файл с названием дамп создается, а сохраняются туда значения аргументов или они не считываются из него не понятно. Размер файла дампа не изменяется совсем. Подскажите что не так?
Сообщения / Posts 11 | Из / From: Украина
| IP / IP: IP адрес / IP address |
ikhor
Junior Member / Новичок
Участник № / Member № 8423
отправлено / posted
Патчи для среды IDE из личного кабинета я скачал и установил. Если я правильно понял, то заменяется 5 файлов для IDE: 1) Patch0013_6102_gr_ocx -> gr_ocx.dll 2) patch_for_ide_doc -> tmre.dll, tmrg.dll, tmrwb.dll 3) patch_for_IDE_pro_EV -> dllRTM32.dll
Это я уже пишу, чтобы откинуть вопрос не соответствия моей и вашей версии. Если я установил не все патчи или не те, поправьте меня? И еще может есть какие-то хитрые настройки в IDE, может галочку какую-то надо установить, чтобы у меня аргументы сохранялись в файл дампа и при старте считывались? Спасибо
Сообщения / Posts 11 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Учитывайте, что вместе с релизом 6.10.2 обязательна установка патчей. Один патч с инструкцией поставляется вместе с дистрибутивом, второй, Patch0012… – необходимо на сайте http://www.adastra.ru/ скачать из личного кабинета из раздела Дополнительные материалы (внизу на странице, где скачиваете релиз) или установить с дополнительного CD-диска, если он вложен в коробку с ПО. Исправляет возможные проблемы с передачей строк ОТ на консоль. 1. Патч для IDE, который идет вместе с дистрибутивом - patch_for_IDE_pro_EV.zip в нем библиотека dllRTM32.dll от 17.02.2017. 2. Патч для IDE, который идет вместе с дистрибутивом - patch_for_ide_doc.zip в нем библиотеки tmre.dll, tmrg.dll, tmrwb.dll от 21.02.2017. Данный патч исправляет возможную ошибку с выводом некоторых элементов в документ. 3. Patch0013 влияет только на activeX, если в Вашем проекте эта функция не используется, ставить его не обязательно. Если ПО приобреталось в этом году, то все эти патчи должны быть собраны на диске.
Дамп надо выставить только у канала вызова шаблона программы. По описанию сделали простой примерчик. Выслали его Вам на почту, указанную при регистрации на форуме.
Сообщения / Posts 17301 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ikhor
Junior Member / Новичок
Участник № / Member № 8423
отправлено / posted
Добрый вечер. Спасибо большое за пример и помощь. Сначала я отпишусь немного не по теме, по поводу звука, может кому-то пригодиться как выставить длительность проигрывания файла: Источники/Приемники -> Диагностика и сервис -> Системные -> создаем две переменные: 1) @Sound_File -> Параметр = 3, Тип = Input; в эту переменную отправляем "0" или "1", чтобы проиграть файл (тип файла wav); 2) @RTM_parameter -> Параметр = Max_Sound_Length, Тип = Input; сюда отправляем время проигрывания файла в секундах (например, 300 сек). Таким образом я решил проблему с длительностью проигрывания файла циклически. Теперь по поводу DUMP: Решением вопроса оказывается было следующее 1) DUMP нужно было выставить у канала Call.Program; 2) А все привязки к аргументам Call.Program нужно было делать со стороны аргументов Call.Screen. Это я пишу, чтобы если кто-то столкнется с подобным, то уже нашел ответ для себя. И просьба к другим участникам форума: если вы задавали вопросы на какую-то тему и вам помогли или нашли решение проблемы, то отпишитесь, пожалуйста, какое решение было найдено. Потому как читаю топик, а после того как высылают пример с техподдержки далее как обрыв то ли найдено решение, то ли нет и какое не понятно. Теперь хочу вернуться снова к теме DUMP: открываю Руководство пользователя Быстрый старт, Москва 2010 (шло в комплекте с IDE средой). Страница 33 "Привязка аргументов программы", далее листаем стр.35 и смотрим скрин с привязками в окне программы. Все привязки сделаны именно в окне программы, что наверное является более правильным, так как перед глазами один экран программы Call.Program и меньше вероятность сделать ошибку бегая по аргументам других экранов Call.Screen. И чтобы заработал DUMP у Call.Screen его нужно выставить у Call.Program. Логично было бы, чтобы у какого канала нужен DUMP, там и поставить этот флаг, и напротив каждого аргумента канала если бы была возможность выставить этот флаг -- это было бы идеально. Я ситуацию вижу как пользователь Trace Mode, не как программист. Объясните, пожалуйста, сам механизм работы DUMP в плане его применения. Далее. У меня проект, в котором около 20-ти Call.Program, они получают входные данные с различных экранов, привязки я в них делал как указано в Быстром старте (скрин стр. 35), с одного Call.Screen данные передаются в несколько Call.Program, с другого Call.Screen данные передаются тоже в несколько Call.Program. Получается чтобы мне сделать DUMP аргументов двух Call.Screen, данные из которых передаются в несколько Call.Program: 1) надо в этих двух Call.Screen в аргументах сделать привязки к аргументам Call.Program (старые привязки у Call.Program при этом удалить); 2) и у всех Call.Program, на которые ссылаются два Call.Screen, выставить флаг DUMP. Я правильно мыслю или нет? Или сам механизм разработки другой и я делаю ошибку уже на этом этапе? Объясните, пожалуйста. Спасибо.
Сообщения / Posts 11 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Добрый день. Привязки можно делать как со стороны Call.Screen (канал вызова шаблона экрана), так и со стороны Call.Program (канал вызова шаблона программы).
Дамп, как описано выше, рекомендуется делать для числовых каналов.
Если требуется сделать дамп, для Call (с любым типом вызова), то аргументы этого канала должны быть без привязок. При Вашем примере, привязки необходимо делать на стороне Call.Screen (экран), а в Call.Program (программа) с флагом dump привязок не должно быть. Тогда при повторном запуске аргументы программы подчитают данные из дампа и передадут уже на экраны.
Сообщения / Posts 17301 | Из / From: Россия
| IP / IP: IP адрес / IP address |
ikhor
Junior Member / Новичок
Участник № / Member № 8423