Многозадачность и языки МЭК |
Ответить | Страница <1234 5> |
Автор | |||
Участник Присоединился: 12 Апрель 2005 Online Status: Offline Публикации: 78 |
Опубликовано: 18 Январь 2007 16:27 |
||
А разве ISAGraf 5 версии не многозадачный ещё? И не пугает ли вас цена QNX?
|
|||
Действительный член Присоединился: 29 Январь 2004 Категория: Russian Federation Online Status: Offline Публикации: 293 |
|||
Однако: 1) изменение одного байта (тем более бита) особенно в 32х разрядных системах может тоже выполняться за несколько ассемблерных команд. 2) компилятор может оптимизировать код, сохраняя значения переменной в регистрах. 3) задача 1 делает IF X = TRUE THEN всякие вычисления, предполагающие, что X = TRUE, а в это время более приоритетная задача 2 меняет X и все портит. Т.е. напрашивается требование защиты семафорами всех глобальных переменных, даже BOOL, которые используются более чем в одной задаче. Так?
Да все приличные МЭК системы многозадачные, даже Изограф. Проблема в том что, реализовать это проще, чем научиться грамотно применять в прикладных проектах.
Страшно пугает дешевое и бесплатное ПО, делаемое энтузиастами пока не надоест. С бесплатными инструментами можно браться только за бесплатную работу. Качественное ПО, которое гарантированно поддерживается классной командой хорошо оплачиваемых программистов обязано быть дорогим.
|
|||
Igor Petrov
|
|||
Участник Присоединился: 12 Апрель 2005 Online Status: Offline Публикации: 78 |
|||
Может тогда на Linux посмотреть? |
|||
Действительный член Присоединился: 01 Июнь 2006 Категория: Russian Federation Online Status: Offline Публикации: 464 |
|||
...предполагающие, что X = TRUE, а в это время более приоритетная задача 2 меняет X и все портит. Т.е. напрашивается требование защиты семафорами всех глобальных переменных, даже BOOL...
В данном случае простая логика показывает, что если более приоритетная задача изменила значение булевой переменной, то сие ни что иное, как требование момента, свидетельствующее об изменившемся состоянии контролируемого объекта. И с семафором или без такового в текущем цикле выполнения адекватной реакции от алгоритма POU ждать не приходиться это уже к вопросу о времени реакции. Разделяемые переменные любого типа я рассматриваю как переменные ссылочного типа, то есть не защищенный ресурс, следовательно, в течение одной логической цепочки использую исключительно результат однократной проверки, так что все таки “…пол мальчика не продается…”. ИМХО только инкапсулированные данные можно использовать не задумываясь о возможных внешних воздействиях. Вообще, на мой взгляд, любые способы обеспечения устойчивости должны быть логически обоснованы в каждой конкретной задаче, избыточность должна быть обоснована. К вопросу о применимости многозадачности могу ответить словами Гендальфа о “Паландире” в башне Сарумана: -“Нам ли бояться Интернета!”
|
|||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||
evgeny, не пугайте народ, а то всех распугаете, да ещё сами себя настрашаете ;)... о цене QNX - это красивая народная легенда, давайте с цифрами посмотрим (это всё не самые свежие цифры, но много - не поменяется): - для разработок в QNX вам нужен девелоперский комплект (может быть 1 ;)), это да - стоимостью $14000 если это PE, но может быть и SE - это $7000... - на каждый хост и в каждой АСУТП системе вам нужен runtime, $150-250 (если это soft-PLC, то скорее $150, а если SCADA управляющая рабочая станция, с Poton, то, ближе к $250); - runtime вы устанавливаете заказчику на систему, а девелоперский комплект остаётся у вас на все последующие разработки... Теперь, для сравнения, ПО не самого и брандового производителя PLC - Schneuder Electric (просто "1 из" - не хуже но и не лучше других, к примеру): - на каждый хост либо UnityPro (Concept), если мы говорим о PLC, либо MonitorPro если мы говорим о SCADA рабочей станции... - стоимость и того и другого - ~$4500, это девелоперский вариант, но runtime здесь не дешевле 10-15%... - с этой АСУТП вы устанавливаете этот комплект, и на следующую - начинаете всё это покупать и по тем же стоимостям ... с начала ;) :( Добавьте к этому, что 2-й вариант вы устанавливаете на проприетарное оборудование фирмы, а поскольку оно проприетарное, то ... простенький адаптер для обычного PC (SCADA) сети ModbusPlus (протокол намного более убогий, чем, скажем, тот же 802.3 - Ethernet) - стоит порядка $150-180 ... сколько стоит Ethernet адаптер? - $10-20-30 ... Это вам плата за проприетарность + мелкосерийность... В 7-8 раз :( Или какой-то простенький кабель, для той же ModbusPlus за $100 ... не желаете? И это не только (и не сколько) для Shneider Electric справедливо, а для всех... Если вы сверите реальные (а это не так просто сделать ;)) стоимости SCADA ... например из лучших (IMHO) для высококритичных приложений: RealFlex (QNX, Ирландия) & AutomationX (Linux, Австрия) - то получите цифры ... "как сговорились" ;) - ~$4500. И опять же: это на каждый экземпляр! |
|||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||
Хороший вопрос! ;) Я его здесь на форуме активно подымал ... 1-1.5 года назад... И тогда, и сейчас утверждаю, что многозадачность для МЭК 61131-3 & PLC - это не более чем рыночно коммерческая "рюшечка": производители закрытых hard-PLC сами загнали себя в угол (10-15 летней практикой, в том числе и МЭК), а теперь ... наобещают: - в UnityPro Schneider Electric задачи в PLC могут быть (одновременно ;)): а). периодическая, б). циклическая, в). таймерная, г). по событию, д). высокоприоритетная... Господа, задача в системе, в которой принципиально нет синхронизаций и взаимодействий (а в рамках парадигмы МЭК - их нет!) может быть только одна и единственная... Конечно, вы можете запустить на 1-м процессоре 2 (или N ;)) автономных и не взаимодействующих задач - но это будут 2 или N разных АСУТП: например, АСУ управления напольным оборудованием ж/д станции + АСУ управления электрокофеваркой диспетчера этой станции ;)...
Имею некоторый ... позитивный опыт ;), который утверждает (мой опыт): - для высоконадёжных СУ в критических областях применения системы, базирующиеся на Windows XX - это бред изначально и по определению ... и не зря у вас интерес к слову QNX; P.S. на сегодня QNX - вполне самодостаточная ОС, и пишу я эти тексты сюда - из-под неё. - для построения таких QNX-систем совсем не обязательны технологические tools и вполене достаточно средств ОС... P.S. я не утверждаю, что они не нужны или лишние (например, адаптированные в QNX ISaGRAF & CoDeSys - вполне приличные изделия, или RealFlex), я говорю, что они не являются необходимыми. - ... и МЭК языки там неуместны, достаточно С/С++ (и берусь утверждать, что С++ - в болешей мере, чем привычный и любимый pure C) + технлогии SWITCH-программирования проф. Шалыто из С.-Петербурга. Кого заинтересуют соображения и аргументы на этот счёт - можете почитать здесь: http://qnxclub.net/modules.php?name=Forums&file=viewforum&f=18 - единственно, это потребует много времени: а). это обсуждения и аргументация за более года работы б). с изложением кодов, тестов и промежуточных результатов ... в). + они достаточно хаотичные и разрознённые.
- эта ссылка, как вариант - то что вы просили: дальнейшие детали можем обсудить там или здесь. Кроме того, посмотрите: http://www.books.ru/shop/books/357604 - на эту книжку "сподвигли", в частности, и разговоры здесь в форуме о многозадачности года 1.5 назад... а если лень книжку листать ;), то вот здесь: http://qnxclub.net/files/articles/pthread/pthread.pdf - есть очень предварительная её редакция. |
|||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||
Так Linux как раз и поражён той колхозностью, об которой говорилось выше ;) :
Хотя, если всерьёз, то Linux - совсем неплохая альтернатива (особенно если сравнивать с Windows ... любым ;)) ... по крайней мере - не в самых критических областях... Но здесь вот ещё что: - хоть QNX и Linux используют один API - POSIX, но в QNX есть ещё много "вкусностей" сверх Linux, т.е. можно говорить, что возможности QNX поглощают Linux... - по-крайней мере - в QNX проще отработать его естественными средствами модель, которую потом можно перенести и в Linuxс, но там уже моделируя недостающие возможности... - тем более, что для такого "для себя" использования QNX - бесплатный ;). |
|||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||
Порог, за которым требуется многозадачность - он не только никак не связан со скоростью/производительностью, но даже не коррелирован с ними: многозадачность - это ещё одна парадигма/альтернатива последовательностному программированию, и вы любой из них 2-х выбирайте "на вкус", но это ника не связано с производительностными критериями - критерии выбора здесь совсем другие. Это почти то, что другими словами пишет здесь:
- это - абсолютно верно. Но (!) только в рамках убогой парадигмы, навязываемой hard-PLC + выразительными возможностями МЭК языков. В этом случае: послушайте умудрённый цитируемый выше совет ... : "никогда не говори никогда" (с) - никогда не раззевайте варежку на многозадачность в МЭК PLC |
|||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||
А почему нет? В той ссылке выше - я показываю в коде много примеров и тестов... Сейчас я на той (описанной там) технике заканчиваю реальный проект крупной ж/д станции - пару сотен управляемых объектов на мнемосхеме: в этой реализации все подсистемы (интерфейсы, логика, история) - разделены на 6-7 (пока - может и больше захочется) независимых процессов, каждый из которых ещё включает и несколько потоков ... всё замечательно крутится
... да-а-а-а... а особенно если учесть, что реализовывалось это из соображений "чтоб было не хуже чем у других", из рыночно-коммерческих "рюшечек", а не реальной потребности ... и ... "грамотно применять в прикладных проектах" его - просто невозможно, потому, что при его реализации - на это и не рассчитывали |
|||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 14 Май 2003 Online Status: Offline Публикации: 770 |
|||
Олег, эта "убогая" парадигма навязывается МЭК-языками неспроста, а ради благой и оправданной цели - упростить поддержку приложений на объекте специалистами, не имеющими зачастую достаточной квалификации. Хотя я понимаю чувства профессиональных программистов, для которых программирование на МЭК выглядит сродни изощренной пытке. Использование многозадачности может привести к тому, что для обслуживания системы понадобится вызывать специалиста фирмы-разработчика, что сопряжено с большими затратами и длительными простоями. Специалисты же на местах просто не смогут разобраться во всех этих тонкостях, как сельскому электромонтеру трудно разобраться во внутренностях компьютера. Конечно, разработчики наших контроллеров постарались облегчить жизнь тем, кто захочет использовать вытесняющую многозадачность. Так, например, каждая задача использует свой собственный образ процесса, что снимает необходимость синхронизации доступа ко входам и выходам контроллера. Однако, все равно сохраняется опасность "напортачить" при доступе разных процессов к глобальным ресурсам - например, к глобальным переменным или нереентерабельным функциям (а такие в CoDeSys имеются - читайте документацию!). Подобные ошибки бывает очень легко сделать, но трудно найти и исправить. Поэтому, я призываю обращаться осторожно с многозадачностью - это дело отнюдь не для новичков! |
|||
Инженер-системотехник
+7 (916) 477 3925 |
|||
Ответить | Страница <1234 5> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |