In_Da_Cher_A, я пожалуй с вами соглашусь!!! Всё это бла бла бла, трёп в курилке...
Вид для печати
Если рассматривать реализацию идеи четырёхзначной логики например в OwenLogic, то можно сделать следующие выводы:
OwenLogic активно используется двоичная логика с двумя устойчивыми состояниями 1 - истина, 0 - ложь, на основе которой реализованы логические элементы (AND, OR NOT и.д.) и функциональные элементы всевозможные триггеры (RS, SR), таймеры и т.д. - это инструменты для создания конфигурации которая требуется "пользователю".
Я предложил использовать в OwenLogic четырёхзначную логику с четырьмя устойчивыми состояниями, которые можно представить двумя битами или целым числом от 0 до 3:
Логическая интерпретация:
0 (00) - стоп
1 (01) - движение Х+
2 (10) - движение Х-
3 (11) - авария
Возможна ещё одна интерпретация
0 (00) - НЕТ
1 (01) - Истина
2 (10) - Ложь
3 (11) - Не может быть
В четырёхзначная логика полностью совместима с двоичной, в которой так же присутствуют логические элементы:
AND4 - минимум из двух чисел
OR4 - максимум из двух чисел
NOT4 - побитовая инверсия или вычитание из числа 3
11-00 = 11 (3-0=3)
11-01 = 10 (3-1=2)
11-10 = 01 (3-2=1)
11-11 = 00 (3-3=0)
И функциональные элементы - триггеры с четырьмя устойчивыми состояниями, список таких элементов можно расширить при желании.
Идея полностью рабочая и частично изложена в книге А.Б. Кметь Четырёхзначная логика. Реализация операций 1991, где показано применение чётырёхзначной логики на аппаратном уровне !!!
https://publ.lib.ru/ARCHIVES/M/''Mas...%E9.(1991).pdf
Двоичная логика характеризует "событие", например дискретный датчик сработал - это означает что событие произошло - 1, если датчик не сработал - 0
Четырёхзначная логика характеризует "состояние", которое может включать в себя несколько событий (входных переменных) объединённых логическими элементами.
Переход из одного состояния в другое возможно как на основе "взаимодействия" событий и двоичных логических элементов AND, OR NOT, так и на основе "взаимодействия" состояний и четырёхзначных логических элементов AND4, OR4 NOT4
Где может использоваться четырёхзначная логика ?
Да где хотите там и используйте, на что хватит фантазии !!!
Сохранил в папочку OwenLogic_Курево4х :)
причём здесь ОВЕН ЛОджик?Цитата:
Я предложил
двухзначная логика отлично характеризует состояние, которое также может включать в себя несколько событий (входных переменных) объединённых логическими элементами.Цитата:
Четырёхзначная логика характеризует "состояние", которое может включать в себя несколько событий (входных переменных) объединённых логическими элементами.
и дальше то что?Цитата:
Переход из одного состояния в другое возможно как на основе "взаимодействия" событий и двоичных логических элементов AND, OR NOT, так и на основе "взаимодействия" состояний и четырёхзначных логических элементов AND4, OR4 NOT4
и незачем так орать. Если у вас нервные срывы от обиды на непонимание вашего гения, то вам дали совет -Цитата:
Где может использоваться четырёхзначная логика ?
Да где хотите там и используйте, на что хватит фантазии !!!
пока что кроме какой-то бла бла бла бессвязных картинок в пейнте вы не родили ничего конкретногоЦитата:
жду не дождусь примеров "плохого" двоичного так сказать и "оптимизированного" кода на "4х", можно на примере несчастного станка (кстати, сколько станков автоматизировал автор?)
и это печально
А что Вы хотели, если без аппаратной поддержки смысл такой логики ограничится чисто академическим, в смысле, на практике использовать не получится в принципе!
Весь смысл поморочить голову себе и другим, всё!
И, троичная логика предпочтительна перед четверичной, это я так думаю, ранее уже писал почему!
1. OwenLogic - это среда программирования ПР200, как заявлено в теме, мы находимся на форме ОВЕН и обсуждаем оборудование компании ОВЕН.
2. Я в теме приводил пример с "Машиной состояний" для программирования на верхнем уровне и аналогией в виде "логической машины состояний" для программирования контроллеров - если аналогия не понятна, то я бессилен.
3. Вот собственно и всё - есть такая "логика" хотите - пользуйте, не хотите - проходите мимо.
4. Вы мне ничего не должны и я вам ничего не должен, я предложил обсуждать примеры, но обсуждения не получается. Выдавать вам я ничего не собираюсь.
5. Это ваше мнение, я его услышал !!!
Вы так на предзащите оппонента это скажите: "Вы мне ничего не должны и я вам ничего не должен, я предложил обсуждать примеры, но обсуждения не получается. Выдавать вам я ничего не собираюсь."
Еще раз.
Оператор CASE придуман в 60-х годах, в контроллерах он появился сразу, в ПР, как в них добавили язык ST/
Откройте любой пример для ПЛК1хх или 2хх по работе с файлами, опрос через библиотеки и т.д там все есть и машина состояний и сколько хотителогика.
Если вы начали поднимать такую тему, то надо было сначала изучить вопрос и понять, что здесь это используется с появлением первых ПЛК еще в 2000х годах.
я вам в теме привел пример, когда ваша 4х логика улетает в пустоту. При возникновении Аварийной ситуации вы теряете весь смысл - сохранения событий, предшествовавшей той самой аварии - это раз.
Два - что дальнейшая логика будет делать? метаться между 00 и 11 значениями?, потому что если она сбросит в 00 - то это штатный останов, а ведь была авария (11)
так ваша логическая теория работает только в ОВЕН Лоджик? то есть вашу логику нельзя применить в другом языке программирования? с другим ПО? с дургим контроллером?Цитата:
. OwenLogic - это среда программирования ПР200, как заявлено в теме, мы находимся на форме ОВЕН и обсуждаем оборудование компании ОВЕН.
так "верхний уровень", или ОВЕН лоджик?Цитата:
2. Я в теме приводил пример с "Машиной состояний" для программирования на верхнем уровне и аналогией в виде "логической машины состояний" для программирования контроллеров - если аналогия не понятна, то я бессилен.
так вам сказали - напишите СВОЮ программу на своей логике в ОВЕН Лоджике, если вы зафиксировались именно на этом софте
Нынче времена другие, чтобы за тобой шли, приходится приплачивать :)
Я уже приводил пример строения четырёхзначной логики... Она структурно состоит из двухзначной - состояния 00 - 11 (аналогия 0 -1) и трёхзначной 01 00 10 (аналогия +1 0 -1)
Состояние 00 - СТОП, это так же состояние ГОТОВ к работе. Состояние 11 - АВАРИЯ, это не ГОТОВ к работе. Это противоположные состояния.
Прочтите анимательне, о чем я, когда авария.
Вы состоянием авария трёте события направления движения . Зачем тогда этот цирк?
melky, вы не правильно поняли...
Есть события - Кодируется одним битом !!! например сработал датчик.
Есть состояния - Кодируется двумя битами !!! переход от одного состояния другое возможен, когда сработали например, несколько датчиков по условию AND.
Бит события не участвует в битах состояния напрямую, это разные логические уровни
Почитайте пожалуйста про "Машину состояний"
Вложение 83525
Буквально сегодня правил свой код, оптимизировал по размеру... У меня там для реверсивного механизма 17 состояний, каждое из которых это совокупность до 10 событий... Какая 4х значная, мне мало 4х значений, хоть режте.
Как дальше использовать эти 4 состояния. Как мне применить состояние авария, например, к необходимости запустить этот механизм в противоположную сторону, где у меня как таковой аварии то нет. Но авария у вас общая.
Я про что и говорю, что 2-х битов часто недостаточно, по этому эта логика неработоспособна, и скорее всего по этому и не выжила в борьбе.
Есть 0 и 1 в примитиве, и есть байты, слова, двойные слова, в которые эти примитивы впихиваются как за здрасьте в любых комбинациях. Так зачем ограничивать системы 2-мя битами, четвертое состояние которых превращает все в утиль?
МихаилГл Мы ещё забыли, когда бывает так, что в одну машину состояний на одном из шагов вложена другая машина состояний!!!
Я пока не представляю о чём вы говорите, но попытаюсь показать на своём примере...
Берём металлообрабатывающий станок у которого возможны движения по всем 3-м измерениям. За перемещение по оси X, Y, Z отвечает свой двигатель.
Если двигатель крутиться по часовой стрелке, то ось едет в сторону Х+, если двигатель крутиться против часовой стрелке, то ось едет в сторону Х-. и так далее с остальными осями.
У каждой из осей будут свои четыре состояния 00 01 10 11. Другими словами, есть "объект" у которого выделяются 4-ре логических состояния. Затем "объекты" могут изменять свои состояние в зависимости от событий относящихся к данному "объекту", либо изменять своё состояние в зависимости от состояния другого "объекта"
Например, ось Х встала по аварии "частотника", это событие оси Х - её состояние переходит в (11), при этом оси Y, Z переходят в состояние СТОП (00), т.к. объект ось Х в - (11)
Вложение 83532
Вам же уже 100500 раз сказали, дальше свою логику начните прикручивать, не зацикливайтесь только на состоянии оси и двигателя. И у вас все просыпется к чертям...
Так вот именно, что вы решили маааааленький кусочек логики, не думая о том, что будет дальше, и как, ограничившись этой логикой, будете строить дальнейшие алгоритмы.
Я в вашей же логике показал на элементарном примере, что свалившись в ошибку, вы тут же теряете два состояния. Вы не ответили на вопрос, как вы их скопируете для остальных?
То есть банально, алгоритм далее должен знать при каком направлении движения произошла ошибка?
И ещё момент, вы не учитываете архитектуру ПР200, Тут на каждые ваши 2 бита вы будете тратить 4 байта, спрашивается где плюшки? :)
Чёрт возьми, каналья! Да ГДЕ ЖЕ показал?! Где?! Гдеее?!
ВОТ пример описания моей технологии и там же пример, как я её использую: https://cs-cs.net/crm-social-content-manage
Мои примеры реальны. Я прям показываю и говорю: "Вот, как это работает, вот что получается".
А тут одни картинки и опсания осей станка. Абстрактного. И даже о том, что ось должна иметь рампу разгона и торможения - забыли.
А уж "ться" это - это просто прям садись, да! Диссертацию он пишет. Двигатель делает крутиться.
Так я же вроде уже писал что в реальности это невозможно использовать в принципе из-за отсутствия аппаратной поддержки, в смысле, не надо от него требовать невозможного!
Это же аналогично системам счисления, двоичная, восьмеричная, десятичная, шестнадцатеричная, на практике можно использовать любую, разницы в вычислениях не будет, но без аппаратной поддержки использовать любую систему невозможно в принципе, короче, надеюсь что все это понимают, в смысле, тогда вопрос по практическому использованию будет закрыт автоматически даже не открывшись!
Я сейчас не понимаю в чём вопрос...
Есть входные переменные (события), которые логически объединяются и формируют (состояние), и это не просто состояния, а логические состояния
IF DI1=1 or DI2=1 or (DI3=0 and DI4=0) Then
VAR1=0 //состояние (стоп)
END
IF DI5=1 or DI6=1 or (DI7=0 and DI8=0) Then
VAR1=1 //состояние (движение +)
END
IF DI1=1 and DI2=1 Then
VAR1=2 //состояние (движение -)
END
IF DI5=1 and DI6=1 Then
VAR1=3 //состояние (авария)
END
По такому же принципу можно сформировать дополнительные условия перехода из одного состояния в другое
1. состояния могут изменяться в зависимости от входных сигналов (событий)
2. состояния могут изменяться в зависимости от изменения состояния других "объектов"
Состояния могут взаимодействовать как через логические функции AND4, OR4, NOT4, так и через операторы IF, CASE и т.д.
В результате получается логика более высокого уровня, которая так же может быть реализована аппаратно и имеет свою математику !
Логические законы работают на уровне состояний !!!
Можно не заморачиваться и создать автоматы состояний, которых может быть сколько угодно, но связи логической между состояниями не будет!
Сергей0308, с реализацией аппаратной поддержки думаю вопросов не возникнет, весь вопрос целесообразности.
А целесообразность приходит с развитием Искусственного интеллекта и необходимостью общения с ним.
В место ответа на вопрос 1- да, 0 - нет, компьютер может ответить:
0 - на ваш вопрос НЕТ ответа
1- ответ на ваш вопрос ПОЛОЖИТЕЛЬНЫЙ
2- ответ на ваш вопрос ОТРИЦАТЕЛЬНЫЙ
3 - такого вопроса не может быть
И такая болтовня на уровне битов...
диссертацию так написали или нет?
в прошлый раз этот бред надоел всем на 17 странице
Должен признать, что в OwenLogic на данный момент недостаточно возможностей для полноценной реализации алгоритма на четырёхзначной логике, поэтому приведу пример с Открытием/Закрытием ворот в языке программирования ЧПУ Балт-Систем
В данном языке ST переменные уже объявлены и представляют собой «пакеты» (I входа , U-выхода) для которых выделены рабочие зоны. У сигнала U00K00 две составляющие U00 и K00 и память заполняется следующим образом
U00K00, U00K01, U00K02 U00K03, U00K04, U00K05, … U00K31 (U00 – 32 шт.)
U01K00, U01K01, U01K02 U01K03, U01K04, U01K05, … U01K31 (U01 – 32 шт.)
На основе двоичных переменных формируются переменные, состоящие из 8 бит или СЛОВА (Word) с которыми можно работать как с битами 1111 1111 и как с числами 255
W00K00, W00K01, W00K02, W00K03 (W00 – 4 шт. По 8 бит.)
W01K00, W01K01, W01K02, W01K03 (W01 – 4 шт. По 8 бит.)
Логические двоичные операции записываются символами И – (*) ИЛИ – (+) НЕ – (/)
Код:; Входные сигналы
; I00A00 – Кнопка ворота открыть
; I00A01 – Кнопка ворота закрыть
; I00A02 – Кнопка ворота стоп
; I00A03 – Датчик препятствия
; I00A04 – Конечник открыто
; I00A05 – Конечник закрыто
; Выходные сигналы
; U00A00 – Ворота открыть
; U00A01 – Ворота закрыть
; U00A02 – Лампа Стоп
; U00A03 – Лампа Открытие
; U00A04 – Лампа Закрытие
; U00A05 – Лампа Авария
; -------- формирование состояний на основе событий -----------------
; Если (Кн. ворота стоп+ Датчик препятствия + Конечник открыто + Конечник закрыто)
DOF: I00A02 + I00A03 + I00A04 + I00A05
W20K0=0 ; состояние СТОП
ENDF
; Если (Кн. ворота открыть + Ворота отрыть)
DOF: I00A00 + U00A00
W20K0=1 ; состояние Открытие ворот
ENDF
; Если (Кн. ворота закрыть + Ворота закрыть)
DOF: I00A01 + U00A01
W20K0=2 ; состояние Закрытие ворот
ENDF
; Если (Ворота открыть * Ворота закрыть)
DOF: U00A00 * U00A01
W20K0=3 ; состояние Авария
ENDF
; --------------- Алгоритм -------------------
; Ворота открыть = Кн. ворота открыть + Ворота открыть * /Состояние СТОП * /Состояние Авария
U00A00 = (I00A00 + U00A00) * /[W20K0=0] * /[W20K0=3]
; Ворота закрыть = Кн. ворота закрыть + Ворота закрыть * /Состояние СТОП * /Состояние Авария
U00A01 = (I00A01 + U00A01) * /[W20K0=0] * /[W20K0=3]
; Лампа Стоп
U00A02 = [W20K0=0]
; Лампа Открытие
U00A03 = [W20K0=1]
; Лампа Закрытие
U00A04 = [W20K0=2]
; Лампа Авария
U00A05 = [W20K0=3]
А там нельзя этот ужас U00A00 переименовыать на понятные человеку переменные типа MotorOpen, MotorClose?
Всё что мне нужно в OwenLogic, это механизм который реализован у Балт Систем -
Когда есть набор битов, которые я могу использовать и как биты и как слова. Может есть идеи ???
Логические элементы четырёхзначной логики, совпадают с логическими элементами двухзначной логики если производить операции над младшим и старшим битом.
поддержу, оставайтесь там, где вам дышать легче со своей 4-х логикой. Не мучайте себя и разработчиков ОЛ.
capzap, да это именно то что надо !!! Через механизм CASE красиво реализовано.
Я ещё раз повторюсь, при создании "автомата состояний", таких состояний может быть сколько угодно, если это ЛОГИЧЕСКИЕ состояния, то их может быть только четыре.
Следующий шаг, это когда есть несколько объектов с четырьмя возможными состояниями и они в программе начинают логически взаимодействовать.
Например, система ворот торгового центра, когда первые ворота не могут закрыться, пока вторые открываются.
В 32-х битной переменной, логических состояний может быть 32 :)
1exan, не может быть столько. Если принять во внимание передачу переменных дальше, то даже на примере 4х показал, что последнее, 4-ое состояние затирает предыдущие, и дальнейшие блоки потребуют дополнительной логики. И весь смысл идеи сразу разлетается в тар-тарары.
Да, уж, очень странные подсчёты, такое впечатление что в школу никто не ходил, короче, количество состояний будет вы не поверите: "18*446*744*073*709*551*616", это 4 в степени 32, в смысле, надо правильно считать, логика не двоичная, а четверичная и будут называться не битами, а квартами или чем-то подобным! Вот товарищ, без пяти минут академик, этим увлекается, в смысле, уточнит, если что! Это очень важно, в смысле, определится с терминами, чтобы тебя понимали! Печально, что товарищ даже этого(самого элементарного) не понимает, мне так кажется!