Так вот именно, что вы решили маааааленький кусочек логики, не думая о том, что будет дальше, и как, ограничившись этой логикой, будете строить дальнейшие алгоритмы.
Я в вашей же логике показал на элементарном примере, что свалившись в ошибку, вы тут же теряете два состояния. Вы не ответили на вопрос, как вы их скопируете для остальных?
То есть банально, алгоритм далее должен знать при каком направлении движения произошла ошибка?
И ещё момент, вы не учитываете архитектуру ПР200, Тут на каждые ваши 2 бита вы будете тратить 4 байта, спрашивается где плюшки?![]()
Последний раз редактировалось melky; 28.04.2025 в 19:17.
Чёрт возьми, каналья! Да ГДЕ ЖЕ показал?! Где?! Гдеее?!
ВОТ пример описания моей технологии и там же пример, как я её использую: https://cs-cs.net/crm-social-content-manage
Мои примеры реальны. Я прям показываю и говорю: "Вот, как это работает, вот что получается".
А тут одни картинки и опсания осей станка. Абстрактного. И даже о том, что ось должна иметь рампу разгона и торможения - забыли.
А уж "ться" это - это просто прям садись, да! Диссертацию он пишет. Двигатель делает крутиться.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
Так я же вроде уже писал что в реальности это невозможно использовать в принципе из-за отсутствия аппаратной поддержки, в смысле, не надо от него требовать невозможного!
Это же аналогично системам счисления, двоичная, восьмеричная, десятичная, шестнадцатеричная, на практике можно использовать любую, разницы в вычислениях не будет, но без аппаратной поддержки использовать любую систему невозможно в принципе, короче, надеюсь что все это понимают, в смысле, тогда вопрос по практическому использованию будет закрыт автоматически даже не открывшись!
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Я сейчас не понимаю в чём вопрос...
Есть входные переменные (события), которые логически объединяются и формируют (состояние), и это не просто состояния, а логические состояния
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]
Последний раз редактировалось Geenerator; 30.04.2025 в 13:38.
А там нельзя этот ужас U00A00 переименовыать на понятные человеку переменные типа MotorOpen, MotorClose?
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab