PDA

Просмотр полной версии : Отображение и изменение переменной в ИП320



paveliv68
04.03.2013, 11:13
Здравствуйте.
При работе программы изменяется переменная в ПЛК. Надо вывести её на панель, а также изменять её значение с панели. У меня получается только по отдельности или чтение или запись. Пытался включать панель как master и как slave. Рассматривал примеры на форуме работы с панелью, темы. Но не получается вместе вывод и изменение . Заранее спасибо.

drvlas
12.03.2013, 00:39
Пытался включать панель как master и как slave. Я пробовал рассмотреть проект, но не получилось. Так что подсказать не смогу, а присоединиться к теме - да. Ибо самому нужно :)

Работал с ИП320 через конфигуратор ПЛК, ИП320 была мастером модбаса, все чики-пики. Решился впервые попробовать поработать через библиотеки, при этом поставить панель слейвом. И тут же уперся в нипанятку, созвучную поднятой теме: как ПЛК узнает, что регистр изменен с панели оператора?
Вот, к примеру. Создаю на экране регистр с номером 4х 6. Ставлю в его свойствах псису "Настр". Ну, это означает всего лишь, что с панели оператор может изменить значение этого регистра. И с ПЛК я его могу задавать. Но вот как мне на Мастере-ПЛК узнать, что оператор ввел новое значение этого регистра? Не могу понять. Как мне в ходе регенерации этого регистра вообще не пропустить, что он изменялся с панели?

Хорошо бы, конечно, получить не отсылания к примерам. Ненавижу я примеры в Кодесис. Их пока откроешь (со всеми этими целевымии платформами и прочей лабудой), а потом убеждаешься, что это типичное не то. Трата времени. Посему прошу ответить по сути, теоретически, так сказать :)
Спасибо!

Николаев Андрей
12.03.2013, 10:07
Даже примеры с реализацией ТРМ1 ни на что не натолкнули?
http://www.owen.ru/forum/showthread.php?t=13581

drvlas
12.03.2013, 10:44
Даже примеры с реализацией ТРМ1 ни на что не натолкнули?А должны были? Там есть ответ на мой вопрос - или Вы просто догадки строите?

Уточняю: меня интересует, как Мастер-ПЛК узнает о событии завершения ввода оператором значения изменяемого регистра. Вопрос требует вкуривания 100500 примеров или у кого-то хватит квалификации ответить в двух словах?

YuriBel
12.03.2013, 15:19
Рискну предположить, что мастер об этом никак не узнает, если будет курить бамбук, а не трудиться. А чтобы узнать, ему нужно периодически (с каким периодом, это уж вам решать) читать значение регистра и сравнивать с тем, которое он имеет в данный момент (то есть зафиксированное ранее). Если значение изменилось, то использовать новое.

Николаев Андрей
12.03.2013, 15:21
А должны были? Там есть ответ на мой вопрос - или Вы просто догадки строите?

Уточняю: меня интересует, как Мастер-ПЛК узнает о событии завершения ввода оператором значения изменяемого регистра. Вопрос требует вкуривания 100500 примеров или у кого-то хватит квалификации ответить в двух словах?

Ну этот ответ для paveliv68 был.
В Вас то я не смел сомневаться. Тем более что Вам раздел с примерами не так давно показывал. Вы даже спасибо казали :)

Но и на Ваш вопрос ответ есть в примере с ТРМ1 (и даже в скобочках написано ИП320 (Slave)).
Думаю не составило для Вас проблемы открыть Конфигурацию, и увидеть, что есть две переменных, отвечающих за уставку. :)
Если вопрос все еще актуален - постараюсь еще проще.

drvlas
12.03.2013, 15:41
нужно периодически читать значение регистра и сравнивать с тем, которое он имеет в данный моментЧестно говоря. надеялся на нечто более удобное. Может быть то, на что намекает коллега Николаев Андрей:
есть две переменных, отвечающих за уставку
Но я бы предпочел не намеки. Вопрос простой - почему ответ нужно выискивать в не очень-то експлиситном примере? Так что, если Вам не влом, Андрей, то постарайтесь еще проще.

Что меня настораживает в вычитывании и сравнении: нужно работать очень четко. То есть, все время иметь в виду, что именно можеть захотеть изменить оператор. И, по-хорошему, именно эти регистры обновлять и не следует, чтобы не получилось "встречки": мы меняем и оператор меняет один и тот же регистр. Так ведь?
Какое-то другое решение: завести 2 регистра, один на вывод, один на ввод... Тоже не айс.

Николаев Андрей
12.03.2013, 15:51
Так и не захотели посмотреть. :)

Юрий совершенно прав.

Нет других вариантов в сетях такого типа (одномастерных).
Две переменные. Одна на запись, вторая на чтение. Да, для одного параметра.
В программе сравниваете, и делаете выводы.
И не надо думать о том, чего хочет оператор. Вы это в программе просто проверяете каждый раз.
А если у Вас на одном экране 10 уставок и 20 кнопок, то вот тут действительно могут начаться неприятности, по тому как ПЛК мастер в момент опроса\изменения уставки параметра 10 пропустил изменение оператором на панели уставки параметра 1...
По этому я и рекомендовал использовать панель как мастер сети.

drvlas
12.03.2013, 16:07
Так и не захотели посмотреть. :)
Да с чего Вы... Смотрю в книгу, вижу фигу. Вот и все.

Что ж, спасибо. Буду пробовать, мож оно не так и страшно вблизи. Точнее, если есть уверенность, что я делаю все правильно, что я не пропустил некую фичу и не изобретаю велосипед - дык, тогда все пучком! Значит, надо делать так.

А Мастером... Ну, это уже пробовалось. Никто ж не спорит. И панель работает замечательно.
Теперь есть библиотека для ПЛК, где он как раз сам Мастер. А под такую библиотеку и прогнуться не грех. Вот я и пробую запустить ИП320 слейвом.

YuriBel
12.03.2013, 17:12
Назначив панель слейвом, нужно весь обмен делать вдумчиво и осозннанно, в противном случае вместо плюсов можно получить никому не нужные минусы. Не поленитесь, почитайте высказывания Валенка на тему панели слейвом. Ему этот режим нравится, потому что он четко знает, чего, когда, куда и сколько он хочет отправить или принять. Если сжато перечислить принципы этого подхода, то:
1 Групповые операции позволяют сократить время обмена. Вся работа по распаковке/запаковке при групповых операциях возлагается на наш код.
2 Медленно меняющиеся величины незачем читать часто. Часто читаем только то, что действительно нужно читать часто.
3. Пишем новые значения вместо старых, только если они изменились. Если нет, то незачем их писать.
4. Выбираем оптимум в отношении скорости обмена и количества ошибок в зависимости от качества линии.

drvlas
12.03.2013, 17:34
Не поленитесь, почитайте высказывания Валенка на тему панели слейвом. Ему этот режим нравитсяТак потому я и присматриваюсь. Ибо считаю Валенка своим учителем. От него же и бибилиотеку взял.

Ну что ж, уже создал проектик. Буду осваивать.
За резюме по подходу - отдельное мерси! В общем-то, все известно и большая часть опробована (кроме подбора скорости, сам не знаю почему не рискую подниматься выше 38400). Но то не с ИП320. Теперь вот и с нею попробую

YuriBel
12.03.2013, 17:43
Еще, что называется вдогонку. Если отслеживать номер текущего экрана, то можно писать и читать только те значения, которые имеют к нему отношение, тогда обмен с панелью будет совсем ненапряжный. По моему именно так поступает сами ИП320 в режиме мастера - читает только те регистры и биты, которые выводятся на текущий экран.

drvlas
12.03.2013, 17:53
По моему именно так поступает сами ИП320 в режиме мастера - читает только те регистры и биты, которые выводятся на текущий экран.Подтверждаю. За что его и люблю.

paveliv68
19.03.2013, 13:04
Извиняюсь за молчание. Внезапно заболел. Спасибо всем написавшим.
В ответах больше рассматривается когда панель slave и кажется, что у меня появилось понимание как работать в этом режиме, буду пробовать.
Но я не могу добиться результата даже когда панель master.Когда весь код проекта ";" в режиме on-line на вкладке "Конфигурация ПЛК" меняю значение переменной в ПЛК - на панели отображается верно, меняю значение с панели - в ПЛК меняется тоже верно. Понимаю, что ошибаюсь в коде. К примеру переменная:=панель в ПЛК всегда значение с панели. Не могу понять как написать, чтобы на панели отображалось значение переменной ПЛК и её можно было менять с панели? Пример сТРМ1 смотрел
много раз, но ... Как вызвать значение retain на панель понял и эта часть
у меня работает, а ... нет. Или я неправильно понял, что когда панель master всё проще? В этом режиме тоже нужен обмен по команде или сравнение двух переменных? Ещё раз всем спасибо.

Alexander24
04.04.2013, 21:15
Только у меня панель СПК207 мастер и ПЛК110 слэйв, в СТП предложили использовать 2 канала - ReadInput Registers с триггером Cyclic и WriteMultiple Registers с триггером Rising edge, сделал всё как они предложили. В итоге значения с плк панелью читаются, а с панели на плк не уходят. То ли я косой, то ли лыжи не едут. Выручайте, пожалуйста, проект горит.