ОСРВ WINDOWS-2

Управление шаговым двигателем из Питона

Так, светодиоды и Cом порт это конечно хорошо, но хотелось бы чего-нибудь посерьезнее-). Оптимальным вариантом для обработки данных в реальном времени был бы вентильный двигатель, но — вентильного двигателя у меня под руками нет, поэтому придется пилить шаговый-) Шаговый двигатель конечно не так нагляден — обратная связь для вращения в противоположность вентильному не нужна, разве что для управления в реальном времени, но управление в реальном времени — дело будущего. Пока к сожалению придется ограничиться чисто зрелищной стороной вопроса — осциллограф из Китая не приехал пока-). И хотя разобраться что где криво работает пока нельзя-(, но в данном случае главное это демонстрация быстродействия питонского приложения в реальном времени.
Итак, схема управления — от лпт порта четыре проводка(через резисторы 3кОм) идут на четыре ключа(затворы irfz44n) стоки транзисторов нагружены на обмотки двигателя присоединенные в свою очередь к «+» питания, обмотки шунтируются обратно включенными диодами (кд212 — катоды к плюсу питания). Выглядит плата с ключами так:


со стороны диодов:

двигатель MIKROMA FB20-4-1B, говорят стоял в старом польском принтере D 100. Семь выводов, два серые — отдельная катушка, видимо для организации обратной связи, остальные пять рабочие, черный у них общий(+ питания). Коммутируем на землю поочередно жёлтый, белый, красный, коричневый — вращается по часовой стрелке – в обратном порядке – против.


схемка двигателя —

Так, ну теперь софт-)Выглядит все так:

Два окошка в одном квант времени- минимальная длительность в которой все меряется Min time (q__), в другом время через которое происходит шаг двигателя — Step period(odin_shag). Соответственно радиобаттоны задают режим разбиения на половины, трети и четверти поворота от величины исходного шага, чекбокс Revers – задает реверс. При повороте на часть шага напряжение подается не на одну катушку как в случае единичного шага, а на две соседние, эмуляция разных значений напряжения(тока) достигается ШИМ-модуляцией, ну в общем это все хорошо известно. Так как тут пока не принципиальна точность поворота, то в функции ШИМ меняется просто скважность в зависимости от того какой режим выбран. Допустим, в режиме ½ шага сначала все время включена первая катушка скважность один, потом включены первая и вторая со скважностями ШИМ два, и потом вторая тоже со скважностью один. Период ШИМ(period_shag) тридцать минимальных времен(q__), что составляет 1.5 мс. При установке чекбокса «Tune» включается режим непрерывной подачи импульсно модулированного напряжения на первую и вторую катушку. Соответственно изменение скважности задается слайдерами, ну это для отладки — можно посмотреть какие задавать скважности для поворота на тот или иной угол.
Функция ШИМ:
def Shim(self,a_,b_, odin_shag,dlit1_,dlit2_,period_shag,q__):
# a_,b_ - v bitah vyhod
# dlit1,2  - dlit imp sek
# odin_shag kol povt za shag shim imp
# period_shag dlit perioda shim v q__ sek
        o_shag=odin_shag
        while(o_shag):
            
            p.Out32(888, a_ | b_)
            flag1=1
            flag2=1
            t1=time.clock()            
# shim odin dvuhkanaln odin period
            period = period_shag
            while(period) :
                time.sleep(q__)    
                t2=time.clock()
                if ((t2-t1)>dlit1_) and flag1 == 1 :
                    port=p.Inp32(888)
                    p.Out32(888, (~a_)& port)
                    flag1=0                   
                else :
                    pass
                if ((t2-t1)>dlit2_) and  flag2 ==1 :
                    port=p.Inp32(888)
                    p.Out32(888, (~b_)& port)
                    flag2=0
                else :
                    pass
                period = period-1
            o_shag=o_shag-1

Что значат аргументы думаю понятно из комментариев. Да, ну и так как тут есть и считывание и вывод(всеми любимые Inp32() и Out32()), то все-таки ситуация эквивалентна вентильному приводу-) Функция ШИМ(кроме умолчального одношагового режима) вызывается из цикла, который в свою очередь крутится в отдельном потоке. Для каждого режима запускается свой поток. В цикле происходит перебор пар номеров катушек, соответственно с разными значениями пар скважностей ШИМов. В зависимости от чек бокса «Revers» перебор происходит в одну или другую сторону. Вот на всякий случай типичный вызов функции ШИМ-

