melky, я показал инструмент в виде четырёхзначной логики, показал как я её использую для решения своих задач. У вас может быть своё видение вопроса, я не против!!!
Вид для печати
Так вот именно, что вы решили маааааленький кусочек логики, не думая о том, что будет дальше, и как, ограничившись этой логикой, будете строить дальнейшие алгоритмы.
Я в вашей же логике показал на элементарном примере, что свалившись в ошибку, вы тут же теряете два состояния. Вы не ответили на вопрос, как вы их скопируете для остальных?
То есть банально, алгоритм далее должен знать при каком направлении движения произошла ошибка?
И ещё момент, вы не учитываете архитектуру ПР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?