Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 17 из 17

Тема: "мигает" МДВВ

  1. #11

    По умолчанию

    смысл вот в чем

    if new_valueN <> curr_valueN then
    curr_valueN := new_valueN;
    DO_N:= curr_valueN;
    end_if

    если не равно - то в сеть посылаем, если равно - то не посылаем.
    Последний раз редактировалось dbkrasn; 07.12.2011 в 16:32.

  2. #12

    По умолчанию

    можете посылать, можете не посылать
    результат от действий
    do_n := new_val;
    и
    if new_valueN <> curr_valueN then
    curr_valueN := new_valueN;
    DO_N:= curr_valueN;
    end_if
    будет одинаков

  3. #13

    По умолчанию

    Правда чтоль? Серьезно посылаться не будет?

  4. #14

    По умолчанию

    такс, давайте сначала.
    у вас есть программа, в которой происходят какие-то действия над переменной new_value. вам надо передать значение этой переменной в модули В/В по rs232/rs485 либо через конфигуратор плк, либо самостоятельно используя библиотеку syslibcom.
    если вы в случае использования конфигуратора плк привязываете выходному регистру эту переменную new_value, то получаете это мигание мдвв. причина уже описана.
    если же вы заводите пачку "обменных переменных", сажаете их на выходные регистры в конфигураторе и приравниваете этим обменным переменным 1 раз в программе значение своих new_value, то в мдвв будут отсылаться стабильные значения прошлого цикла плк, а не моментально-непредсказуемые текущего.

  5. #15

    По умолчанию

    ну да, и я о том же. Одно НО. Если я хочу минимизировать обмен по сети, то зачем мне записывать новое значение в DO, если это значение не поменялось? Поэтому я и проверяю, поменялось ли значение или нет - еще раз: цель - уменьшить обмен по сети

  6. #16
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от dbkrasn Посмотреть сообщение
    Поскольку от документации толку ноль, пришлось прочесать сей форум.

    Что сделано - для модулей ввода/вывода установлен метод опроса "both" (polling+value change) и время опроса 100 мс. Для модулей вывода установлен метод опроса "by value change" и время опроса 200 мс.

    Теперь все работает стабильно
    А разве не будут Ваши действия с проверкой избыточны. Если бы Вы самстоятельно реализовывали протокол тогда другое дело, а у Вас:
    "both" в любом случае будет обмен через определенный промежуток времени

    "by value change" за Вас контроллер проверит изменение переменной

  7. #17

    По умолчанию

    если это значение не поменялось, а в конфигураторе плк у вас настроено "by value change", тут приравнивай, не приравнивай посылка не будет отправлена => не нужны все эти if then else. подойдет простое do := new_value;

    p.s. кстати очень интересный параметр "by value change" - отправляет посылку в устройство только по изменению значения. допустим у вас булева переменная отправляется в модуль дискретного вывода, имеет значение true и не меняется аж 30 сек. в модуле сетевой тайм-аут сколько должен быть, чтобы у вас релюшка в нем не выключилась? логично предположить, что больше 30 сек. а если обрыв связи и надо срочно отключить эту релюшку? модуль то переведет ее в безопасное состояние только через 31 сек.
    Последний раз редактировалось swerder; 08.12.2011 в 10:05.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Ответов: 8
    Последнее сообщение: 29.03.2011, 14:07
  2. Ответов: 3
    Последнее сообщение: 30.09.2010, 22:30
  3. как выбрать управление "прямое" или "обратное"
    от maxmore в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 18.01.2010, 10:13
  4. Ответов: 10
    Последнее сообщение: 11.07.2008, 14:37

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •