Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Modicon M171
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
roman_pxaxaxa
Цитата(freefire78 @ 31.7.2020, 7:55) *
Здравствуйте. При выключении питания 172 контроллер забывает все параметры, которые настраивались в процессе работы. Посоветуйте-как сделать, чтобы он их не забывал?


Здравствуйте, необходимо хранить настраиваемые параметры в EEPROM переменных.
freefire78
Цитата(roman_pxaxaxa @ 31.7.2020, 9:08) *
Здравствуйте, необходимо хранить настраиваемые параметры в EEPROM переменных.

Хорошо. Но тогда возникает проблема с отображением этих переменных на экране. Или я что-то не правильно делаю? Есть окно "EDIT" для ввода значений. Так как я не могу писать в EEPROM напрямую то приходится использовать еще одну переменную, из которой введеное значение будет записываться в еепром. После отключения питания естественно это поле станет пустым. Т.е. конечный пользователь не увидев там ничего будет вбивать какие-то новые значения... Вот я и думаю как это победить... В скаде не проблема вывести два поля- одно для ввода параметра и одно для вывода текущего значения, но HMI самого контроллера ограничена в размерах.
freefire78
После перезагрузки контроллера происходит запись всех сохраненных EEPROM с нулевыми значениями. Хотя вроде написано, что есть защита от записи...
roman_pxaxaxa
Цитата(freefire78 @ 31.7.2020, 8:41) *
Хорошо. Но тогда возникает проблема с отображением этих переменных на экране. Или я что-то не правильно делаю? Есть окно "EDIT" для ввода значений.


А Вы в поле для ввода/вывода (Edit) EEPROM переменной указали параметр "Number of chars" ? Поставьте его с запасом и посмотрите будет работать вывод или нет.

Я вывожу и редактирую EEPROM переменные из HMI контроллера без проблем просто указав в поле "Variable" нужную переменную, никаких проблем нет.
freefire78
Цитата(roman_pxaxaxa @ 31.7.2020, 11:58) *
А Вы в поле для ввода/вывода (Edit) EEPROM переменной указали параметр "Number of chars" ? Поставьте его с запасом и посмотрите будет работать вывод или нет.

Я вывожу и редактирую EEPROM переменные из HMI контроллера без проблем просто указав в поле "Variable" нужную переменную, никаких проблем нет.

Спасибо. Вроде получилось. Я почему-то думал, что нельзя напрямую работать с ними и не попробовал даже dry.gif .
freefire78
Цитата(freefire78 @ 31.7.2020, 12:18) *
Спасибо. Вроде получилось. Я почему-то думал, что нельзя напрямую работать с ними и не попробовал даже dry.gif .

Попробовал по месту. После перезагрузки контроллера все параметры выставляются в 0. Не могу понять в чем причина. Со скады я записываю через функцию sysWriteParUINT в EEPROM, а с панели контроллера, как советовали выше- на прямую.
Andrey N.
Цитата(freefire78 @ 4.8.2020, 12:58) *
Попробовал по месту. После перезагрузки контроллера все параметры выставляются в 0. Не могу понять в чем причина. Со скады я записываю через функцию sysWriteParUINT в EEPROM, а с панели контроллера, как советовали выше- на прямую.

Точно создали переменные во вкладке Configuration-M172-Modbus objects-EEPROM parameters?
roman_pxaxaxa
Цитата(freefire78 @ 4.8.2020, 10:58) *
Попробовал по месту. После перезагрузки контроллера все параметры выставляются в 0. Не могу понять в чем причина. Со скады я записываю через функцию sysWriteParUINT в EEPROM, а с панели контроллера, как советовали выше- на прямую.


Выставляются в 0 только параметры из энергозависимой памяти. Я бы сделал новый проект, сделал EEPROM переменную, добавил бы Edit на экран, связал бы переменную с Editом и залил бы проект на контроллер. Попробуйте заново без связей между энергозависимыми и независимыми переменными.

