Страница 25 из 33 ПерваяПервая ... 152324252627 ... ПоследняяПоследняя
Показано с 241 по 250 из 343

Тема: ПР200 на четырёхзначной логике

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

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

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    МихаилГл Я чот подумал, глядя на это.
    Я без претензий.
    А не получится это всё как-то хитро формализовать? Бахнуть какой-то массив, в него подсунуть данные из этого массива и все эти AND ещё и в цикле вычислять?
    Я имею ввиду что-то типа внутреннго таблично-массивного скриптового языка, чтобы там можно было описать условия красиво табличкой =)
    Так и сделано, просто это на визуализацию плк выводится.

    А индекс я использую уже из массива:
    Код:
    	For_Ind_00X1:		ARRAY [0..16] OF DWORD:=   [    16#FFFFFFFF,       16#FF808080,    16#FFFFFFFF,           16#FFFFFF80,           16#FFFFFF80,   16#FFFFFF80,   16#FFFFFF80, 16#FF80FF80, 16#FF80FF80,       16#FFFFFF80,       16#FFFFFF80,       16#FFFF0000, 16#FFFF0000, 16#FFFF0000,       16#FFFF8080, 16#FFFF8080, 16#FFFF8080];
    	For_Ind_00X2:		ARRAY [0..16] OF DWORD:=   [    16#FFFFFFFF,       16#FF808080,    16#FFFFFFFF,           16#FFFFFF80,           16#FFFFFF80,   16#FFFFFF80,   16#FFFFFF80, 16#FF80FF80, 16#FF80FF80,       16#FFFFFF80,       16#FFFFFF80,       16#FFFF0000, 16#FFFF0000, 16#FFFF0000,       16#FFFF8080, 16#FFFF8080, 16#FFFF8080];
    	For_Ind_00X3:		ARRAY [0..16] OF WSTRING:= ["НЕ ОПРЕДЕЛЕНО", "НЕ В ГОТОВНОСТИ", "В ГОТОВНОСТИ", "ПРЕДПУСКОВАЯ СИГН-Я", "ПРЕДПУСКОВАЯ СИГН-Я", "ЗАПУСКАЕТСЯ", "ЗАПУСКАЕТСЯ",  "В РАБОТЕ",  "В РАБОТЕ", "ОСТАНАВЛИВАЕТСЯ", "ОСТАНАВЛИВАЕТСЯ",          "АВАРИЯ",    "АВАРИЯ",    "АВАРИЯ",          "АВАРИЯ",    "АВАРИЯ",    "АВАРИЯ"];
    	For_Ind_00X4:		ARRAY [0..16] OF DWORD:=   [    16#FFFFFFFF,       16#FF808080,    16#FFFFFFFF,           16#FFFFFF80,           16#FFFFFF80,   16#FFFFFF80,   16#FFFFFF80, 16#FF80FF80, 16#FF80FF80,       16#FFFFFF80,       16#FFFFFF80,       16#FFFF0000, 16#FFFF0000, 16#FFFF0000,       16#FFFF8080, 16#FFFF8080, 16#FFFF8080];
    	For_Ind_00X5:		ARRAY [0..16] OF DWORD:=   [    16#FFFFFFFF,       16#FF808080,    16#FFFFFFFF,           16#FFFFFFFF,           16#FFFFFFFF,   16#FF80FF80,   16#FF80FF80, 16#FF80FF80, 16#FF80FF80,       16#FF80FF80,       16#FF80FF80,       16#FFFF0000, 16#FFFF0000, 16#FFFF0000,       16#FFFF8080, 16#FFFF8080, 16#FFFF8080];
    	For_Ind_00X6:		ARRAY [0..16] OF WSTRING:= ["НЕ ОПРЕДЕЛЕНО",                "",   "ОСТАНОВЛЕН",              "ВПЕРЕД",               "НАЗАД",      "ВПЕРЕД",       "НАЗАД",    "ВПЕРЕД",     "НАЗАД",          "ВПЕРЕД",           "НАЗАД", "НЕ В ГОТОВНОСТИ",    "ВПЕРЕД",     "НАЗАД", "НЕ В ГОТОВНОСТИ",    "ВПЕРЕД",     "НАЗАД"];
    И далее общая программка, которая раньше была в 300 строк:
    Код:
    FOR Ind_01:= 1 TO Num_Of_Mec DO
    	//----------1ый индикатор----------
    	InfoX[1, Ind_01].Info_Color_A:= For_Ind_00X1[Ind_00X[Ind_01]];
    	InfoX[1, Ind_01].Info_Color_B:= For_Ind_00X2[Ind_00X[Ind_01]];
    	InfoX[1, Ind_01].Info_Text:= For_Ind_00X3[Ind_00X[Ind_01]];
    	InfoX[1, Ind_01].Text_Color_X:= 16#FF000000 + 16#00FFFF00 * TO_UDINT(Ind_00Y[Ind_01]) * TO_UDINT(Info_Color_X);
    	//----------2ой индикатор----------
    	InfoX[2, Ind_01].Info_Color_A:= For_Ind_00X4[Ind_00X[Ind_01]];
    	InfoX[2, Ind_01].Info_Color_B:= For_Ind_00X5[Ind_00X[Ind_01]];
    	InfoX[2, Ind_01].Info_Text:= For_Ind_00X6[Ind_00X[Ind_01]];
    	InfoX[2, Ind_01].Text_Color_X:= 16#FF000000 + 16#00FFFF00 * TO_UDINT(Ind_00Y[Ind_01]) * TO_UDINT(Info_Color_X);
    END_FOR
    Короче мне уже надоело оптимизировать, надо уже сдавать объект.

    PS Можно в принципе и условия состояний в массив запихнуть, и вместо 17 строк одну... Но это уже не в этом проекте

  2. #2

    По умолчанию

    IF Концевой датчик открытия в сработке OR Концевой датчик закрытия в сработке
    Задвижка = СТОП
    END
    Неприемлемо. Согласно этого условия задвижка никуда не поедет после сработки концевого, никогда и уже ни в какую сторону. Так как всегда выдается стоп. А если это только состояние, то нафиг оно вообще, так как для системы важны 2 состояния, в каком именно крайнем она стоит.

  3. #3

    По умолчанию

    Я конечно понимаю, пол часа позора, и ты кандидат наук... Как у нас говорил один профессор. Но лучше вам не упоминать нигде про четырехзначную и пр. Введите свою формулировку понятий, как выше сами уже начали. А 4хзначность это не об этой теме. Вы похоже сами запутались, или ваш наставник вас запутал.

  4. #4

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Я конечно понимаю, пол часа позора, и ты кандидат наук... Как у нас говорил один профессор. Но лучше вам не упоминать нигде про четырехзначную и пр. Введите свою формулировку понятий, как выше сами уже начали. А 4хзначность это не об этой теме. Вы похоже сами запутались, или ваш наставник вас запутал.
    Давайте введём терминологию

    ОБЪЕКТ - это например ЗАДВИЖКА (GATE) у которого может быть 4-ре состояния 0 (00) - СТОП, 1 (01) - открывается, 2 (10) - закрывается, 3 (11) - в аварии
    СОСТОЯНИЕ - то что протекает во времени. Единица информации Сет или два бита.
    СОБЫТИЕ - это срабатывание дискретного датчика или переход из одного состояния в другое. Происходит мгновенно, во времени не протекает. Единица информации Бит.

    Для любой задачи известен набор датчиков (событий), которые могут произойти.
    1. Исходя из известных событий необходимо определить СОСТОЯНИЕ объекта

    IF событие1 оr событие2
    GATE = 0
    END

    IF событие1 and событие2
    GATE = 1
    END

    IF событие2 and событие3
    GATE = 2
    END

    IF событие4 оr событие5
    GATE = 3
    END

    Следующий этап - это написание алгоритма перехода из одного состояния в другое. Благодаря возможностям языка ST, состояние может участвовать в логике как событие. То есть если задвижка закрывается, то состояние ЗАКРЫТИЕ может рассматриваться как событие GATE.2=true

    Это простейший случая для одного ОБЪЕКТА. Таких объектов может быть несколько, например 3 задвижки и в этом случае можно в алгоритме анализировать в каком состоянии находится ОБЪЕКТЫ

    IF GATE1.3=true оr GATE3.3=true
    GATE3 = 3
    END
    Последний раз редактировалось Geenerator; 06.05.2025 в 13:41.

  5. #5

    По умолчанию

    Цитата Сообщение от Geenerator Посмотреть сообщение
    Давайте введём терминологию

    ОБЪЕКТ - это например ЗАДВИЖКА (GATE) у которого может быть 4-ре состояния 0 (00) - СТОП, 1 (01) - открывается, 2 (10) - закрывается, 3 (11) - в аварии
    СОСТОЯНИЕ - то что протекает во времени. Единица информации Сет или два бита.
    СОБЫТИЕ - это срабатывание дискретного датчика или переход из одного состояния в другое. Происходит мгновенно, во времени не протекает. Единица информации Бит.

    Для любой задачи известен набор датчиков (событий), которые могут произойти.
    1. Исходя из известных событий необходимо определить СОСТОЯНИЕ объекта

    IF событие1 оr событие2
    GATE = 0
    END

    IF событие1 and событие2
    GATE = 1
    END

    IF событие2 and событие3
    GATE = 2
    END

    IF событие4 оr событие5
    GATE = 3
    END

    Следующий этап - это написание алгоритма перехода из одного состояния в другое. Благодаря возможностям языка ST, состояние может участвовать в логике как событие. То есть если задвижка закрывается, то состояние ЗАКРЫТИЕ может рассматриваться как событие GATE.2=true

    Это простейший случая для одного ОБЪЕКТА. Таких объектов может быть несколько, например 3 задвижки и в этом случае можно в алгоритме анализировать в каком состоянии находится ОБЪЕКТЫ

    IF GATE1.3=true оr GATE3.3=true
    GATE3 = 3
    END
    Дарю следующий этап - объект с событиями, состояниями, переходами и даже таймером

  6. #6

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Дарю следующий этап - объект с событиями, состояниями, переходами и даже таймером
    В целом идея понята правильно. Если вы хотите просто состояния, которые определяются событиями с различными наворотами, то это автоматы состояний. Если задействовать логические состояния, то их может быть только четыре для каждого объекта.

  7. #7

    По умолчанию

    Цитата Сообщение от Geenerator Посмотреть сообщение
    ...Если задействовать логические состояния, то их может быть только четыре для каждого объекта.
    1d60bf9s-480.jpg
    Почему четыре? В чем преимущество?

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

    По умолчанию

    из 4-х бит называется тетрада. Ну и напишите полу-тетрада

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

    По умолчанию

    Сет = ByteX and 3

    IF (Сет > 0)
    IF (Сет > 0 || Сет < 3)
    IF (Сет == 0 )
    IF (Сет == 3 )

    кто-то мешает ? И наверное правильнее не Объект, а Устройство тут. Хотя мне пофигу...

  10. #10

    По умолчанию

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

    Если следовать И - ЦЗИН, то в начале всего лежит НЕОПРЕДЕЛЁННОСТЬ, которая разделяется на две составляющие ИНЬ и ЯН

    То есть 1 и 0 обладают изначальным состоянием - философия однако.

    Изображения Изображения
    • Тип файла: jpg log.jpg (68.5 Кб, Просмотров: 2)

Страница 25 из 33 ПерваяПервая ... 152324252627 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 0
    Последнее сообщение: 08.01.2025, 19:16
  2. ПР200 на троичной логике
    от Geenerator в разделе Программируемые реле
    Ответов: 177
    Последнее сообщение: 04.07.2021, 21:14
  3. ПР200 + ПР200 (или МВ110, МУ110)
    от antonlis в разделе Программируемые реле
    Ответов: 32
    Последнее сообщение: 27.06.2017, 12:07
  4. ПР200 Пропадание связи USB - ПР200. Решено
    от PGK в разделе Программируемые реле
    Ответов: 0
    Последнее сообщение: 18.01.2017, 11:37
  5. ПР200+НПТ1 Пределы измерения ПР200 в режиме 4-20ma
    от Алексей Геннадьевич в разделе Программируемые реле
    Ответов: 13
    Последнее сообщение: 06.04.2016, 20:19

Ваши права

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