Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 24

Тема: Modubs через Ethernet; Входы МДВВ

  1. #11

    По умолчанию

    ФБ на SFC никогда не заканчивается в принципе. Если он прошагал по всем шагам, то должен вернуться на начальный шаг. В конце должен быть переход на начальный шаг. Он ставится по умолчанию при создании нового ФБ.

    Когда вызывается ФБ на SFC, то это совершенно не означает что он пройдет по всем шагам и отдаст управление. Он выполнит только шаги, которые имеют маркер активности и сразу отдаст управление вызывающему POU. При этом он проверит условия переходов. Если некий переход разрешен, то маркер(ы) активности перейдет на соотв-й шаг, который будет работать при след вызове. Положение маркеров запоминается между вызовами.

    Т.е. SFC это машина состояний. Работает по тактам = вызовам. Она постоянно стоит в некотором состоянии и переходит из одного состояния в другое по условиям переходов. Но выполнение никогда не заканчивается, как собственно и вся программа ПЛК. Это же не вычислительный алгоритм: высчитал результат – закончил, выключился из розетки

  2. #12
    Пользователь Аватар для Flomaster
    Регистрация
    03.05.2007
    Адрес
    Khabarovsk
    Сообщений
    278

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    ФБ на SFC никогда не заканчивается в принципе. Если он прошагал по всем шагам, то должен вернуться на начальный шаг. В конце должен быть переход на начальный шаг. Он ставится по умолчанию при создании нового ФБ.

    Когда вызывается ФБ на SFC, то это совершенно не означает что он пройдет по всем шагам и отдаст управление. Он выполнит только шаги, которые имеют маркер активности и сразу отдаст управление вызывающему POU. При этом он проверит условия переходов. Если некий переход разрешен, то маркер(ы) активности перейдет на соотв-й шаг, который будет работать при след вызове. Положение маркеров запоминается между вызовами.

    Т.е. SFC это машина состояний. Работает по тактам = вызовам. Она постоянно стоит в некотором состоянии и переходит из одного состояния в другое по условиям переходов. Но выполнение никогда не заканчивается, как собственно и вся программа ПЛК. Это же не вычислительный алгоритм: высчитал результат – закончил, выключился из розетки
    То, что начальный шаг ставится по умолчанию - это понятно. По поводу RETURN уже залез в документацию и понял, что c SFC такой фокус не прокатит.

    Вернусь к вопросу о сетевых переменных. Сегодня попробовал сделать так, как в выложенном мне примере. Вначале ничего не получалось - переменные показывали только свое состояние применительно к каждому контроллеру. Потом неожиданно контроллер №2 увидел значения переменных, которые задал контроллер №1, т.е. собственно этого я и хотел добиться. Но потом пришлось поправить программку одного из контроллеров, и после этого переменные снова не хотят корректно отображаться. Может быть есть какая-то последовательность запуска контроллеров?

    И еще заметил пару особенностей, которые появились после добавления в проект сетевых переменных:
    1. При попытке записать пограмму в контроллер нередко передача данных "подвисает", после чего теряется связь с контроллером и он перегружается. Лечится нажатием кнопки "Сброс" и последующим удержанием кнопки "Работа". Об этой проблеме читал на этом форуме, и хотелось бы узнать, как скоро она решится.
    2. Почему-то не получается в работающей на контрллере программы задать точку останова для отладки. Если щалкаю мышкой на строке кода, контроллер уходит в перезагрузку.

  3. #13

    По умолчанию

    Эти 2 баги были нами обнаружены недавно и поправлены в новой версии прошивки. Связаны они с сетевыми переменными. Сами сетевые переменные полностью работоспособны, но при отладке, остановке и online change программы с сетевыми переменными возможна перезагрузка.
    Для исправления перепрошейтесь прошивкой 2.02.6 или старше.

    А вы правильно выставили маски подсети для контроллеров (сеть класса A всё-таки). Маска должна быть 255.255.0.0 или 255.0.0.0. Или переместите оба контроллера в одну подсеть класса С, тогда маска будет 255.255.255.0
    Последний раз редактировалось Филоненко Владислав; 13.11.2007 в 18:03.

  4. #14
    Пользователь Аватар для Flomaster
    Регистрация
    03.05.2007
    Адрес
    Khabarovsk
    Сообщений
    278

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Эти 2 баги были нами обнаружены недавно и поправлены в новой версии прошивки. Связаны они с сетевыми переменными. Сами сетевые переменные полностью работоспособны, но при отладке, остановке и online change программы с сетевыми переменными возможна перезагрузка.
    Для исправления перепрошейтесь прошивкой 2.02.6 или старше.

    А вы правильно выставили маски подсети для контроллеров (сеть класса A всё-таки). Маска должна быть 255.255.0.0 или 255.0.0.0. Или переместите оба контроллера в одну подсеть класса С, тогда маска будет 255.255.255.0
    Прошивку поменяю, спасибо за совет
    А по поводу маски подсети - имеется ввиду маска подсети именно самого контроллера, которая изменяется командой SetMask в PLC-Browser? Если да, то сейчас подсеть 255.255.255.0.

  5. #15

    По умолчанию

    именно контролеров. Они у вас в разных подсетях класса С, а маска блокирует нормальный обмен. Поставьте 255.255.0.0.

  6. #16
    Пользователь Аватар для Flomaster
    Регистрация
    03.05.2007
    Адрес
    Khabarovsk
    Сообщений
    278

    По умолчанию

    С сетевыми переменными вопрос решился путем указания подсети 255.255.0.0. Теперь всё работает.
    Однако снова возник вопрос, касающийся МДВВ. На этот раз - выходов. Не удается задать значение на выходе МДВВ. Если мне нужно, скажем, замкнуть выход №1, я записываю в соответствующий регистр значение 1. При этом, значение записывается, но лампочка на выходе не загорается - т.е. выход разомкнут. Попробовал поработать с выходами командой PUTBIT - ничего не получилось. При чтении значений входов команда EXTRACT работает отлично.
    Как победить?

  7. #17
    Пользователь
    Регистрация
    05.05.2007
    Адрес
    Барнаул->Москва
    Сообщений
    139

    По умолчанию

    я делал следующим образом:
    MASK_OUT.0:=TRUE; (*замкнуть первый выход*)
    MASK_OUT.1:=False; (*разомкнуть второй*)
    ....
    и тд
    MASK_OUT - это WORD битовая маска выхода

  8. #18
    Пользователь Аватар для Flomaster
    Регистрация
    03.05.2007
    Адрес
    Khabarovsk
    Сообщений
    278

    По умолчанию

    Спасибо, попробую!

  9. #19
    Пользователь Аватар для Flomaster
    Регистрация
    03.05.2007
    Адрес
    Khabarovsk
    Сообщений
    278

    По умолчанию

    И еще вопрос. Мне нужно в нескольких участках кода использовать временную задержку порядка 1-2 секунды.
    В документации есть пример программы "Светофор" , в которой реализован ФБ WAIT. Как им пользоваться в программе SFC - ясно. Если WAIT.OK=true, то возможен переход к след. блоку. А как такой ФБ использовать в программе, написанной на ST? Или может быть в CoDeSys есть реализованный таймер для осуществления задержки?

  10. #20
    Пользователь
    Регистрация
    05.05.2007
    Адрес
    Барнаул->Москва
    Сообщений
    139

    По умолчанию

    TON, TOF, TP в standart.lib

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Ваши права

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