PDA

Просмотр полной версии : ПЛК210 - Проблема с присвоением в переменную



zoomdom2
07.06.2023, 12:45
Здравствуйте!

Столкнулся с проблемой записи разных значений в одну переменную . Запись значений происходит по условиям , когда включена кнопка на HMI Kinco то срабатывает метка (M1000-M1015) сигнал которой поступает на функц. блок POU_1. Внутри блока по появлению сигнала происходит включение блока MOVE и записи в переменную соответственно , но значения в переменную не записывается. В чем может быть проблема?

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

Архив программы прилагаю,6819868199

1exan
07.06.2023, 12:54
Скорее всего происходит перезапись переменной там где выход с блоков DIV

zoomdom2
07.06.2023, 13:21
Попробовал добавить на них условия включения , эффекта не дало68204

kondor3000
07.06.2023, 15:25
Попробовал добавить на них условия включения , эффекта не дало68204

А почему вы записываете в одну и ту же переменную NOM_MH ? Например включён M102, ей присвоится значение 10.0, тогда всё что ниже, обнулит эту переменную.

zoomdom2
07.06.2023, 15:28
Архив программы

zoomdom2
07.06.2023, 15:41
А почему вы записываете в одну и ту же переменную NOM_MH ?

Если кратко то на панели выбирается определенный момент силы Нм 2.5 или 35 или от 0 до 35 Нм, то есть вариантов ввода много. И значение надо записать в NOM_MH , которое дальше рассчитывается в значение для аналогово выхода. На выходе подключена тормозная муфта.

kondor3000
07.06.2023, 15:48
Если кратко то на панели выбирается определенный момент силы Нм 2.5 или 35 или от 0 до 35 Нм, то есть вариантов ввода много. И значение надо записать в NOM_MH , которое дальше рассчитывается в значение для аналогово выхода. На выходе подключена тормозная муфта.

Тогда вашу программу надо переписать, , так работать не будет.
И почему эта программа, точнее ФБ называется POU у вас? Сделайте ФБ ( функц. блок) и лучше на ST, намного проще получится.
Типа так, для 2 каналов

IF M101 OR M111 THEN NOM_MH:=5.0 ;
END_IF

IF M102 OR M112 THEN NOM_MH:=30.0 ;
END_IF

Если надо, сюда же можно воткнуть и деление, и ещё что то. Например NOM_MH:=5.0/2.0 ;