P.S.
Возможно Вы где-то в коде проекта что-то обнуляете или переназначаете.
kubekaiv
Коллеги, доброго времени суток. На форуме впервые поэтому возможно мои вопросы уже поднимались, но найти не могу. Поставили задачу запрограммировать М172 для приточной вентиляции. Из аналоговых величин - один внутриканальный РТ100 на аналоговом входе ии два аналоговых выхода на задание частоты вращения вентиляторов приточки и вытяжки.
Есть вопросы с которыми без помощи очень сложно разобраться в реализации:
1. Как вывести значение температуры в канале от датчика PT100 на дисплей в градусах, как преобразовать РТ100 в градусы?
2. Как задавать желаемые величины с лицевой панели?
3. Какими блоками раеализовывается задание частоты вращения вращения ЧП с аналогового выхода контроллера по изменению одного входного аналогового значения - датчика РТ100?
Если можно готовые кусочки программ посмотреть было бы великолепно, но если будут просто скриншоты с описанием, думаю тоже разберусь ))
Заранее Огромное спасибо.
ogorsv
Добрый день!

Начните с изучения материалов по ссылке
https://schneider-electric.app.box.com/s/cp...1tdutr7baas5vjn

Раздел Обучение - пример создания с самого начала

kubekaiv
Цитата(ogorsv @ 6.8.2020, 13:39) *
Добрый день!

Начните с изучения материалов по ссылке
https://schneider-electric.app.box.com/s/cp...1tdutr7baas5vjn

Раздел Обучение - пример создания с самого начала

Я скелет проекта набросал. Но в этих моментах пробелы, времени совсем мало, вывел температуру на дисплей через переменную созданную в Status variables с типом real через преобразователь "to real" с аналогового входа AI1 у которого тип INT, но совсем не уверен что это правильно... Вход AI1 откалибровал как тип PTC от 0 до 100. Давление по срокам катастрофически мешает нормально разобраться с документацией. Этот раздел скачал, просмотрел видео, сделал по наитию. Проект вроде бы компилируется без ошибок, сегодня попробую залить.
kubekaiv
Температуру с экраном побелил. Осталось два вопроса, как задавать частоту на аналоговые выходы №3 и №4 и как задавать время задержки таймеров с дисплея с шагом 1. Переменные для времени созданы в Status variable. Я так понимаю их лучше задать в EEPROM...
ogorsv
Вы хотите сказать:

Как менять выходной сигнал AOL1 и AOL2 в соответствии с сигналом температурного задатчика (если значение РТ100 определяет частоту - он, по моему мнению, задатчик)?

1. В конфигурации создаёте переменные на каналы AOL1 и AOL2, например, VSD1 и VSD2.
2. Пишете функцию аналогового масштабирования (Евгений Тарасов выше писал, если не помните формулу линейной интерполяции по двум точкам)
3. Создаёте экземпляры этой функции с входным параметром - температурный задатчик и границы, выходной параметр - переменная аналогового выхода и выходные границы
Кстати, границы можно в самой функции жёстко задать
4. При создании функции не забудьте проверять на выход за границу диапазона (ограничения) и деление на ноль

Успехов!
kubekaiv
Понял, поищу. А блока в FDB стандартного нет? Например может CTU, СTD или CTUD подойдет?

Последнее - задал переменные задания времени включения и задание времени отключения, привязал переменные соответственно к нужным таймерам. Привязал их в дисплее, дальше хочу понять как менять эту переменную с лицевой панели с помощью кнопок left/right (уменьшить/увеличить) на 1

В целом конфигурация получилось рабочей. Осталось чуть чуть допилить ))

Огромное спасибо!!!
kubekaiv
2. Пишете функцию аналогового масштабирования (Евгений Тарасов выше писал, если не помните формулу линейной интерполяции по двум точкам)

Подскажите где это найти... Горю!!!
ogorsv
Вот ссылка
http://forum.abok.ru/index.php?showtopic=1...t&p=1256938

Только Евгений написал для пересчёта входного аналогового в физическое, а вам нужно использовать входной сигнал от PT100 в масштабированный сигнал для аналогового выхода
Нарисуйте график зависимости и сразу поймёте что во что пересчитать и где какие границы
kubekaiv
Цитата(ogorsv @ 7.8.2020, 12:59) *
Вот ссылка
http://forum.abok.ru/index.php?showtopic=1...t&p=1256938

Только Евгений написал для пересчёта входного аналогового в физическое, а вам нужно использовать входной сигнал от PT100 в масштабированный сигнал для аналогового выхода
Нарисуйте график зависимости и сразу поймёте что во что пересчитать и где какие границы

Здесь разобрался. Осталось задание с кнопки величины таймеров включение и отключения. Все переменные задал, а как привязать к кнопкам не пойму. вожусь со счетчиком, но пока затык...
ogorsv
Таки нужно посмотреть rolleyes.gif
https://schneider-electric.app.box.com/s/cp...der/82812676370
kubekaiv
Цитата(ogorsv @ 7.8.2020, 13:36) *
Таки нужно посмотреть rolleyes.gif
https://schneider-electric.app.box.com/s/cp...der/82812676370
Посмотрел уже, вроде все сделал как написано, но не пойму как к кнопкам привязаться и шаг +1 хотьубей (((((
kubekaiv
В общем полный затык, не понимаю как физические кнопки влево вправо привязать к увеличению и уменьшению времени. Неужели только через написание скрипта?? Наверное придется сдавать так, не факт, что осилю до понедельника.


Цитата(kubekaiv @ 7.8.2020, 14:15) *
В общем полный затык, не понимаю как физические кнопки влево вправо привязать к увеличению и уменьшению времени. Неужели только через написание скрипта?? Наверное придется сдавать так, не факт, что осилю до понедельника.

Как то можно обойтись без кнопок + и - на экране?
kubekaiv
Цитата(kubekaiv @ 7.8.2020, 14:16) *
В общем полный затык, не понимаю как физические кнопки влево вправо привязать к увеличению и уменьшению времени. Неужели только через написание скрипта?? Наверное придется сдавать так, не факт, что осилю до понедельника.



Как то можно обойтись без кнопок + и - на экране?

Может дадите пошаговую инструкцию или листы на которых смотреть.... я уже запутался во всех переменных....
kubekaiv
В блоке LT (Lower Than) что с чем сравнивается?* В каком случае выдается единица на выходе? Когда нижний вход меньше верхнего или наоборот, что о уже крыша поехала.... Тоже самое и с GT?
roman_pxaxaxa
Цитата(kubekaiv @ 7.8.2020, 14:16) *
В общем полный затык, не понимаю как физические кнопки влево вправо привязать к увеличению и уменьшению времени. Неужели только через написание скрипта?? Наверное придется сдавать так, не факт, что осилю до понедельника.



Как то можно обойтись без кнопок + и - на экране?


А менять значения привязанных к Edit переменных на экране нажатием кнопок вверх/вниз не устраивает?
svintus
Цитата(kubekaiv @ 7.8.2020, 14:16) *
В общем полный затык, не понимаю как физические кнопки влево вправо привязать к увеличению и уменьшению времени. Неужели только через написание скрипта?? Наверное придется сдавать так, не факт, что осилю до понедельника.



Как то можно обойтись без кнопок + и - на экране?


Вы это в серьез назовете программой для вентиляции? Или, курсовой пересдаете?
kubekaiv
Цитата(svintus @ 7.8.2020, 17:21) *
Вы это в серьез назовете программой для вентиляции? Или, курсовой пересдаете?

Ерничать оно конечно здорово, но с контроллером столкнулся, впервые, никогда с ними дела не имел, приходится разбираться с самого нуля, быстро и на коленке, еще и сроками тыкают. Если сложно помочь, то разберусь сам. Да, здесь такая, простая вентиляция, но не имел никогда дело с М172 Было бы время разобрался бы спокойно сам. А то прям сразу все спецами стали, без курсов, помощи и пояснений. В чем же смысл тогда этого форума, если все такие умные и все знают???. Или никто никогда не начинал делать с нуля в сжатые сроки.... Всем кто помог советом большое спасибо

Цитата(roman_pxaxaxa @ 7.8.2020, 16:34) *
А менять значения привязанных к Edit переменных на экране нажатием кнопок вверх/вниз не устраивает?

Устраивает все что будет работать. Это все вновь для меня, моя специфика - РЗА. Но что делать - пришлось!!! Если можете помочь - буду очень благодарен, ну в нет - разберусь сам со временем. Жаль что его просто сейчас нет
roman_pxaxaxa
Цитата(kubekaiv @ 7.8.2020, 23:21) *
Устраивает все что будет работать. Это все вновь для меня, моя специфика - РЗА. Но что делать - пришлось!!! Если можете помочь - буду очень благодарен, ну в нет - разберусь сам со временем. Жаль что его просто сейчас нет


Вы просто поймите тоже людей с форума, которые изучают мануалы, примеры, документацию и т.д. и не считают, что вентиляция пишется за 4 дня совсем без опыта.

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

Значение любой переменной можно изменить отобразив её на дисплее с помощью Edit
Нажимая на центральную клавишу вы входите в режим редактирования переменной и нажимая клавиши вверх/вниз меняете значения переменной по разрядам. Далее нажимаете на центральную клавишу снова и значение переменной записывается в память.

Напишите, получилось у вас это или нет?
kubekaiv
Спасибо за совет, я попробую. По поводу изучения материалов это все правильно. Сам всю жизнь так и делаю, и куча всего в области РЗА сделано и отлично работает. И на форумах никогда не сидел, изучал все самостоятельно. Сложилась такая ситуация, просто напросто. Я сегодня залил все что сделал и вроде как все заработало, кроме задания значений пока, го думаю решу за выходные. Но я где то что то перемудрил в суматохе и в итоге при температуре в канале 20 градусов на дисплее вижу число 6. Использую преобразование to real от входа PT1000 на AI1 е переменной real в status variables. И чувствую что разгадка рядом, но в голове каша.
Не подскажете как правильно откалибровать вход при датчике pt1000 и правильно вывести значение на экран?
Всем спасибо. Прошу прощения если вопросы кажутся глупыми. В итоге знаю что разберусь сам, думал форумы для этого и создаются, чтобы можно было спросить... Ну да ладно, лирика..... В очередной раз убеждаюсь, что надо разбираться самому....

По большому счету мне осталось правильно откалибровать вход и забрать переменную реальным значением температуры. Остальное в принципе сделано
roman_pxaxaxa
Цитата(kubekaiv @ 7.8.2020, 23:53) *
Не подскажете как правильно откалибровать вход при датчике pt1000 и правильно вывести значение на экран?

Я помню вы вроде бы говорили, что используете pt100
Я использовал pt1000 или ntc датчики
Там аналоговый на pt1000 откалиброван

Информацию в интернете искал по поводу pt100 - не смог ничего найти. Как подключать правильно, могу только сказать, что у pt100 температура 0°С соответствует 100 Ом.
kubekaiv
Цитата(roman_pxaxaxa @ 8.8.2020, 0:14) *
Я помню вы вроде бы говорили, что используете pt100
Я использовал pt1000 или ntc датчики
Там аналоговый на pt1000 откалиброван

Информацию в интернете искал по поводу pt100 - не смог ничего найти. Как подключать правильно, могу только сказать, что у pt100 температура 0°С соответствует 100 Ом.

Монтажная, организация, ввела в заблуждение да и в документации видел pt100, залез сегодня посмотрел на него - pt1000.
Что нужно выбрать в качестве входной для него... CfgPT1000 , там 3 или 4 варианта.... Комп закрыл, не посмотрю сейчас... Каким блоком выводить в температуру в градусах в FDB. Или надо какой то скрипт писать. В устройствах РЗА например в Сименс есть специальные блоки преобразователи, через него и привязывал к дисплею... вот я по наитию и ищу что то похожее.... Уткнулся в блок to real coeдинил через него cfgA1 на созданную переменную с типом Реал. Получил число 6... Завтра буду рыть дальше, точнее сегодня.... Спасибо!!
roman_pxaxaxa
Цитата(kubekaiv @ 8.8.2020, 0:33) *
Монтажная, организация, ввела в заблуждение да и в документации видел pt100, залез сегодня посмотрел на него - pt1000.
Что нужно выбрать в качестве входной для него... CfgPT1000 , там 3 или 4 варианта....


https://youtu.be/7QEMxyUDC8Q

Посмотрите это видео, здесь есть настройка входа для pt1000
kubekaiv
Вот это то что нужно, я еще один мануальчик нашел, только что читал и до меня наконец дошло, что нужно делать))) утром буду писать... Спасибо огромное. Сейчас буду смотреть, читать, кстати не исключен косяк в монтаже. Надо проверить.
freefire78
Цитата(Andrey N. @ 5.8.2020, 9:43) *
Точно создали переменные во вкладке Configuration-M172-Modbus objects-EEPROM parameters?

Точно. Как мне объяснили из саппорта шнайдера- у меня в епром при записи на входе стоит не сохраняемая переменная. Она обнуляется, поэтому обнуляется значение в епром. Замкнутый круг какой-то... Что мне делать не пойму. Ерунда какая-то.
kubekaiv
Кто подскажет, как работает JMP. Сделал метки страничкам присваиваю JMP эту метку, а что дальше... у JMP есть только вход, который можно сделать инверсным.........
ogorsv
Вам хочется таки чтения ваших мыслей на расстоянии ))

Если применяете "странички" - объяснили бы хотя бы, о чём речь идёт (не припомню такого термина в контексте)

1. Первая мысль - JMP применяется в IL, но там "страничек" нет
2. Применяется в SFC - вторая мысль, но вряд ли так быстро до него добрались
3. Судя по всему, FBD пробуете - смотрите пример
Нажмите для просмотра прикрепленного файла
Andrey N.
Цитата(freefire78 @ 9.8.2020, 14:33) *
Точно. Как мне объяснили из саппорта шнайдера- у меня в епром при записи на входе стоит не сохраняемая переменная. Она обнуляется, поэтому обнуляется значение в епром. Замкнутый круг какой-то... Что мне делать не пойму. Ерунда какая-то.

Чудеса какие-то. Скидывайте свой проект, посмотрим.
kubekaiv
Цитата(ogorsv @ 10.8.2020, 18:52) *
Вам хочется таки чтения ваших мыслей на расстоянии ))

Если применяете "странички" - объяснили бы хотя бы, о чём речь идёт (не припомню такого термина в контексте)

1. Первая мысль - JMP применяется в IL, но там "страничек" нет
2. Применяется в SFC - вторая мысль, но вряд ли так быстро до него добрались
3. Судя по всему, FBD пробуете - смотрите пример
Нажмите для просмотра прикрепленного файла

Да, это то что нужно, спасибо.
В чем назначение этих дополнительных входа и выхода EN и ENO. Я так понял выход ENO отсылает переменную с выхода блока на указанную метку, а для чего нужен EN? Пока приходит
мысль что это тоже адресация, но обратная... Как она применяется? Прошу прощения если вопрос глупый...
kubekaiv
Всем доброго дня.
Есть такой вопрос. Рисую основной дисплей page1с отображаемыми переменными, добавляю новый page2 с авариями. Программирую кнопку вправо на OpenPage с link page2. Компилирую - все отлично. Программирую кнопку влево на OpenPage с link page1. При компиляции ошибка типа "основная страница не может быть как child. Удаляю кнопку влево, заливаю в устройство. Все отлично, по нажатию "вправо" получаю второй дисплей. А как вернуться опять на первый, который прописан как основной.??
Спасибо.
Andrey N.
Цитата(kubekaiv @ 12.8.2020, 9:56) *
Всем доброго дня.
Есть такой вопрос. Рисую основной дисплей page1с отображаемыми переменными, добавляю новый page2 с авариями. Программирую кнопку вправо на OpenPage с link page2. Компилирую - все отлично. Программирую кнопку влево на OpenPage с link page1. При компиляции ошибка типа "основная страница не может быть как child. Удаляю кнопку влево, заливаю в устройство. Все отлично, по нажатию "вправо" получаю второй дисплей. А как вернуться опять на первый, который прописан как основной.??
Спасибо.

