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

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    это уже лишнее, как и if then else. если не равно, то приравниваем, если равно - то нет. какой в этом смысл? приравнивание без условий будет нести абсолютно тот же результат

  2. #2

    По умолчанию

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

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

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

  3. #3

    По умолчанию

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

  4. #4

    По умолчанию

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

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

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

  7. #7

    По умолчанию

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

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

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

Похожие темы

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

Ваши права

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