Страница 270 из 1044 ПерваяПервая ... 170220260268269270271272280320370770 ... ПоследняяПоследняя
Показано с 2,691 по 2,700 из 10436

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #2691
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    Руководство по Программированию, находится на сайте http://www.owen.ru/uploads/re_plc73_1634.pdf

    Загляните в Additional [FIX] и вы найдете там светодиоды.

  2. #2692

    По умолчанию

    Цитата Сообщение от RadistDog Посмотреть сообщение
    Доброго дня всем!
    Что-то не могу никак разобраться.
    Прибор МВУ8-И (ver 2.05)
    ModBus-RTU 9600-8-N-1
    Проект создаётся на СПК207. В целом с обменом с модулями я разобрался - сейчас работает всё как дОлжно.
    Записываю в МВУ8 в регистр со смещением 0х0000 командой 16 значение 0 или 500 или 1000, но прибор на выход не выдаёт то, что должен. Выдаёт обычно 20мА.
    При управлении через конфигуратор выход управляется как положено. Правда, в конфигураторе, независимо от установленного протокола, значение на ВЭ предлагается подавать в виде REAL в диапазоне от 0,0000 до 1,0000. Т.е., к примеру, записываю через конфигуратор в регистр 0х0000 значение 0,5 и на выходе получаю желанные 12 мА. Тут не понятно, какое конфигуратор отправляет в регистр значение при установленном протоколе ModBus-RTU. Может конфигуратор ВСЕГДА общается с модулем по протоколу ОВЕН??
    Я уже стал эксперементировать с режимом "Авария" по тайм-ауту. Установил параметр t.out в значение 20. А для ВЭ1 установил O.ALr в значение 0. И действительно, после обрыва линии связи через 20 секунд модуль зажигает сигнал "Авария" (начиная при этом ежесекундно обращаться ко всем ВЭ), но ВЭ1, ушедший в 20мА при появлении сигнала "Авария" почему-то не переходит на 4 мА! То есть модуль не отрабатывает то, что должен?? Потом я восстанавливаю линию связи, порт перезапускается, КДС показывает в онлайне что обмен по этому слейву восстановился, через вкладку "Соотнесение входов/выходов" опять же в онлайне я вижу что в этот адрес (единственный! сконфигурёный со смещением 0х0000 и длиной 1) посылается значение 500. Но ВЭ1 опять переходит в 20 мА!!! Ёпсель-Мопсель!!!!!

    ... опять подключаю конфигуратор, опять убеждаюсь в который раз что всё управляется как должно ...
    ... в проекте конфигурю слейв на запись командой 16 со смещения 0х0000 последовательностью длиной в 8 слов, прописываю в соотнесении массив из 8 WORDов - не работает...
    ... конфигурю в слейве 8 каналов, каждый записываю отдельной командой и отдельной (а так же одинаковой) переменной, думая что а вдруг я адресом ошибся (хотя по лампочкам на модуле то я вижу что ни хрена не ошибся!) -- не работает!

    Видать я совсем ничего не понимаю... Помогите побороть МВУ8! Что я делаю неправильно???
    И ещё, кстати, один момент - в Руководстве по эксплуатации (далее РЭ) сказано, что для непосредственного управления ВЭ по сети RS-485, в случае когда ШИМ на ВЭ не предполагается (как раз мой вариант), нужно выставить параметр tphd в НОЛЬ. А в конфигураторе можно выставить только значение 00:01. Конфигуратор вообще не считает возможным установить 0 в этом параметре (см. скриншот). Кто прав - РЭ или конфигуратор?
    Вложение 12846

  3. #2693

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Загляните в Additional [FIX]
    melky, Спасибо - помогло.
    Там же разобрался как обрабатывать кнопки на панели.
    Скачал библиотеку для работы с LCD - тоже разобрался.
    Но есть еще вопросы. В контроллерах MITSUBISHI есть аппаратные переменные M0...M8000 типа boolean. В ОВЕН есть такие, или каждую переменную нужно объявлять? И как ее объявлять чтоб она сохраняла значение после пропадания питания?

  4. #2694
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    И как ее объявлять чтоб она сохраняла значение после пропадания питания?
    См. несколько сообщений выше мой ответ юзеру Boris_K.

  5. #2695

    По умолчанию

    Здравствуйте. Хотела бы спросить у вас, знающих людей. Есть учебная задача: при нажатии кнопки пуск загорается лампа 1, горит 1 сек, гаснет, загорается лампа 2, горит 1 сек гаснет, и так 3 лампы. Затем цикл повторяется в обратную сторону. Я реализовала на CFC: из 3ех таймеров TOF и 3ех генераторов импульса F_TRIG. Пуск организовала R_TRIG далее сигнал поступает на таймер TOF (выход Q у него лампа 1), затем сигнал идет на F_TRIG, с него опять на таймер TOF (выход Q у него лампа 2).. И так для трех ламп.

    Это не очень умно и хотелось бы узнать как можно сделать цикл например на ST, а в CFC обойтись 1им таймером. Возможно ли это? Спасибо.

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

    По умолчанию

    Цитата Сообщение от IrinaS Посмотреть сообщение
    Здравствуйте. Хотела бы спросить у вас, знающих людей. Есть учебная задача: при нажатии кнопки пуск загорается лампа 1, горит 1 сек, гаснет, загорается лампа 2, горит 1 сек гаснет, и так 3 лампы. Затем цикл повторяется в обратную сторону. Я реализовала на CFC: из 3ех таймеров TOF и 3ех генераторов импульса F_TRIG. Пуск организовала R_TRIG далее сигнал поступает на таймер TOF (выход Q у него лампа 1), затем сигнал идет на F_TRIG, с него опять на таймер TOF (выход Q у него лампа 2).. И так для трех ламп.

    Это не очень умно и хотелось бы узнать как можно сделать цикл например на ST, а в CFC обойтись 1им таймером. Возможно ли это? Спасибо.
    Код:
    VAR_INPUT
    	start: BOOL;
    END_VAR
    VAR_OUTPUT
    	lamp1	: BOOL;
    	lamp2	: BOOL;
    	lamp3	: BOOL;
    END_VAR
    VAR
    	oldStart: BOOL;
    	buffer: WORD;
    	tik: TON;
    END_VAR
    
    IF start AND NOT oldStart THEN
    	buffer.0:=TRUE;
    ELSIF NOT start THEN
    	buffer:=0;
    END_IF;
    oldStart:=start;
    IF tik.Q THEN
    	buffer:=SHL(buffer,1);
    	IF buffer>4 THEN buffer:=1; END_IF;
    END_IF;
    tik(IN:=NOT tik.Q AND start,PT:=T#1s);
    lamp1:=buffer.0;
    lamp2:=buffer.1;
    lamp3:=buffer.2;
    можно с этого начать
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #2697

    По умолчанию

    Конечно, хватит и одного таймера, потому что в любой момент времени у вас может гореть только 1 лампа. Просто при переходе к следующей лампе "перезаряжаете" таймер. На ST сделать - проще простого, это нормальный язык программирования, сродни Паскалю и С++, лучше делать на нём чем диаграммами, он мощнее и во многом удобнее. Всё что вам нужно для этой задачи - условный оператор. Таймер кстати можно сделать вручную, просто обращаясь к системному времени в ПЛК - это счётчик миллисекунд с момента включения ПЛК (функция TIME). Такой способ потенциально более гибкий.

  8. #2698
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,492

    По умолчанию

    Цитата Сообщение от Boris_K Посмотреть сообщение
    ... На ST сделать - проще простого, это нормальный язык программирования, сродни Паскалю и С++, лучше делать на нём чем диаграммами, он мощнее и во многом удобнее. ...
    Кому как, мне проще на CFC
    Вложение 12849
    Мне так нагляднее.

  9. #2699

    По умолчанию

    Цитата Сообщение от Boris_K Посмотреть сообщение
    Конечно, хватит и одного таймера, потому что в любой момент времени у вас может гореть только 1 лампа. Просто при переходе к следующей лампе "перезаряжаете" таймер. На ST сделать - проще простого, это нормальный язык программирования, сродни Паскалю и С++, лучше делать на нём чем диаграммами, он мощнее и во многом удобнее. Всё что вам нужно для этой задачи - условный оператор. Таймер кстати можно сделать вручную, просто обращаясь к системному времени в ПЛК - это счётчик миллисекунд с момента включения ПЛК (функция TIME). Такой способ потенциально более гибкий.
    А могли бы Вы свою логику продемонстрировать в кусочке программы? Не очень понимаю "перезарядку" таймера и организацию цикла.
    Я представляю горящие лампы массивом в цикле for. Сначала с 1ой лампы по 3ью затем с 3ьей лампы по 1.
    Но нужен, видимо, функциональный блок или функция, состоящая из таймера, сдвигового регистра, за счет которой шло бы переключение во времени.
    Как это сделать - не понимаю

  10. #2700
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Посмотрите пример уважаемого Capzapа. Там все это есть. Переменная buffer содержит 16 бит (это вместо массива). Используются первые 3 бита (buffer.0, buffer.1, buffer.2). Цикл организовывать не надо, контроллер и так в цикле работет. Также используется функция SHL(), которя сдвигает биты переменной влево.
    Под "Перезарядкой" таймера имелось в виду отключить и снова включить вход таймера IN, после того, как он отработает. В примере Capzapа это реализовано так: инвертированный выход с таймера подается ему же на вход, получается такой простенький генератор импульсов.

Страница 270 из 1044 ПерваяПервая ... 170220260268269270271272280320370770 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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