Показано с 1 по 5 из 5

Тема: помогите разобратса с программой

  1. #1
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    274

    По умолчанию помогите разобратса с программой

    Проблема такова написал программку оформил её в функциональный блок в этом блоке я использую два таймера ton они у меня срабатывают если сигнал управляющий механизмом (магнитный пускатель) включен более 5 секунд (это время для нормального переключения механизма из положения А в положе не В, если не уложились в это время авария) в случае аварии таймер срабатывает и его выход tim1.Q меняет состояние с FALSE на TRUE, вы результате переменная отвечающая за аварию переводит выходы управления механизмом в FALSE следовательно сигнал на входе таймера меняться с TRUE на FALSE а выход tim1.Q таймера TON все равно остаться TRUE как его взвести заново тоесть перевести в FALSE
    привожу код и программу в архиве просьба сильно не ржать я киповец а не программист учусь помаленьку лучше укажите на места где можно сделать лучше и как
    FUNCTION_BLOCK PER_KLAPANA
    VAR_INPUT (*входные переменые датчики кнопки и тп*)
    A:BOOL; (*Экранная кнопка положение A*)
    B:BOOL; (*Экранная кнопка положение B*)
    SENSOR_A:BOOL; (*Вход датчика положение A*)
    SENSOR_B:BOOL; (*Вход датчика положение B*)
    (*PK_AVTO_MAN:BOOL; (*Переключатель Автомат / Ручное*)*)
    ALARM_RES:BOOL; (*Вход гашения аварии перкидного клапана*)
    END_VAR
    VAR_OUTPUT (*выходные переменые пускатели аварии и тп*)
    OUT_A:BOOL; (*Выход на пускатель положение A*)
    OUT_B:BOOL; (*Выход на пускатель положение B*)
    ALARM_OUT:BOOL; (*Выход авария перкидного клапана*)
    END_VAR
    VAR (*локальные переменые для внутрених нужд*)
    tim1:TON;
    tim2:TON;
    END_VAR
    -------------------------------------------------------------------------
    IF A=TRUE AND B=FALSE THEN
    OUT_A:=TRUE;
    END_IF;
    IF OUT_A=TRUE THEN
    tim1(IN := OUT_A, PT := T#5s);
    ALARM_OUT:=tim1.Q;
    END_IF;
    IF SENSOR_A=TRUE THEN
    OUT_A:=FALSE;
    END_IF;
    IF B=TRUE AND A=FALSE THEN
    OUT_B:=TRUE;
    END_IF;
    IF OUT_B=TRUE THEN
    tim2(IN := OUT_B, PT := T#5s);
    ALARM_OUT:=tim2.Q;
    END_IF;
    IF SENSOR_B=TRUE THEN
    OUT_B:=FALSE;
    END_IF;
    IF ALARM_OUT=TRUE THEN
    OUT_A:=FALSE;
    OUT_B:=FALSE;
    END_IF;
    IF ALARM_RES=TRUE THEN
    ALARM_OUT:=FALSE;
    END_IF;
    Вложения Вложения
    • Тип файла: zip test.zip (332.6 Кб, Просмотров: 27)

  2. #2

    По умолчанию

    здравствуйте!
    так как профи не отвечают на вопрос,решил сунутся.
    дело в том что я тоже начинающий,по профессии электонщик.
    на мой взгляд вашу задачу удобней программировать на Cfs.
    получается наглядней и интуитивно понятней.при симуляции
    можно по шагам проверить весь ход работы.
    не ручаюсь за абсолюдную правильность,но возможно
    мое решение чем-то вам поможет!
    желаю успехов!
    пыси в визуализации кнопки изменил на фикцированные!
    Вложения Вложения
    • Тип файла: rar Test1.rar (12.1 Кб, Просмотров: 26)

  3. #3
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    274

    По умолчанию

    Спасибо но я уже победил эту проблему может и несовсем правильно это сделал но работает sfc мне неочень нравитса предпочитаю фбд и ст но серавно спасибо за участие

  4. #4
    Пользователь
    Регистрация
    20.07.2007
    Адрес
    Киров
    Сообщений
    152

    По умолчанию

    чтобы сбросить фб таймера его нужно вызвать с выключенным входом, у вас в первоначальном варианте он не вызывался и соотвественно не сбрасывался.

  5. #5
    Пользователь
    Регистрация
    23.01.2008
    Адрес
    Белгородская область, Валуйки
    Сообщений
    274

    По умолчанию

    да имменно так я и сделал по методу научного тыка определил

Ваши права

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