Нажмите правой кнопкой на списке Pages - выберите Page Properties. Во вкладке General, справа, есть Page model. Сейчас у вас выбрана Hierachical. Это значит, что вы не переходите с одной страницы на другую, а открываете новую, дочернюю. Чтобы вернутся на главную, необходимо дочернюю закрыть (то есть привязать к кнопке не Open page, а Close. Но лучше всего выбрать тип Flat. Тогда все страницы будут равнозначными, и с помощью команды Open page вы сможете перейти с любой на любую, какую укажите.
kubekaiv
Цитата(Andrey N. @ 12.8.2020, 8:27) *
Нажмите правой кнопкой на списке Pages - выберите Page Properties. Во вкладке General, справа, есть Page model. Сейчас у вас выбрана Hierachical. Это значит, что вы не переходите с одной страницы на другую, а открываете новую, дочернюю. Чтобы вернутся на главную, необходимо дочернюю закрыть (то есть привязать к кнопке не Open page, а Close. Но лучше всего выбрать тип Flat. Тогда все страницы будут равнозначными, и с помощью команды Open page вы сможете перейти с любой на любую, какую укажите.

Спасибо, понял.

Есть еще вопрос, как работает блок RET (return)? в каких случаях применяется?, я так понял вместе с JMP.... но в блоке ret нет ссылок на метки....
ogorsv
Ох, начинать с JMP & RET при освоении ПЛК...

Вы или ассемблер хорошо знали, или языки высокого уровня?
Так и в языках высокого уровня отношение к GOTO без весомой на то причины сильно не приветствуется (в ассемблере без GOTO никак)
Языки стандарта МЭК 61131 обладают всеми возможностями написания программ без использования GOTO в большинстве случаев - примите это во внимание, если с вашими программами кому-то после вас работать
Программа в ПЛК выполняется циклично (кроме задач Boot & Init) и это нужно иметь в виду

Книга Петрова И.В. "Программируемые контроллеры. Практическое применение языков стандарта МЭК 61131-3" - начните изучать, лишним не будет

1. En - это вход разрешения работы блока (Enable)
При подаче "1" на этот вход запускается программная логика блока (представьте, что в блоке тоже есть написанная программа), если "0" - логика выполняться не будет
После завершения последнего оператора в блоке, на выходе ENO устанавливается "1"
В разных программных средах логика неподключённого En может отличаться.
Здесь - если En не подключён, то он считается всегда в "1"

В моём примере, сделанного для вас программа работает так:
а) Активируется нетворк SEC_3
б) Активируется блок MOVE
в) Передаётся значение 3 в переменную VAL1
г) Активируется выход ENO
д) Активируется переход на нетворк SEC_FIN, проскакивая, через нетворк SEC_4

2. Если вспомнить, для чего вообще в программировании используется оператор RETURN, то и здесь будет похожая ситуация

Conditional returns from functions and function blocks are implemented using a RETURN construction as presented in the following table. Program execution is transferred back to the invoking entity when the boolean input is TRUE, and continues in the normal fashion when the boolean input is FALSE.

Нажмите для просмотра прикрепленного файла

На рисунке содержимое функционального блока. Если досчитали до предела, программа счёта прекращает работу

Этот пример для демонстрации, я так обычно не пишу - стараюсь обходиться без JMP & RET

kubekaiv
Цитата(ogorsv @ 13.8.2020, 0:20) *
Ох, начинать с JMP & RET при освоении ПЛК...

Вы или ассемблер хорошо знали, или языки высокого уровня?
Так и в языках высокого уровня отношение к GOTO без весомой на то причины сильно не приветствуется (в ассемблере без GOTO никак)
Языки стандарта МЭК 61131 обладают всеми возможностями написания программ без использования GOTO в большинстве случаев - примите это во внимание, если с вашими программами кому-то после вас работать
Программа в ПЛК выполняется циклично (кроме задач Boot & Init) и это нужно иметь в виду

Книга Петрова И.В. "Программируемые контроллеры. Практическое применение языков стандарта МЭК 61131-3" - начните изучать, лишним не будет

1. En - это вход разрешения работы блока (Enable)
При подаче "1" на этот вход запускается программная логика блока (представьте, что в блоке тоже есть написанная программа), если "0" - логика выполняться не будет
После завершения последнего оператора в блоке, на выходе ENO устанавливается "1"
В разных программных средах логика неподключённого En может отличаться.
Здесь - если En не подключён, то он считается всегда в "1"

В моём примере, сделанного для вас программа работает так:
а) Активируется нетворк SEC_3
б) Активируется блок MOVE
в) Передаётся значение 3 в переменную VAL1
г) Активируется выход ENO
д) Активируется переход на нетворк SEC_FIN, проскакивая, через нетворк SEC_4

2. Если вспомнить, для чего вообще в программировании используется оператор RETURN, то и здесь будет похожая ситуация

Conditional returns from functions and function blocks are implemented using a RETURN construction as presented in the following table. Program execution is transferred back to the invoking entity when the boolean input is TRUE, and continues in the normal fashion when the boolean input is FALSE.

Нажмите для просмотра прикрепленного файла

На рисунке содержимое функционального блока. Если досчитали до предела, программа счёта прекращает работу

Этот пример для демонстрации, я так обычно не пишу - стараюсь обходиться без JMP & RET

Спасибо за пояснение, я обхожусь в принципе без JMP, просто наткнулся на эти блокит и стало интересно. Литературку обязательно почитаю
Вчера залил свою программу, там отрисовано два дисплея. В свойствах дисплея поставил flat. На первом дисплее уставки и измерения, на втором аварии, т.е булевские переменные прописанные в status varables и отрисованые в FDB. На кнопку right назначено openpage с link page2 (реальное имя alarms). При нажатии на кнопку вправо осуществляется переход на второй экран, но внутри начинают щелкать какие то реле.... при возврате на первый - это пропадает. В чем причина?
Andrey N.
Цитата(kubekaiv @ 13.8.2020, 12:19) *
Спасибо за пояснение, я обхожусь в принципе без JMP, просто наткнулся на эти блокит и стало интересно. Литературку обязательно почитаю
Вчера залил свою программу, там отрисовано два дисплея. В свойствах дисплея поставил flat. На первом дисплее уставки и измерения, на втором аварии, т.е булевские переменные прописанные в status varables и отрисованые в FDB. На кнопку right назначено openpage с link page2 (реальное имя alarms). При нажатии на кнопку вправо осуществляется переход на второй экран, но внутри начинают щелкать какие то реле.... при возврате на первый - это пропадает. В чем причина?

Смотрите программу, что-то наваяли лишнего.
kubekaiv
Вопрос.
Создаю две странички в логике FDB nam1 и name2. В каждой свои локальные переменные. Можно ли переменные из странички 1 использовать в страничке 2 в принципе? Если можно, то как?
ogorsv
Ответ
Создавайте глобальные переменные
Смысл локальных переменных - видимость в пределах одного POU

Обратите внимание, что "странички" имеют название программа или программная секция
Зачем придумывать названия стандартным объектам и усложнять понимание себя? rolleyes.gif
kubekaiv
Обратите внимание, что "странички" имеют название программа или программная секция
Зачем придумывать названия стандартным объектам и усложнять понимание себя?
Не совсем понял. Есть поле программы FDB, которой нужно дать имя и поместить в нужную логику например в background во время ее создания. Внутри этой есть как я понял программные секции это 001, 002 и тп...
Вопрос, если создается вторая логика FDB и помещается в background, там я рисую свои поля (секции) 001, 002 и тп....то как она работает относительно первой? Параллельно или на нее должен быть переход.....?
мне не хватает каких то базовых навыков, а чего именно понять не могу, вроде все делаю логически правильно, но не получается...

В свое время разбирался с Sepam s80 от Schneider electric, там все получилось, и goose обмен прописал, и все работает до сих пор как надо, там мне как то понятно, а тут чувствую что чего то совсем чуть чуть не хватает.... Не пойму чего
svintus
10 000 часов. Столько в среднем нужно потратить времени, чтобы стать специалистом в любой профессии. Надо оно вам, или нет, сами решайте.
Andrey N.
Цитата(kubekaiv @ 18.8.2020, 0:22) *
Обратите внимание, что "странички" имеют название программа или программная секция
Зачем придумывать названия стандартным объектам и усложнять понимание себя?
Не совсем понял. Есть поле программы FDB, которой нужно дать имя и поместить в нужную логику например в background во время ее создания. Внутри этой есть как я понял программные секции это 001, 002 и тп...
Вопрос, если создается вторая логика FDB и помещается в background, там я рисую свои поля (секции) 001, 002 и тп....то как она работает относительно первой? Параллельно или на нее должен быть переход.....?
мне не хватает каких то базовых навыков, а чего именно понять не могу, вроде все делаю логически правильно, но не получается...

В свое время разбирался с Sepam s80 от Schneider electric, там все получилось, и goose обмен прописал, и все работает до сих пор как надо, там мне как то понятно, а тут чувствую что чего то совсем чуть чуть не хватает.... Не пойму чего

И всё же, называйте вещи своими именами. Вы задаёте вопрос, сначала у вас идёт "поле программы FBD". Потом у вас появляется "вторая логика FBD". О чём тут идёт речь, понять сложно.
Теперь по теме. Можно создать несколько разных программ на любом языке (FBD, SFC, LD и т.д.). Чтобы программа начала исполняться, необходимо поместить её в какой-либо цикл (Timed, Background ...). Программы разные, работают сами по себе, поэтому никаких переходов между ними не требуется.
ogorsv
Цитата
мне не хватает каких то базовых навыков, а чего именно понять не могу


1. Я дважды приводил ссылку на сетевое хранилище - вы смотрели папку "Обучение"?

Понимаю желание минимизировать усилия, но чудес не бывает.
Либо вы - гуру и достаточно только открыть программу и почитать встроенную справку для того, чтобы самостоятельно сделать проект
Либо вы идёте на курсы и вам за короткое время показывают основы
Либо вы таки откроете ссылку, зайдёте в папку ОБУЧЕНИЕ, и попробуете прочитать материалы, которые Евгений заботливо для всех выложил в открытый доступ.

2. Использование правильной терминологии для инженера сродни использованию правильных ударений у дикторов ЦТ - это, зачастую, показатель владения предметом.

Программная секция - это то, что создаёте при выборе в контекстном меню Add - Program
А то, что вы сочли за программные секции, называются в этом ПО Networks
В данном контексте использование выражения "я создал несколько нетворков в секции на FBD" сделает ваше сообщение абсолютно понятным для читающих.

Разобраться самостоятельно с Sepam и goos-сообщениями - это замечательно!
Значит у вас есть опыт работы с документацией - а Евгений её, повторюсь, заботливо для всех выложил в открытый доступ.

Действуйте!

martdvm
Добрый день! Подскажите, пожалуйста, как установить пароль на display screen у M172.
kubekaiv
Цитата(ogorsv @ 18.8.2020, 21:42) *
1. Я дважды приводил ссылку на сетевое хранилище - вы смотрели папку "Обучение"?

Понимаю желание минимизировать усилия, но чудес не бывает.
Либо вы - гуру и достаточно только открыть программу и почитать встроенную справку для того, чтобы самостоятельно сделать проект
Либо вы идёте на курсы и вам за короткое время показывают основы
Либо вы таки откроете ссылку, зайдёте в папку ОБУЧЕНИЕ, и попробуете прочитать материалы, которые Евгений заботливо для всех выложил в открытый доступ.

2. Использование правильной терминологии для инженера сродни использованию правильных ударений у дикторов ЦТ - это, зачастую, показатель владения предметом.

Программная секция - это то, что создаёте при выборе в контекстном меню Add - Program
А то, что вы сочли за программные секции, называются в этом ПО Networks
В данном контексте использование выражения "я создал несколько нетворков в секции на FBD" сделает ваше сообщение абсолютно понятным для читающих.

Разобраться самостоятельно с Sepam и goos-сообщениями - это замечательно!
Значит у вас есть опыт работы с документацией - а Евгений её, повторюсь, заботливо для всех выложил в открытый доступ.

Действуйте!

Добрый день. Спасибо за консультации, со всем самостоятельно разобрался с учетом всех ваших рекомендаций. Программа работает, все отлично!! Остался последний вопрос. Как запретить доступ к программе для скачивания ее с устройства другими лицами. Спасибо!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.