self.Shim(1,2, (timer//(period_shag*q__)),dlit1*0.33,dlit2*0.67,period_shag,q__)

1,2 – биты в регистре вывода(катушка 1 и 2)
(timer//(period_shag*q__)) – количество шим периодов за время шага
dlit1*0.33,dlit2*0.67 – длительности импульсов шим по одному и по второму каналу
period_shag – количество длительностей q__ в одном шим периоде.
q__ -минимальная длительность.
Ну и что получилось –отдельно прошу извинить за качество видео снимал телефоном с рук-((

Крутится довольно бодро.
А вот это попытка поуправлять заполнением, чтобы плавно поповорачивать двигатель,

нда… хорошо он плюхается на пол шага, остальное не особо. Ну ладно, приедет осциллограф можно будет посмотреть предметно-), а пока — исходник прилагается-))

P.S. Пока ехал осциллограф удалось выяснить интересную вещь, оказывается питонская функция time.sleep(q__), когда ее аргумент становится меньше 0.001 секунды, начинает работать некорректно — засыпает на меньше, и из-за этого не получалось при маленьких значениях кванта времени точно задавать период шага. Поэтому пришлось написать собственную функцию задержки у которой аргумент может быть хоть микросекунды:
def d_time(self,q__) :
        p1=time.clock()
        p2=time.clock()
        while(p2-p1<q__) :
            p2=time.clock()   

с этой получается вполне приличный более высокочастотный ШИМ:



Исходник с возможностью задания меньшего кванта времени прилагается-)
  • +1
  • 19 ноября 2016, 10:19
  • basil
  • 2
Файлы в топике: lpt_dvig_test.zip, lpt_dvig_test_d.zip

Комментарии (63)

RSS свернуть / развернуть
Не, я конечно позеленил за старания, и вообще молодец товарищ.
НО!
LPT порт! Уважаемый, уже подходит к концу 2е десятилетие 21го века:)
И к стати — кидать сигналы с LPT порта напрямую на транзисторы, даже через резисторы ой как не кошерно. Кошерно поставить оптопары, или хотя бы какую логику, чисто ради защиты.
0
Спасибо-)
Тут смысл не в параллельном порте, тоже самое можно легко устроить и на последовательном-), а последовательный через USB сдохнет судя по всему еще не скоро-) А вообще, основной смысл в демонстрации быстрости Питона и его пригодности вместе с виндой для всевозможных реалтаймных лабораторных применений. Причем бесплатных и с низким порогом вхождения по железу. И еще конечно свою роль сыграло сомнение count_enable в комментах к прошлой статье-что под питоном двигатель не пойдет-)) Пришлось упереться-)))
0
Да, и что касается защиты — что правда то правда, из-за неаккуратности при отладке один пин спалил, ну LPT этим славен — вылетает на ура-)
0
а последовательный через USB сдохнет судя по всему еще не скоро-)
Только для подобнных фокусов COM на USB не годится.
ну LPT этим славен — вылетает на ура-)
В принципе, можно на материнке мультик перепаять. Это несложно. Главное не палить LPT на VIA'шных платах, где мультик интегрирован в юг.
0
Ну хотя и битбанг и в самом деле не прокатит, я в свое время сделал управлялку через уарт как раз из протеуса-) В принципе она работала, но страшно тормозил протеус как выяснилось-))) мультик это ээ… мултиплексор? Спасибо за идею даже вголову не приходило, надо посмотреть-)
0
MultiIO, 128-ногий чип, обычно ошивающийся около южного моста, реализует COM, LPT, FDD, PS/2, HWM, etc. Чаще всего встречаются IT87xx. В принципе, сдохнуть также может буфер LPT, если он есть (для COM точно драйверы стоят, а вот насчет LPT не уверен).
+1
Вот спасибо, какая прелесть не знал, Vga — спасибо за уточнение очень полезно-)
0
Демонстрация удалась. Ни питон, ни винда к этому не пригодны.

Знаете что такое реалтайм? Это не дёргано покрутить моторчиком на черепашьей скорости, а иметь обратную связь с гарантированым временем отзыва. Сделайте балансировку обратного маятника (одноколёсный самокат) на питоне. Вот тогда и оцените «быстрость» и реалтаймовость. Или хотя бы посидите в интернете с того самого компьютера который что-то там крутит. С обновлением антивируса или поиском по диску. Доказывать что Питон быстр всё равно что доказывать что соя ничуть не хуже мяса. Ну не для скорости его делали. И винду не для низкоуровневой работы с портами делали. За время, потраченное на этот изврат можно было бы взять копеечную ардуину, залить готовый скетч (задача стандартная) и получить устойчивое проверенное решение, работающее годами. Я понимаю делать такое по приколу как хобби, но на работе это пустая трата денег работодателя.
0
Скорости-то питону как раз хватит, я полагаю (впрочем, если он подвержен «заморозке мира» сборщиком мусора — то это таки поставит крест на вопросе). Проблема в винде, которая не позволит сделать реалтайм независимо от языка программирования — хоть в машкодах пиши.
0
При достаточной упоротости можно сделать питон-машину на голом железе без ОС (был такой проект лет 7 назад на плис). Но опять-таки, что можно назвать скоростью? Рачительный хозяин будет делать ШИМ аппаратным блоком а не программным циклом даже на ассемблере. Это даже не искусство ради искусства, а так, поедание супа дрелью или полировка ботинок соковыжималкой.
0
Вопрос скорости, конечно, зависит от задачи. Но, полагаю, для большинства типичных реалтаймовых задач питона на современном компьютере по производительности хватит.
Я к тому, что не в производительности проблема, и не в питоне, а в винде.
0
«Реальное Время» вы в чём измеряете?
любят тут писать штампами без конкретики:
— реальное время промышленного контроллера от миллисекунд до нескольких секунд… зависит от требуемого времени реальной реакции на событие
— реальное время микропроцессора, стоящего в модуле ввода/вывода микросекунды/десятки миллисекунд — почему так долго? Фильтруют дребезг и помехи, или долго оцифровывают аналоговые входы гася 50 Гц наводки…
— реальное время микропроцессора, стоящего в частотном преобразователе — наосекунды/микросекунды… обсчёт напряжения и токов для выдачи управляющих сигналов ключам по сложным алгоритмам векторного бездатчикового управления
— ардуина на атмеге реально работает в наносекундах :)
0
Система реального времени — это система, где гарантировано время отклика.
0
Сколько точно время отклика? Термин «Система реального времени» часто используется в трепологических целях теми кто в этом не разбирается :(
По ПУЭ для потребителей 2-ой категории электроснабжения должно гарантироватьтся автоматическое подключение резервного источника питания с момента отключения основного источника питания… реальное время = время прибытия ремонтной бригады для переключения рубильника или секционного выключателя :)
1.2.20. Электроприемники второй категории в нормальных режимах должны обеспечиваться электроэнергией от двух независимых взаимно резервирующих источников питания.
Для электроприемников второй категории при нарушении электроснабжения от одного из источников питания допустимы перерывы электроснабжения на время, необходимое для включения резервного питания действиями дежурного персонала или выездной оперативной бригады.
0
Зависит от требований конкретной системы. Но винда с ее непредсказуемыми задержками не будет гарантировать удовлетворения требований, даже если требуемое время отклика измеряется минутами.
0
На фотке с грибным супом Винда, гарантирующая требуемое время отклика…
так же как и на панели оператора тоже Винда с гарантированным временем обновления 100 миллисекунд… до часов
0
Я в курсе, что CE заявляется M$ как RTOS, хотя и не нашел с полпинка RT-спек. Но в топике речь идет о десктопной винде.
0
Я в курсе, что Сименс делает чисто программные промышленные контроллеры SIMATIC S7 Software Controller на не/обычном компе на обычной зверевой Винде 7 (до этого на ХР) под торговыми марками WinAC /RTX и его современный портальный вариант CPU1505s/CPU1507s…

для того чтобы уколоть придётся потырнетить…
но у меня же ответ на укол есть: есть разные программно-аппаратные методы обеспечения нужной «реально-временной» функциональности в Винде… у каждого метода есть свои + и -.
У меня графировщик через ардуину тоже в реальном времени работает… правда я не ставил эксперимент как отразится форматирование жёсткого диска с виндой на реалтаймовость гравёра.
0
од торговыми марками WinAC /RTX и его современный портальный вариант CPU1505s/CPU1507s…
Это случаем не то, на чем stuxnet резвился?
но у меня же ответ на укол есть: есть разные программно-аппаратные методы обеспечения нужной «реально-временной» функциональности в Винде…
Оторвать все кроме ядра и запустить единственный процесс, чтобы планировщик не отвлекался? В обычном окружении даже приоритет realtime не спасает, проверено.
У меня графировщик через ардуину тоже в реальном времени работает…
А зачем ему ардуино, в таком случае? Управлял бы прямо из винды, если она такая реалтаймовая.
правда я не ставил эксперимент как отразится форматирование жёсткого диска с виндой на реалтаймовость гравёра.
Никак. А вот если загнать в своппинг — результаты будут интереснее.
0
У меня графировщик через ардуину тоже в реальном времени работает…
А зачем ему ардуино, в таком случае? Управлял бы прямо из винды, если она такая реалтаймовая.
Про Mach3 на LPT порту почитай
Программное обеспечение ArtSoft Mach3 предназначена для управления ЧПУ станком. Программа устанавливается на IBM совместимый персональный компьютер соединенный с блоком управления. Mach3 была разработана американскими программистами, как для профессионального так и для любительского использования, поэтому она является наиболее распространенным программным обеспечением для станков с ЧПУ в мире. С помощью Mach3 возможно управление следующими типами станков: токарными, фрезерными, маршрутизаторами, лазерными и плазменными плоттерами, гравировальными и зубонарезными. Для того, чтобы работать с программой Mach3, нужен персональный компьютер со следующими параметрами:
• операционная система Windows 2000/XP/Vista/Seven;
• процессор с частотой 1ГГц;
• оперативная память ОЗУ 512Мб;
• видеокарта с памятью 64Мб;
• свободное место на жестком диске 1Гб;
• один параллельный LPT-порт;
• минимум два последовательных интерфейса USB.
0
Про Mach3 на LPT порту почитай
Да, я в курсе. Но у него задача не особо реалтаймовая — двигатели шаговые, драйвера аппаратные, если у очередного STEP съедет тайминг — ничего страшного не произойдет. Аналогично с LPT-адаптерами для синхронных протоколов типа AVR ISP — их вполне устраивает битбанг ручками (теми, что из плеч растут, методом щелкания тумблерами).

Как только тайминги становятся критичными — например, битбанговый захват асинхронного сигнала — как сразу «реалтайм на винде» (уточнение — обычной десктопной инсталляции) становится ненадежным. Китайцы, кстати, тоже сочли, что лучше поставить AT89C2051 в LPT-GBA адаптер, нежели пытаться делать софтовый UART на LPT.
0
У меня знакомый дяденька на работе запускал свою программку(квалифицированно написанную -))) в режиме ядра, и получал гарантированно 30 фпс с реальтаймной обработкой тепловой картинки, так вот по его мнению винда вполне себе осрв.
0
И какое время отклика гарантировала его программа? Как на оное влиял подвисающий на пару секунд в DPC (или вообще в прерывании) драйвер или жестокий своппинг? Как оно вело себя при большом количестве IRQ (некоторые сетевые карты способны выдавать тысячи IRQ в секунду и отжирать оными весьма солидный кусок процессорного времени)?
+1
P.S. Ну и в режиме ядра все же можно сделать несколько больше, чем в юзерспейсе. Но это уже не «дешевый и простой способ».
0
К сожалению ничего не знаю — мужик уволился-(
0
Видимо придется в следующий раз делать ШИМ регулятор, может тогда всеобщий скепсис рассеется-))
0
Вместе с дымом ключа)
0
То же самое говорил count_enable про двигатель, хорошо что двигатель об этом не знал))
0
может тогда всеобщий скепсис рассеется-))

