1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Контроллеры Mitsubishi Melsec Q работа с retain переменными

Ответить
Аватара пользователя

Автор темы
grigoriy_altay
здесь недавно
здесь недавно
Сообщения: 29
Зарегистрирован: 08 янв 2016, 23:01
Имя: Чумакин Григорий Сергеевич
Страна: Россия
город/регион: Алтай-Сахалин
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Контроллеры Mitsubishi Melsec Q работа с retain переменными

Сообщение grigoriy_altay »

Добрый день.

Прошу прощения за наверное делитанский вопрос.
Это мой первый проект на этих контроллерах - конкретно на контроллере Q003UDE и среда программирования GX2. И в общем все понятно и не вызывает задруднений - GX2 мне показался очень похожим на CoDeSys2.3.
Но не как не вкурю работу с Retain переменными. Если для битовых переменных почти все понятно - тут есть Latch Relay, то с переменными байтовыми у меня ступор - почему то в контроллерах этой серии нет сохраняемых при снятии питания переменных как класса. Мне не нужно каких то специальных применений - нужно в общем то обычное действие:
Задать начальное значение параметра - ну пусть это будет например уставка скорости 80%, далее заливаю в контроллер и он начинает работать с этим значением уставки, далее я меняю уставку например с панели оператора или программно в самом ПЛК например на 90%- новая уставка сохраняется в этой переменной и после снятия и подачи питания это значение сохраняется.
В общем наверное самая простая задача - и например на ПЛК Сименс S7-1500 или ПЛК160 от Овен, да даже на программируемом реле ПР200 это все делается элементарно - это то с чем я много работал. Но тут...
В общем я пока для себя понял что могу использовать файловые регистры, начальную инициализацию их делать с проверкой наверное какого-то маркера первого включения ПЛК после загрузки проекта - в общем на мой взгляд костыли какие-то.
У меня большие сомнения что я правильно курю мануал - и вероятно есть простое решение.
Возможно кто то может поделиться простым примером или хотя бы намекнет правильно ли я мыслю.
Через неделю у меня появиться резервный ПЛК и на нем я конечно попробую все доступные методы сохранения значений - но пока время есть хочется подготовиться и разобраться в этом.
Приложу на всякий случай настройки распределения памяти для этого контроллера - может натыкаете меня туда лицом ))
С уважением.
Q003UDE.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Andreyit
не первый раз у нас
не первый раз у нас
Сообщения: 347
Зарегистрирован: 06 фев 2020, 16:09
Имя: Андрей
город/регион: Екатеринбург
Поблагодарили: 59 раз

Контроллеры Mitsubishi Melsec Q работа с retain переменными

Сообщение Andreyit »

Но ведь "Latch (power failure latch) range L0 to 8191 (default)
Latch range can be set for B, F, V, T, ST, C, D, and W. (Setting by parameters)"
И вон, у вас есть D - Data register (один байт), а не D - extended data . Задаёте сколько ячеек, от 0 до 10000 будут энергонезависимые и всё.
У FX как и дельты - энергонезависимые начинались с определенного числа. А вы еще и таблицу переменных используете, то подсказать не могу как там (хотя внизу видно, что VAR_RETAIN используется 0).
Аватара пользователя

Автор темы
grigoriy_altay
здесь недавно
здесь недавно
Сообщения: 29
Зарегистрирован: 08 янв 2016, 23:01
Имя: Чумакин Григорий Сергеевич
Страна: Россия
город/регион: Алтай-Сахалин
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Контроллеры Mitsubishi Melsec Q работа с retain переменными

Сообщение grigoriy_altay »

Andreyit день добрый - вот почемуто мне это не попалось на глаза:
Andreyit писал(а): 15 окт 2022, 18:00 Latch range can be set for B, F, V, T, ST, C, D, and W. (Setting by parameters)"
А я решил что только для битовых типа L такое работает.
Все теперь встало на место. Спасибо!
Ну вот насмешил публику.

Тогда остается вопрос по начальной инициализации - если использовать Device Initial Value - то я так понимаю инициализация будет происходить начальными значениями при каждом старте ПЛК. А как сделать чтобы только один раз при загрузке проекта - а далее при последующих включениях уже использовались сохраненные значения.

Ну вот например в кодесис я пишу так:
VAR_GLOBAL RETAIN PERSISTENT
(*for PLC_WEIGHT*)
rScaleInputForceHWmin : REAL:= 0; (*минимум входного сигнала датчика*)
rScaleInputForceHWmax : REAL := 1; (*максимум входного сигнала датчика*)
rScaleOutputForceHWmin : REAL := 0; (*минимум входного сигнала датчика в кг*)
rScaleOutputForceHWmax : REAL := 24473; (*максимум входного сигнала датчика в кг*)
rHWFactor : REAL := 1; (*коэффициент подмешивания сигнала*)

Andreyit
не первый раз у нас
не первый раз у нас
Сообщения: 347
Зарегистрирован: 06 фев 2020, 16:09
Имя: Андрей
город/регион: Екатеринбург
Поблагодарили: 59 раз

Контроллеры Mitsubishi Melsec Q работа с retain переменными

Сообщение Andreyit »

Простейший костыль, в виде условия проверки (сравнения), что число не ушло за границы определенной области, и включение\выключение маркера? (Тогда Device Initial Value вообще нельзя использовать.) Может что-то из системных маркеров есть (кроме SM402)? Их там много больше чем в FX.
И принудительный сброс на заводские все равно должен быть.
Аватара пользователя

Автор темы
grigoriy_altay
здесь недавно
здесь недавно
Сообщения: 29
Зарегистрирован: 08 янв 2016, 23:01
Имя: Чумакин Григорий Сергеевич
Страна: Россия
город/регион: Алтай-Сахалин
Благодарил (а): 4 раза
Поблагодарили: 2 раза

Контроллеры Mitsubishi Melsec Q работа с retain переменными

Сообщение grigoriy_altay »

День добрый всем. Напишу сюда вдруг кому надо будет. Сделал программный модуль инициализации с проверкой переменной защелки что это первая прошивка либо сброшена память защелок. На Q03UDE проверил на реальном контроллере - меня все устраивает. Device Initial Value не использовал - не удобно - ненаглядно, для меня по крайней мере. В общем вот так оставил:
[+]
WHILE Init_Marker = 0 DO
HMI_Setup_PMS_Avaible_Delay :=10;
HMI_Setup_HydrUnit_OFF :=30;
(*PID*)
PID_NumberOfLoops := 4;

Init_Marker := 1 ; (*set marker first initialize *)
END_WHILE;
EI(TRUE);
Ответить

Вернуться в «Mitsubishi»