Даже если у Вас и получится — это не значит, что Win станет ОСРВ. В данной ОС нет штатных механизмов обеспечения гарантий времени отклика и т. д. Вы можете получить очень малое время отклика, но это не значит, что ОСРВ. Как и на оборот, ОСРВ может давать большое время отклика (и всячески внешне «тормозить»), но при этом являться ОСРВ.

У меня знакомый дяденька на работе запускал свою программку(квалифицированно написанную -))) в режиме ядра

А я под ДОС писал свой планировщик задач в защищенном режиме, значит ДОС — многозадачная стема с поддержкой PM :)
0
Послушайте, никто не думает что Windows осрв другое дело, что в качестве лабораторного инструмента она может вести себя как осрв, в частности давать и отклик достаточно быстрый. Другое дело что гарантированным он будет или нет вопрос открытый. Для лабораторной деятельности этого на мой взгляд может быть(в зависимости от задачи конечно ) вполне достаточно.
0
Видимо ты забыл про тормозящие автонавигаторы на Win CE.
К сожелению тут или мультизадачность или реальное время.
А сименс тут не правильный пример. Там комп управляет системой не напрямую а через буфер в виде контроллеров. И комп пофакту это интерфейс всей системы. Он используется для контроля состояния и настройки а не организации работы в реальном времени. И задержка во времени от изменения пераметра до передачи её в контроллер и выполнения там есть. Как и задержка обработки обратной связи. (я это своими глазами видел на прокатных станах и агрегате подготовки рулонов). А то что требует обработки в реальном времени сделано на контроллерах с командами по шине данных или локальной сети и там нет многозадачности.

Так что это разные инструменты для разных задач. Автора статьи предупредили о возможных проблемах. А вот как он их избежит это гораздо более интересная тема.
0
Вы оба не поняли — на обычном компе под обычной Виндой запускается обычная программа «Программный Эмулятор ПЛК S7-300/1500», который выполняет написанную на Степ7 программу управления внешними устройствами, через обычные интерфейсы Эзернет или специализированные RS-485.
Есть и более компактные решения промышленного исполнения с Виндой :)
s7detali.narod.ru/S7_315/S7_MEC.html
Intel Core Duo 1.2 GHz microprocessor, 1 GB RAM, 2 GB Flash Disk,
Interfaces: 2x USB 2.0, 2x PROFINET IO, 1x PROFINET (Fast Ethernet with PROFINET basic services)
1x MMC slot
512 Kbyte retentive memory
Operating system: Windows XP embedded (SP2 FP2007),
WinAC RTX 2008 (preinstalled)

по написанному понятно вы многого не знаете, как и все любители заднеприводных терминов :(
Помимо многозадачности на одном многоядерном процессоре Интел обычного компа можно даже организовать многоОСность… на аппаратном процессорном уровне… и каждая ОСь будет иметь при этом многозадачность :)

Видимо ты забыл про тормозящие автонавигаторы на Win CE.
У меня наладонник 2003-го года тормозит… StrongARM от Интела...200 МГц… такой же StrongARM от Интела в ПЛК на фотке с супом на ВыньЦЕ летает…
и панель операторана ВыньЦЕ на фотке выше с АМД486 летает :)
Тормоз иногда связан с конкретной реализацией конкретного устройства и конкретного программного обеспечения… в том числе медленной графики.
0
Хм, а работает-то оно не под виндой, а под RTX. Она работает вместе с виндой и даже использует ее HAL, да — но и только, в остальном это отдельная ОС. Так что десктопная винда по прежнему остается не-реалтаймовой ОС.
по написанному понятно вы многого не знаете, как и все любители заднеприводных терминов :(
Ты слишком озабочен заднеприводными терминами. Это напоминает анекдот.
0
любители заднеприводных терминов :(
Алсо, мне вот интересно — что ты называешь заднеприводными терминами? Приведи пример. Только с одним условием — брать пример из моих реплик в этом треде.
0
Видимо ты забыл про тормозящие автонавигаторы на Win CE.
К сожелению тут или мультизадачность или реальное время.

Это никак не связанные вещи. Под ДОС тоже было много прог которые «тормозили» на слабых компах. Чудес не бывает, если ресурсов платформы не хватает — ОСРВ их не добавит. ОСРВ позволяет выполнять программы с детерминированным временем реакции, но это не значит, что использование такой ОС увеличивает производительность платформы.
0
Вы простите опять хотите видеть промышленное решение, в то время когда в статье говорится о базе для его поиска и отработки. Причем универсальной, и с низким порогом по вхождению и по железу и по софту.
0
Стабильность работы такого решения оставляет желать лучшего. Вот, например, WinLIRC. Оно ловит сигналы с ИК ПДУ на один из пинов COM-порта и распознает их. Даже при малой загрузке процессора, без своппинга и подобных вещей — примерно 10-20% нажатий теряется. По всей видимости не потому, что они не распознались, а потому, что во время захвата сигнала что-то прервало процесс. Работает оно с наивысшим приоритетом, который вообще можно поставить обычной программе в винде.
Генерация сигналов (комп в роли пульта) еще хуже работает, девайс реагирует на посылку в лучшем случае через раз.
Если латенси в сотню-другую мс допустима — тогда может и можно с чем-то таким экспериментировать, иначе ты даже в отработке будешь гадать — ты облажался или опять прерывание невовремя вылезло.
0
Ну посморим, посморим, тут сила решения в том, что Питон, причем именно запущенная программа, ну очень немного потребляет ресурсов, поэтому работает достаточно стабильно, и если ты помнишь в статье с тестом ком порта использовался именно ответ по эвенту. Быстродействие доходил до 0.3 мс. Причем никто не говорит об управлении атомной станцией, а стабильности чтобы что нибудь покрутить и посмотреть достаточно-).
0
причем именно запущенная программа, ну очень немного потребляет ресурсов
Это как раз не удивляет.
поэтому работает достаточно стабильно
На стабильность влияет, сколько проца жрут другие проги, а не та, которая «реалтаймовая». И еще больше — подковерная жизнь системы. Системная жизнь вроде IRQ и DPC может жрать под 10% процессорного времени даже при нормальной работе системы.
0
На стабильность влияет, сколько проца жрут другие проги
Да, конечно, само собой. Почему-то на реальтаймовой системе типа scm или там win ce, в то время когда они управляют истребителем или атомной станцией никому не приходит в голову еще и поиграть на ней в Контру, или порисовать в Автокаде. Я лично думаю если винду соответствующим образом настроить — отключить всякие службы и т.п. стабильность отклика повысится существенно. Причем в силу малости потребляемых ресурсов питонские процессы особо влиять друг на друга не будут) Э-э возможно как нибудь посмотрим-)))
0
никому не приходит в голову еще и поиграть на ней в Контру, или порисовать в Автокаде
Судя по документации, WinAC RTX такое допускает — по крайней мере, в плюсах сименсом приводится именно то, что на том же компьютере могут крутиться прикладные приложения вроде MSWord.
Я лично думаю если винду соответствующим образом настроить — отключить всякие службы и т.п. стабильность отклика повысится существенно.
Занастраивать, вероятно, придется до неюзабельности по другим задачам. Как я уже говорил, WinLIRC теряет сигналы даже если система практически не загружена (несколько процентов загрузки там неизбежно будут за счет процессов самой винды).
0
Как ты сам и говорил приложения вроде ворда просто висят в памяти,
Занастраивать, вероятно, придется до неюзабельности по другим задачам.
ну это ниоткуда не следует-) Пробовать надо.
0
Как ты сам и говорил приложения вроде ворда просто висят в памяти,
Именно что иногда. Для реалтаймовой системы это неприемлемо, а значит — раз документация на WinAC RTX допускает такое, значит основная работа от этого не пострадает, независимо от того, просто оно висит или активно пашет.
0
Ну а небольшие нагрузки создаваемые другими приложениями на быстродействие
маленького питонского скрипта скорее всего не скажутся, но это действительно гадание это все надо пробовать… Я уж прям задумался не сделать ли в самом деле самокат о котором говорил count_enable тогда придется его просить(если получится) съесть шляпу))
0
А для реалтайма важно и не быстродействие. Для него важно, чтобы шедулер не отдал процессорное время другому потоку в самый неподходящий момент. А это не так уж сильно зависит от загрузки, неоднократно упоминавшийся мной винлирк и параллельно с игрушками работает ненамного хуже.
0
Ну настоящего реалтайма никогда не бывает, отклик всегда через какое-то время, даже в прерываниях. А в данном случае речь может идти об оценке сверху величины времени задержки, так вот питонские приложения как легкие, обеспечивают уменьшение этого времени по сравнению скажем с тем же протеусом или лабвью. Я надеюсь никто не будет спорить что сама винда работает в наблюдаемой действительности и в реальном времени и когда ты жмешь на кнопку она жмется, речь идет только о времени отклика. И это все и сучетом шедулера тоже, это просто еще один фактор ограничения. Я надеюсь что в сумме возможно достичь отклика порядка 1 мс, что иногда и получается)) Ну а дальше надо пилить…
0
Ну настоящего реалтайма никогда не бывает, отклик всегда через какое-то время, даже в прерываниях.
Реалтаймовость определяется детерминированностью этого времени.
и когда ты жмешь на кнопку она жмется, речь идет только о времени отклика.
Именно время отклика и является определяющим. У винды оно ничем не ограничено, я вполне привычен к случаям, когда реакция на нажатие кнопки происходит через полминуты.
так вот питонские приложения как легкие, обеспечивают уменьшение этого времени
От «легкости» вообще ничего не зависит в этом плане. В основном это зависит от планировщика винды.
Я надеюсь что в сумме возможно достичь отклика порядка 1 мс
Откликнуться оно может за наносекунды. Только тому никаких гарантий — может и не откликнуться или откликнуться через пару минут. В некоторых применениях этого достаточно. Например, если ШИМ немного повисит в максимальном заполнении, его нагрузка может успеть сгореть.
0
Насчет гарантий ты естественно прав, но речь идет о том что ос должна быть специально настроена и полминутного отклика соответственно взяться чтоб было неоткуда)))))
0
Речь идет о том что ответ хоть и будет недетерминированным, но чтобы недетерминированностьне не превышала какой-то величины, ведь она когда-то же реагирует-) Причем вариант что вот все нормально но вот она взяла и на полминуты зависла при том что все нормально настроено теоритически конечно возможен, но это из серии что возможно что все молекулы воздуха вот возьмут и соберутся в одном углу комнаты — теоритически тоже возможно. Конечно разброс срабатываний будет но если все заточить то возможно не более чем.
0
Сделайте балансировку обратного маятника (одноколёсный самокат) на питоне.

))))) а Вы уверены, что это Вас убедит-) в прошлый раз Вы выражали сомнение что двигатель пойдет-) anyway, я прям задумался насчет самоката…
0
Жопа начнётся когда на компе запустится ещё одна ресурсоёмкая задача.
Тогда у тебя поплывут задержки. и хорошо если твоя железка не зависит от времени подачи команд. А представь что комп включил привод на перемещение и потом тормозную при обработке другого приложения. После чего подал команду на остановку. А там уже всё в клочья разломано из-за того что вовремя не выключили.

Тут в корне не верный подход. Не надо напрямую пытаться управлять механизмами от компа. надо преобразовывать программу в куски понятные контроллерам приводов и скормив им давать команду на выполнение. При необходимости разбив всё на этапы.

Или работать из под однозадачной операционной системы. Например: DOS.
0
есть сотни разных уже работающих «или» :)
и мне не представить, что комп сойдёт с ума
0
Как и в случае с WinAC RTX, эта картинка приводит пример работы не под виндой, а совместно с виндой — на том же компьютере, но в собственной отдельной ОС. А то так можно запустить QNX в виртуалбоксе и утверждать что это делает винду реалтаймовой.
0
Я ж предупреждал: «но у меня же ответ на укол есть...»
и даже картинкой и текстом подтолкнул… к нужному мне ответу :)
на многоядерных процессорах стало возможным и эффективным выделять целое ядро многопроцессора под конкретную задачу…
но ещё в эпоху одноядерных компов был RTX со следующей функциональностью за счёт встраивания драйвера (по рекламному «подсистема») обработки прерываний в винду, превращая её детерменированную для соответствующих задач
support.industry.siemens.com/cs/document/6919918/new%3A-winac-rtx-v3-0-plc-real-time-software?dti=0&dl=en&lc=ru-RU
«WinAC RTX = WinAC Basic + Deterministics + robust operation»
Selected automation components are used to achieve deterministic and robust operation.
The most important components are:
Real-time subsystem for WindowsNT
PROFIBUS master Fieldbus card (CP 5613, not included)
Operations block that signals an NT stop event to the user program

Deterministics

WinAC RTX runs under a Real Time eXtension (RTX) for the WindowsNT 4.0, SP6 operating system. The product is licensed from VenturCom, Inc.(see also: www.vci.com). The RT subsystem runs in parallel with WindowsNT on the same PC and is invisible to the user.

In contrast to WinAC Basic where soft PLC and Fieldbus are controlled by WindowsNT, the soft PLC and the Fieldbus are here controlled by the parallel running RTX sub-system. All other components remain under WindowsNT, as before.
When WinAC RTX is installed, WindowsNT 4.0, is expanded automatically by the RT system. Windows NT 4.0, SP6 must be installed beforehand (WindowsNT is not included in the scope of supply, but the SP6 is).

Pentium PC, 200MHz or better //Одноядерный Пентюх
64Mbyte main memory, or better // Работало на компе с 64 мегабайтами!!!
Windows-NT 4.0, SP6
Hard disk requirements: 30Mbytes
0
Да-да, именно об этом я и говорю. Оно работает не под виндой, а под RTX. Которая подменяет все, начиная с планировщика заданий. Можно даже сказать, что после запуска RTX уже винда под RTX работает, а не RTX под виндой. А винда как была не-РТ системой, так и осталась.
+1
на многоядерных процессорах стало возможным и эффективным выделять целое ядро многопроцессора под конкретную задачу…
Да ведь дело не только в ресурсах проца (с этим, как раз, вопрос решаемый). Проблема в том, про приоритеты IRP они ка-бы есть вот только в названии IO_PRIORITY_HINT ключевое слово – HINT.
The I/O priority field in the IRP and/or file object is a hint. There is no guarantee that the I/O priority will be respected or even supported by the different drivers that are part of the storage stack.
Поэтому попытки сделать из Win ОСРВ – это натягивание совы на глобус …
+1
Или работать из под однозадачной операционной системы. Например: DOS.
Насчет одно/многозадачности ты не прав. RTOS именно что многозадачные. Вопрос в реализации этой многозадачности и некоторых других нюансов.
На DOS, в принципе, действительно реалтайм делать можно. В первую очередь не потому, что она однозадачная, а потому, что запустив приложение она полностью отдает ему управление (собственно, потому она и однозадачная). Под DOS'ом, ЕМНИП, можно даже отобрать у системы обработку аппаратных прерываний. Но при этом такая программа фактически сама себе ОС и есть, а DOS выполняет только роль бутлоадера.
+1
Исчо раз посмотрите внимательно статью -))) Я не говорю о промышленном решении, а о дешевой и простой базе для его получения.
0
Комп явно не дешёвая и простая база =) Разве что с помойки или ещё на халяву где раздобытый.

Есть дофига готовых отладочных плат, стоимостью в пару тыщ рублей (если и спалишь, то не так и жалко, как целый комп, на котором работаешь), которые могут обеспечить уверенную обработку всего в реальном времени. Со всякими библиотеками нынче проблем особых нет, главное, скрепить их как следует. Это вместо LPT-порта.

Ну или хотя бы усложнить изоляцией стоит. А то потенциально стоимость решения = стоимость сгоревшего компа. Даже пожжёный порт при всём остальном рабочем железе уже может обеспечить хороший такой перегрев мосту и кучу других проблем. Цените свой главный рабочий инструмент и заботьтесь о нём><
0
Зато комп универсальная база и извините, спалить его образом предлагаемым в статье невозможно, разве мультик, но это спасибо Vga-) починябельно-))(см выше), а к вопросу о паре тыщ, так Питон вообще задаром, а чтобы ничего не сгорало это вопрос Вашей аккуратности и квалификации. Нда… пин то я сжег -)
0
Ну и естественно надо соображать что ты делаешь и в программе учитывать возможность закороток и т.п.-))
0
Это смотря как сжечь. Если повезет — мультик может утащить за собой юг, после чего компьютер перестанет работать вообще.
0
ОСРВ WINDOWS-2?
Это что за Винда?
ОСРВ WINDOWS.CE знаю :)
-1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.