Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Когда не нужна ОС РВ?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
Виктория
Так как автор поста http://electronix.ru/forum/index.php?showtopic=12972
загубил на корню возможность обсуждения, я и открыла новую тему.

Вопрос может быть поставлен так - автору скорее всего и не нужна ОС РВ. Кругу задач его предметной области (ЦОС) свойственна - цикличность (каждый такт - ввод+обработка+вывод), жесткое РВ, работа с аппаратурой возможна на уровне конфигуривания специализированной библиотеки. Намерено так написала smile.gif . Чем тогда это не "IsaGraf" (или любой другой пакет языков программирования ПЛК), скажем так "IsaGraf для жесткого реального времени"? Или по другому - нельзя ли применить подход МЭК к АСУТП для другой предметной области (которые также трудоемки, также требуют высокой надежности ПО и у которых уже виден базис свойств). Например, к таким задачам - ЦОС, алгоритмы функционирования информационно-измерительных систем, ...
Будет ли при этом этот новый case-инструмент альтернативой ОС РВ? Это возможно только на базе ОС РВ или самостоятельный путь развития программных технологий?

Приглашаю всех к дискуссии. smile.gif
SM
Мое мнение однозначно - ОС РВ нужна тогда, когда лень писать качественный софт (или нет на это времени) и есть лишние ресурсы у железа. Во всех остальных случаях не нужна. Качественный софт это такой, который при выполнении заданных требований потребляет минимум ресурсов (всех, байтов, тактов, и т.п.)
Harbour
Ну в пользу ОС РВ можно упомянуть переносимость приложений на другие архитектуры и легкость повторного использования кода. Прогресс в данный момент таков что встраиваемую платформу менее чем с 8Mb RAM и 200MIPS'ов уже не закладывают - по стоимости они все сравнимы с меньшими, а по трудоемкости кодирования ...
zltigo
Цитата(SM @ Mar 2 2006, 18:35) *
Мое мнение однозначно - ОС РВ нужна тогда, когда лень писать качественный софт (или нет на это времени) и есть лишние ресурсы у железа. Во всех остальных случаях не нужна. Качественный софт это такой, который при выполнении заданных требований потребляет минимум ресурсов (всех, байтов, тактов, и т.п.)

Столь усеченно-однобокую трактовку "качественно софта" оставлю на Вашей совести.
А вот по поводу "лишних ресурсов у железа" для RTOS дело обстоит с точностью до наоборот -
RTOS позволяет делить ресурсы в случае их нехватки. А когда ресурсов "завались" можно и бездумно и беcсистемно заниматься чем-нибудь другим.
Evgeny_CD
IMHO по осям.

1. Ось - это совокупность стандартов и методологических подходов,
которая обеспечивает:

* разработку кода силами команды (>1 человека), причем код, написанный
одним человеком, с небольшими усилиями используется другим

* повторное использование кода от проекта к проекту

* переносимость между целевыми платформами и средами разработки

2. Ось - это средство ограничения "динамического диапазона сознания".
Т.е. вначале мы делаем проект "широкими мазками" - прикидываем,
сколько надо ресурсов. Затем понимаем, каков механизм взаимодействия
частей. Потом берем отдельно каждую часть, и концентрируемся только на
ней, да на ее IO интерфейсах. Без такой декомпозиции решать задачу
написания софта, например, для любого коммуникационного контроллера -
просто мазохизм (_любая_ коммуникационная система имеет много
состояний, и потому очень сложна в действительности)

3. Ось - это средство использования чужого кода, написанного в рамках
стандарта ОСи. Крайне полезно не изобретать велосипед в области IP
стеков, файловых систем, GUI и прочего, а сконцентрироваться на
целевой задаче - ибо именно за нее деньги платят, а не за гуй (хотя
это мало кто понимает).

4. Качество софта - понятие очень сложное и многоплановое. К байтам и
тактам оно имеет слабое отношение.

Не забываем, что софт - это часть проекта, он не сам по себе живет. И
портируемость, например, часто важнее свехкомпактности кода,
написанного на асме - вот снимут проц, и что делать - все
переписывать заново?

Я бы сказал так. Качественный софт - это софт, созданный в рамках
некого набора правил, который обеспечивает максимизацию профита конторы
в рамках заданной метрики.

Метрики могут быть разными:

* создали - продали - разбежались, пока не догнали не добавили

* много лет работали, вышли на новый рынок, проявили себя - продали
контору вместе с наработками мощному конкуренту. Поскольку стоимость
конторы в таком случае состоит почти полностью из интеллектуальность
собственности, т.е. софта в нашем времени, вот тут-то следование
единым стандартам на протяжении многих лет и окупится - разница в
цене может быть 10 и более раз (либо Вашу гениальную собственность
никто не купит - ибо только Вы можете разобраться в помойке на Вашем
сервере).

* многие другие.

В любом случае, не однозначного ответа на все вопросы сразу. Надо
приучить себя к тому, что каждый ответ - это сумма ответов с весовыми
коэффициентами, причем веса динамически меняются biggrin.gif
SM
Цитата(zltigo @ Mar 2 2006, 20:39) *
А вот по поводу "лишних ресурсов у железа" для RTOS дело обстоит с точностью до наоборот -
RTOS позволяет делить ресурсы в случае их нехватки.


Нет. Это не так. Если ресурсов не хватает для задачи, дели их, не дели, а реалтайм-программа уже никак не получится. Ибо будет иметь отклик больший, чем допустимо. А если ресурсов хватает (впритык), то в 99% выгоднее их поделить самому исходя из особенностей задачи, платформы и т.д., чем использовать готовую RTOS, в которой для каждой задачи найдется что-то излишнее.

Да, еще RTOS полезна, когда надо быстренько накатать алгоритм, проверить работоспособность, отладить. А потом, в процессе оптимизации, ее выкинуть, как лишнюю деталь, и написать оптимальный планировщик для данной задачи. Для этого я ее и использую (в моем случае это DSP/BIOS).
zltigo
Цитата(SM @ Mar 2 2006, 20:47) *
Нет. Это не так.

Просто Вы очевидно рассматриваете достаточно нишевый круг задач с достаточно ровным и
ограниченным (конечным числом каналов с жестко ограниченной пропускной способностью) потоком внешних воздействий. А реальность и "реальное время" ими не исчерпывается.
SM
Цитата(zltigo @ Mar 2 2006, 23:06) *
(конечным числом каналов с жестко ограниченной пропускной способностью) потоком внешних воздействий.

Это точно. Систем с бесконечным числом каналов с неограниченной пропускной способностью делать не приходилось.
Виктория
Всем, что такое языки программирования ПЛК (стандарт МЭК) можно, например, здесь посмотреть
http://www.codesys.ru/3s/index.htm
(как профессионалам советую обратить внимание (дополнит. ссылки)- http://www.codesys.ru/3s/SP.htm, http://www.codesys.ru/3s/CoDeSys/Supp_pl.htm, http://www.codesys.ru/3s/OEM1.htm)
Можно еще эту книгу почитать (не слишком доверяя автору, но и не слишком критикуя)
http://www.natahaus.ru/2006/02/17/programm...ontrollery.html

Это все давно известно для задач АСУТП (их основное отличие от задач ЦОС - "мягкое" реальное время, в остальном - много похожих свойств).
Т.е. хотелось бы рассмотреть возможность использования подобной технологии для "ограниченного" круга задач ЦОС и ИИС. Чем и насколько ограничены? Или это все-таки большой круг, который тоже требует лучшей технологии программирования? Эта же идея уже витает в массах и у фирм-разработчиков (по крайней мере National Instruments (Labview - другой монстр case-технологий) в публикациях отмечает эти особенности РВ для задач ЦОС). Обязательно ли наличие ОС РВ в этом случае (для обеспечения переносимости, мобильности и надежности)? Или можно (лучше) обойтись минимальным ядром РВ (Target System), или bios (как заметил SM)?
Мне этот вопрос интересен в какой-то мере в плане общего развития, интересно куда же технологии развиваются. (.. а может быть и для практики)

To Evgeny_CD
Я думаю, что после моего уточнения (с ссылками) Вы заметите, что все п.п.1-4 распространяются и на эту технологию, т.е. с точки зрения технологичности программирования оба подхода на одном уровне.

To All
Вопрос "Когда не нужна ОС РВ" вообще очень обширен. Я думаю, что каждый разработчик мог бы внести "свои 5 копеек" (и это даже не 5 копеек, другая денежная единица). Может немного ограничим пока обсуждение до моей постановки темы? Или тогда необходимо создать вторую ветку?
Olej
Цитата(SM @ Mar 2 2006, 22:47) *
Нет. Это не так. Если ресурсов не хватает для задачи, дели их, не дели, а реалтайм-программа уже никак не получится. Ибо будет иметь отклик больший, чем допустимо. А если ресурсов хватает (впритык), то в 99% выгоднее их поделить самому исходя из особенностей задачи, платформы и т.д., чем использовать готовую RTOS, в которой для каждой задачи найдется что-то излишнее.

Да, еще RTOS полезна, когда надо быстренько накатать алгоритм, проверить работоспособность, отладить. А потом, в процессе оптимизации, ее выкинуть, как лишнюю деталь, и написать оптимальный планировщик для данной задачи. Для этого я ее и использую (в моем случае это DSP/BIOS).


Нет. Это не так. tongue.gif
Почему это вы решили, что достаточно простые (а другими они быть и не могут) "ручные" реализации будут оптимальнее, чем те, которые "обкатаны", скажем, в течении 20-30 лет? Ну и что, станете вы писать адаптивную или спорадическую диспетчеризации параллельных веток вместо round-robin для единоразового использования? И сколько ещё скрытых ошибок вы оставите в "ручной" реализации?

Цитата(SM @ Mar 2 2006, 22:47) *
А если ресурсов хватает (впритык),


Если до такой степени впритык - то это признак того, что платформа выбрана неадекватная, и "выбирателя" пора гнать с работы... wink.gif. Такая постановка ещё могла бы быть правомочной ... лет 20 назад.

P.S. Т.е. такая ваша позиция имеет право быть - но для очень ограниченного круга специфических задач, ЦОС как раз есть такая ниша, но и то - не всё даже, что ЦОС, а только отдельные подклассы задач в ЦОС.
Evgeny_CD
Системы программировния PLC и ОС - это разные вещи, хотя иногда они и решают схожие задачи.

В принципе стандарт на PLC можно рассматривать как некую очень узкоспециализированную ОС сограниченными (по отношению к обычной ОС) возможностями.

Основная задача стандарта PLC - сформировать некий простой базис, в рамках которого можно решить все целевые задачи. Т.е. научили технолога АСУ ТП некоей системе программирования - и он в ней все может запрограммить - от кофеварки до ядреного реактора.

Не стоит также забывать, что обычно такие системы весьма дороги, и посему реализация простейшего PLC поверх WinCE в "том" мире вполне нормальное явление, хотя я как-то с этим не очень согласен (хотя тут я становлюсь на позицию "зачем мне ОСь - я все на асме напишу", которую я не разделяю)

Не знаю, я мало знаком с миром стандартов PLC- так что есть что почитать! Спасибо за ссылку на книгу!
Olej
Цитата(Vic1 @ Mar 3 2006, 10:11) *
Всем, что такое языки программирования ПЛК (стандарт МЭК) можно, например, здесь посмотреть
http://www.codesys.ru/3s/index.htm
(как профессионалам советую обратить внимание (дополнит. ссылки)- http://www.codesys.ru/3s/SP.htm, http://www.codesys.ru/3s/CoDeSys/Supp_pl.htm, http://www.codesys.ru/3s/OEM1.htm)
Можно еще эту книгу почитать (не слишком доверяя автору, но и не слишком критикуя)
http://www.natahaus.ru/2006/02/17/programm...ontrollery.html


Ссылки хорошие, спасибо.
А вот книга (я её давненько знаю) ... она годится только для первого поверхностного знакомства, хотя автор на большее и не претендовал. Что более интересно - что кроме этой 1-й книги нет больше ни одной по такому обширному, да и не очень новому предмету... (потенциальные авторы: дарю идею - пишите книгу, определённо будет пользоваться спросом, не всё же писать о чайниках да для чайников wink.gif).

Цитата(Vic1 @ Mar 3 2006, 10:11) *
Т.е. хотелось бы рассмотреть возможность использования подобной технологии для "ограниченного" круга задач ЦОС и ИИС. Чем и насколько ограничены? Или это все-таки большой круг, который тоже требует лучшей технологии программирования? Эта же идея уже витает в массах и у фирм-разработчиков (по крайней мере National Instruments (Labview - другой монстр case-технологий) в публикациях отмечает эти особенности РВ для задач ЦОС). Обязательно ли наличие ОС РВ в этом случае (для обеспечения переносимости, мобильности и надежности)? Или можно (лучше) обойтись минимальным ядром РВ (Target System), или bios (как заметил SM)?


Я как-то для себя уже задавался похожими вопросами...
1. в технологии PLC (это же всё пришло из PLC?) что пинципиально нового, отличного - это строгая цикличность организации процесса: ... - ввод - обработка - вывод - ...
2. то, что кажется принципиальным - использование языков МЭК 61131-3, по моему мнению, особо принципиальным то и не является...
3. кстати, совсем не очевидно и не на виду то, что для выполнения программ, подготовленных в МЭК 61131-3 - требуется исполняющая система: ISaGRAF || CoDeSys , и они (!) являются интерпретаторами промежуточного языка (хотите, назовите его байт-код)...
4. а это очень сильно настораживает в сочетании с терминологией realtime ...
5. и как раз не в смысле скорости... здесь в обсуждениях много путаницы вносится, связывая скорость с realtime, а они даже не коррелированы, или даже коррелированы, но отрицательно: realtime по своим качествам система (операционная, целевая, любая), при прочих равных, будет медленнее, чем та, к которой это требование не выдвигается (за счёт более корректного и тщательного переключений контекстов и т.д. и т.п.)...
6. а в смысле детерминированности, предсказуемости ... и далее по цепочке надёжности - вот главные критерии риалтаймовости, ... а не слабоопределённое "гарантированное время отклика", которое все друг за другом повторяют, не очень задумываясь повторяют что wink.gif.

Вот, хоть сумбурно и в первом приближении, соображения на счёт...
Olej
Цитата(Evgeny_CD @ Mar 3 2006, 12:44) *
Системы программировния PLC и ОС - это разные вещи, хотя иногда они и решают схожие задачи.


Понимаете, здесь есть путаница терминологическая: что есть "системы программировния PLC" - исполняющая система для программ на МЭК языках? или runtime ядро, реализующее синхронизацию всех ПО составляющих процесса АСУ, да ещё так, чтобы не нарушить принципы теории автоматического регулирования и не влететь в область неустойчивости?

Если 1-е, то, конечно, ничего общего с ОС, тогда его проще с BASIC искать аналогии...
А вот если 2-е - то достаточно много общего с ОС, только применительно к специфичному классу задач, у которого есть свои законы (см. выше), отсутствующие у других программных систем.

Цитата(Evgeny_CD @ Mar 3 2006, 12:44) *
В принципе стандарт на PLC можно рассматривать как некую очень узкоспециализированную ОС сограниченными (по отношению к обычной ОС) возможностями.


Т.е. мы почти об одном и том же и говорим.

Цитата(Evgeny_CD @ Mar 3 2006, 12:44) *
Основная задача стандарта PLC - сформировать некий простой базис, в рамках которого можно решить все целевые задачи. Т.е. научили технолога АСУ ТП некоей системе программирования - и он в ней все может запрограммить - от кофеварки до ядреного реактора.


Стандарта языков МЭК - да, стандарта PLC (я бы сказал, скорее "идеологии") - нет.
Тем более, что никто технолога с МЭК языками к реактору не подпустит, хотя PLC в системе безопасности того же реактора - вполне может найтись место.

Цитата(Evgeny_CD @ Mar 3 2006, 12:44) *
Не стоит также забывать, что обычно такие системы весьма дороги, и посему реализация простейшего PLC поверх WinCE в "том" мире вполне нормальное явление, хотя я как-то с этим не очень согласен (хотя тут я становлюсь на позицию "зачем мне ОСь - я все на асме напишу", которую я не разделяю)


Весьма дороги ещё и потому, что брэндам этой индустрии было безумно выгодно "закрыть" всё ПО и привязать к себе потребителя... Но в последние годы, как раз, очень широко пошло направление PC-based PLC, на базе открытых ОС, ПО, стандартов и т.д. - которое ну очень теснит вот тех многолетних брэндов.

Чтоб не повторяться - я об этом много писал, вот здесь, например:
http://www.isagraf.ru/forum/viewforum.php?...53e4243359fe44e
- хотя даже "те" воззрения уже очень сильно сместились wink.gif...
Evgeny_CD
Цитата(Olej @ Mar 3 2006, 12:41) *
...Весьма дороги ещё и потому, что брэндам этой индустрии было безумно выгодно "закрыть" всё ПО и привязать к себе потребителя... Но в последние годы, как раз, очень широко пошло направление PC-based PLC, на базе открытых ОС, ПО, стандартов и т.д. - которое ну очень теснит вот тех многолетних брэндов...
IMHO, менеджеров, который _сейчас_ принимают решение о закупке "закрытых" систем для новых больших проектов (Газпром, РЖД, РАО ЕС), надо судить за вредительство.

Своет отношение к х86 в embedded системах я выразил давно и однозначно

"Членомер" производительности микроконтроллеров
http://www.telesys.ru/wwwboards/mcontrol/1...es/104416.shtml
http://www.caxapa.ru/mcu/wwwboard.html?id=...do=full&hilite=
http://electronix.ru/forum/index.php?showtopic=6279&hl=

ТЕОРЕМА о ненужности и бесполезности ((С) на название - великий VLV) x86 архитектуры во встраиваемых приложениях
http://www.telesys.ru/wwwboards/mcontrol/1...es/105243.shtml
http://electronix.ru/forum/index.php?showtopic=6352&hl=

http://www.telesys.ru/wwwboards/mcontrol/1...es/105467.shtml
http://www.telesys.ru/wwwboards/mcontrol/1...es/105965.shtml

хорошее обсуждение х86
http://electronix.ru/forum/index.php?showtopic=23
Olej
Цитата(Vic1 @ Mar 2 2006, 19:58) *
Будет ли при этом этот новый case-инструмент альтернативой ОС РВ? Это возможно только на базе ОС РВ или самостоятельный путь развития программных технологий?


Хороший вопрос...

Говорить о том, что PLC работают "без ОС" - не приходится: там всегда присутствует runtime среда, присутствующая всегда сверх того, что написал, например, тот же технолог на языках МЭК, и именно и обеспечивающая функционирование "того ..." wink.gif.

Другой вопрос - что там используется в качестве runtime?
Для PLC от брэндов (Modicon/Schneider Electric, Alan Bredley, Siemens, ...) - ответ на этот вопрос хранится покрепче "тайн мадридского двора" ... но есть у меня такое си-и-и-ильное wink.gif подозрение, что там - нечто не многим более MS DOS расширенного режима (по памяти).

С другой стороны, можно категорически такую runtime среду не относить к ОС, но это уже вопрос терминологии ... и упорства wink.gif. И чем вам не ОС система программирования Modula от Вирта, которая realtime ну куда более, чем Win-CE? Или система Forth, которую здесь кстати рядом в теме упомнили, и на которой в своё время (не знаю сейчас) реализовывалось 70% (!) законченных проектов в робототехнике?
Виктория
Цитата
Чтоб не повторяться - я об этом много писал, вот здесь, например: http://www.isagraf.ru/forum/viewforum.php?...53e4243359fe44e
- хотя даже "те" воззрения уже очень сильно сместились ...


Спасибо за ссылку. Не знаю уж, плохо или хорошо, что идеи так разбросаны по форумам smile.gif . Читать и в курсе быть сложновато, зато мнения с разных сторон (и от фирмачей, и от спецов по АСУТП, и от спецов по ОС РВ smile.gif ).

Сейчас только кратко смогу (для информации).
Цитата
Я как-то для себя уже задавался похожими вопросами...
1. в технологии PLC (это же всё пришло из PLC?) что принципиально нового, отличного - это строгая цикличность организации процесса: ... - ввод - обработка - вывод - ...
2. то, что кажется принципиальным - использование языков МЭК 61131-3, по моему мнению, особо принципиальным то и не является...


1. угу
2. тоже угу smile.gif . Хотя SFC хорош для описания алгоритмов функционирования ПЛК, а дополнительные элементы FBD, ST и этой компании в виде таймеров, триггеров, PID и т.п. составляют некоторую базисную библиотеку для описания часто используемых в АСУ ТП функций.
Собственно - по поводу языковых средств могу только к Владимиру Зюбину отослать
http://reflex-language.narod.ru/ - предлагаемый им альтернативный язык программирования ПЛК
http://www.softcraft.ru/forum/viewtopic.ph...1a38d66e72e3492 - обсуждение его на форуме softcraft.ru
http://iprog.pp.ru/forum/read.php?f=1&i=34658&t=34658 - тоже в сфере профессиональных программистов ПЛК и АСУ ТП
(извинения всем за многочисленные ссылки и легкий уход в сторону)

Цитата
3. кстати, совсем не очевидно и не на виду то, что для выполнения программ, подготовленных в МЭК 61131-3 - требуется исполняющая система: ISaGRAF || CoDeSys , и они (!) являются интерпретаторами промежуточного языка (хотите, назовите его байт-код)...
4. а это очень сильно настораживает в сочетании с терминологией realtime ...
5. и как раз не в смысле скорости... здесь в обсуждениях много путаницы вносится, связывая скорость с realtime, а они даже не коррелированы, или даже коррелированы, но отрицательно: realtime по своим качествам система (операционная, целевая, любая), при прочих равных, будет медленнее, чем та, к которой это требование не выдвигается (за счёт более корректного и тщательного переключений контекстов и т.д. и т.п.)...
6. а в смысле детерминированности, предсказуемости ... и далее по цепочке надёжности - вот главные критерии риалтаймовости, ... а не слабоопределённое "гарантированное время отклика", которое все друг за другом повторяют, не очень задумываясь повторяют что .


Вот эта часть вопросов наверно интереснее, актуальнее для нашего форума (electronix.ru)!
ISaGRAF || CoDeSys - точно с интерпретаторами и используют ОС РВ (так они и переносимость обеспечивают между платформами и ПЛК).
Насчет Siemens и его Step7 такой уверенности нет (вроде как без ОС РВ).
И еще, очевидно что подход с интерпретатором TIC-кода для ЦОС и ИИС не подойдет (если только не уйдем куда-нибудь совсем в сторону изменяемой системы команд процессора под свою задачу ...), быстродействие процессоров все-таки это пока не позволяет. А предсказуемость вроде бы обеспечивается, хотя это от уровня программиста и зависит.

Цитата
Evgeny_CD @ Mar 3 2006, 12:44)

Основная задача стандарта PLC - сформировать некий простой базис, в рамках которого можно решить все целевые задачи. Т.е. научили технолога АСУ ТП некоей системе программирования - и он в ней все может запрограммить - от кофеварки до ядреного реактора.


Это только розовая мечта такая была (где-то в середине 90-х), которая конечно не осуществилась. smile.gif
Произошло только улучшение технологии программирования программистов задач АСУТП (легкое такое улучшение ..)

Цитата
Стандарта языков МЭК - да, стандарта PLC (я бы сказал, скорее "идеологии") - нет.


Про идеологию согласна. Хотя когда появились ПЛК и эти языки МЭК - уж такие размахивали флагом "открытых систем". А на вопрос про переносимость и включение своего драйвера - да ОЕМ часть обязательно есть (заплати только огромную сумму)! Ну это off-topic.
Виктория
К сожалению смогу продолжить беседу только вечером или позднее sad.gif
SM
Цитата(Olej @ Mar 3 2006, 11:40) *
Почему это вы решили, что достаточно простые (а другими они быть и не могут) "ручные" реализации будут оптимальнее, чем те, которые "обкатаны", скажем, в течении 20-30 лет? Ну и что, станете вы писать адаптивную или спорадическую диспетчеризации параллельных веток вместо round-robin для единоразового использования? И сколько ещё скрытых ошибок вы оставите в "ручной" реализации?

Это я решил, базируясь на собственном опыте (и поверьте, богатом) построения многоканальных систем цифровой обработки сигналов. Где присутствует очень жесткое реальное время. Самый выигрышный вариант оказался построение системы как ряда последовательно вызываемых конечных автоматом в бесконечном цикле. С жесткой оговоркой - сколько тактов процессора разрешено на обработку одного состояния в каждом КА. Все остальные схемы, включая всевозможные самодельные диспетчеры, готовые и опробованные RTOS, и т.п. проиграли.

Цитата(Olej @ Mar 3 2006, 11:40) *
Цитата(SM @ Mar 2 2006, 22:47) *

А если ресурсов хватает (впритык),

Если до такой степени впритык - то это признак того, что платформа выбрана неадекватная, и "выбирателя" пора гнать с работы... wink.gif. Такая постановка ещё могла бы быть правомочной ... лет 20 назад.

Категорически не согласен. В части задач разрабатывается параллельно программное обеспечение, микропроцессорное ядро под него и обвязка периферии, которая потом размещается в полностью заказной микросхеме. Кол-во ресурсов - это площадь - это доллары и центы. А зачастую экономия 10-ти центов полностью определяет выигрыш в конкуррентной борьбе. Так что ресурсы это золотой запас, о котором я думаю в первую очередь. (я сам являюсь проектировщиком RTL и топологии своих ИМС, кроме решения самих ДСП-задач, и разработки системы в целом).

Цитата(Olej @ Mar 3 2006, 11:40) *
P.S. Т.е. такая ваша позиция имеет право быть - но для очень ограниченного круга специфических задач, ЦОС как раз есть такая ниша, но и то - не всё даже, что ЦОС, а только отдельные подклассы задач в ЦОС.

Пока таковыми были ВСЕ решаемые мной задачи ЦОС. Они касались обработки голосовых каналов и каналов цифровой передачи данных (модемы). А также и не совсем ЦОС... Я еще не встретил ни одного чужого (не самодельного) планировщика, который был бы оптимален с моей точки зрения.

Цитата(Vic1 @ Mar 3 2006, 09:11) *
, или bios (как заметил SM)?


Я заметил не bios, а DSP/Bios, что является торговой маркой и названием полноценной RTOS.
Olej
Цитата(Vic1 @ Mar 3 2006, 14:53) *
2. тоже угу smile.gif . Хотя SFC хорош для описания алгоритмов функционирования ПЛК, а дополнительные элементы FBD, ST и этой компании в виде таймеров, триггеров, PID и т.п. составляют некоторую базисную библиотеку для описания часто используемых в АСУ ТП функций.


А где я сказал, что языки МЭК это зло?
Но это только одно из возможных технологических средств программирования ... могут быть и другие (там как-раз новый МЭК стандарт подходит) - но это не принципиальная и неотъемлемая составляющая ... "PLC культуры".
Для определённых задач, например, как ничто хорош язык LISP, вопрос: можно эти задачи записать, когда нет LISP реализации, на других языках? Конечно можно...

[quote name='Vic1' date='Mar 3 2006, 14:53' post='91994']
Вот эта часть вопросов наверно интереснее, актуальнее для нашего форума (electronix.ru)!
ISaGRAF || CoDeSys - точно с интерпретаторами и используют ОС РВ (так они и переносимость обеспечивают между платформами и ПЛК).
[quote]

Там ещё интереснее, если быть совсем точным...
Я не знаю как с CoDeSys (не было времени и случая), но с ISaGRAF покопался, и обстоятельно пообсуждал с парнями из "ФИОРД" С.-Петербург: система ISaGRAF может быть "заточена" (пересобрана) под разные исполняющие платформы (в их терминологии это называется "целевая функция"), и получается такая runtime среда исполнения, которая может крутиться:
- под RTOS ... тот же "ФИОРД" собрали "целевую функцию" под QNX;
- OS но не RT wink.gif - одно из самых частых использований ISaGRAF это под Linux ... последнее время много пишут - под RT Linux, но RT Linux - это что-то вроде "осетрины второй свежести"...
- без всякой операционной платформы - над голым железом...

И в той, и в другой, и в третьей конфигурации - в среде ISaGRAF runtime будет выполняться один и тот же TIC-кода реализующий одну программу.
Olej
Цитата(SM @ Mar 3 2006, 15:59) *
Это я решил, базируясь на собственном опыте (и поверьте, богатом) построения многоканальных систем цифровой обработки сигналов. Где присутствует очень жесткое реальное время. Самый выигрышный вариант оказался построение системы как ряда последовательно вызываемых конечных автоматом в бесконечном цикле. С жесткой оговоркой - сколько тактов процессора разрешено на обработку одного состояния в каждом КА. Все остальные схемы, включая всевозможные самодельные диспетчеры, готовые и опробованные RTOS, и т.п. проиграли.


Ну вот вы сами же и говорите, что это - достаточно узкая область, в ней работающие законы нельзя переносить на "вообще".

Цитата(Olej @ Mar 3 2006, 11:40) *
Категорически не согласен. В части задач разрабатывается параллельно программное обеспечение, микропроцессорное ядро под него и обвязка периферии, которая потом размещается в полностью заказной микросхеме. Кол-во ресурсов - это площадь - это доллары и центы. А зачастую экономия 10-ти центов полностью определяет выигрыш в конкуррентной борьбе. Так что ресурсы это золотой запас, о котором я думаю в первую очередь. (я сам являюсь проектировщиком RTL и топологии своих ИМС, кроме решения самих ДСП-задач, и разработки системы в целом).


Да, и это ещё более суженная сфера применения, когда нечто нужно вогнать "под крышку чипа". Но далеко не всем этого хочется wink.gif...


Цитата(SM @ Mar 3 2006, 15:59) *
Цитата(Olej @ Mar 3 2006, 11:40) *

P.S. Т.е. такая ваша позиция имеет право быть - но для очень ограниченного круга специфических задач, ЦОС как раз есть такая ниша, но и то - не всё даже, что ЦОС, а только отдельные подклассы задач в ЦОС.

Пока таковыми были ВСЕ решаемые мной задачи ЦОС. Они касались обработки голосовых каналов и каналов цифровой передачи данных (модемы). А также и не совсем ЦОС... Я еще не встретил ни одного чужого (не самодельного) планировщика, который был бы оптимален с моей точки зрения.


Пока таковыми были все решаемые вами задачи ЦОС в очень узкой сфере потоковой передачи информации (голос, модем). А вот в хорошо известной мне области - радиолокационных системах, задача потоковой ЦОС (и не менее напряжённой ЦОС) - это только одна из сопутствующих параллельных задач (выделение отметок, целеуказание, и др. и др.) - и при неэффективном их планировании сама задача ЦОС никому и даром не нужна (т.е. с большой вероятностью просто некому уже будет наслаждаться результатами её решения wink.gif).

Так почему вы так категорично считаете, что из "таковости" ВСЕХ решаемых вами задач - вытекает, что и все прочие должны поступать и думать только так?
Evgeny_CD
Цитата(Vic1 @ Mar 3 2006, 13:53) *
...Собственно - по поводу языковых средств могу только к Владимиру Зюбину отослать
http://reflex-language.narod.ru/ - предлагаемый им альтернативный язык программирования ПЛК
http://www.softcraft.ru/forum/viewtopic.ph...1a38d66e72e3492 - обсуждение его на форуме softcraft.ru
http://iprog.pp.ru/forum/read.php?f=1&i=34658&t=34658 - тоже в сфере профессиональных программистов ПЛК и АСУ ТП...
Я чего-то не догоняю. Берем eCos (как пример мощной, но компактной RTOS), пишем C код под библиотеку POSIX Theards - и получаем то же самое. И процессы, и взаимодействие между ними и пр.

Возможно, чтобы не перегружать входной буфер технологов АСУ ТП сложными конструкциями языка С, имеет смысл написать свой макро-язык, который бужет потом компилироваться в plain С под описанную выше комбинацию.

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

СОСТ
ЕСЛИ
СТАРТ ПРОЦ

загнивающий англосакс писал

STATE
IF
BEGIN

Китаец писал еще как-то, а наш компилятор компилировал все это в виде _tag_0x65454_ (ну и таблицу тегов).

Но я не понимаю, зачем вообще городить огород cranky.gif Почему нельзя взять Python, LUA, RUBY, написать расширение под целевую задачу (эти языки просто по определению расширяемые) и наслаждаться реультатом? Процессы, нити в этих языках есть, сами языки, мягко говоря, помощнее всех этих мэков и рефлексов вместе взятых будут. Или виновата косность мышления?

Пример того, что можно сотворить на LUA
http://www.circuitcellar.com/renesas2005m1...inners/1685.htm - информация
http://www.circuitcellar.com/renesas2005m1...85_abstract.pdf - статья
http://www.circuitcellar.com/renesas2005m1...tries/M1685.zip - исходники
http://www.itc.ua/article.phtml?ID=4114&IDw=33&pid=52 - статья


http://www.lua.org/ - гнездо LUA
SM
Цитата(Olej @ Mar 3 2006, 15:50) *
Цитата(SM @ Mar 3 2006, 15:59) *

Цитата(Olej @ Mar 3 2006, 11:40) *

P.S. Т.е. такая ваша позиция имеет право быть - но для очень ограниченного круга специфических задач, ЦОС как раз есть такая ниша, но и то - не всё даже, что ЦОС, а только отдельные подклассы задач в ЦОС.

Пока таковыми были ВСЕ решаемые мной задачи ЦОС. Они касались обработки голосовых каналов и каналов цифровой передачи данных (модемы). А также и не совсем ЦОС... Я еще не встретил ни одного чужого (не самодельного) планировщика, который был бы оптимален с моей точки зрения.


Пока таковыми были все решаемые вами задачи ЦОС в очень узкой сфере потоковой передачи информации (голос, модем). А вот в хорошо известной мне области - радиолокационных системах, задача потоковой ЦОС (и не менее напряжённой ЦОС) - это только одна из сопутствующих параллельных задач (выделение отметок, целеуказание, и др. и др.) - и при неэффективном их планировании сама задача ЦОС никому и даром не нужна (т.е. с большой вероятностью просто некому уже будет наслаждаться результатами её решения wink.gif).

Так почему вы так категорично считаете, что из "таковости" ВСЕХ решаемых вами задач - вытекает, что и все прочие должны поступать и думать только так?


Да потому, что область-то может и узкая, но внутри нее очень и очень много всего. Я думаю не многим меньше Вашей радиолокации, а возможно и больше. Там в одной системе есть и сбор данных с обработкой, и формирование ответа на основе результатов обработки, и сохранение аудиоинформации на жестком диске, и передача его в USB/Ethernet, и передача (по аналогии Вашего выделения отметок и т.п.) распознавание сигналов и сохранение/передача результатов этого распознавания, и еще много-много чего. Так что при детальном копании эта область вовсе не узкая в смысле задач. Она узкая в смысле видов обрабатываемых сигналов - но именно эта узость (типы сигналов) к рассматриваемому вопросу не относится. И еще раз повторюсь, что реализация этого всего вкуче на одном микропроцессоре без использования RTOS оказалась наиболее эффективна по моему критерию (минимальности ресурсов -> низкой цене в серии). Я не раз строил системы с использованием RTOS (когда надо было быстро показать результат, например представить на тендер), но потом это приводило ВСЕГДА к оптимизации программы с её выкидыванием. И не надо думать, что если каналы звуковые, то задачи вокруг них очень узкие. И, самое главное, не вижу ни одного преимущества у RTOS для КОНЕЧНОГО продукта. Вижу только на части этапов разработки, возможно при отладке самой алгоритмической части. Перед ее разбиением на "кванты" - состояния конечных автоматов. Ну еще - разве что когда заказчик сказал "мне это надо вчера" и ему не важна цена изделия (единичные экземпляры, ну десятки-сотни максимум).
Olej
Цитата(SM @ Mar 3 2006, 17:06) *
Да потому, что область-то может и узкая, но внутри нее очень и очень много всего. Я думаю не многим меньше Вашей радиолокации, а возможно и больше. Там в одной системе есть и сбор данных с обработкой, и формирование ответа на основе результатов обработки, и сохранение аудиоинформации на жестком диске, и передача его в USB/Ethernet, и передача (по аналогии Вашего выделения отметок и т.п.) распознавание сигналов и сохранение/передача результатов этого распознавания, и еще много-много чего. Так что при детальном копании эта область вовсе не узкая в смысле задач.


А если там есть а). много задач б). разнородных задач с). взаимодействующих - то можно утверждать абсолютно уверенно, что эффективного разделения ресурсов и взаимодействий в "ручном" коде вы - на сделаете. Для этого достаточно только посмотреть - сколько лет POSIX механизмы в части параллелизмов и синхронизаций изменяются, т.е. эволюционируют, т.е. худшее (или со скрытыми дефектами) - заменяется лучшим.

Цитата(SM @ Mar 3 2006, 17:06) *
И еще раз повторюсь, что реализация этого всего вкуче на одном микропроцессоре без использования RTOS оказалась наиболее эффективна по моему критерию (минимальности ресурсов -> низкой цене в серии).


А по критерию надёжности (т.е. отсутствия скрытых ошибок) и живучести? wink.gif

Цитата(SM @ Mar 3 2006, 17:06) *
И, самое главное, не вижу ни одного преимущества у RTOS для КОНЕЧНОГО продукта.


Я его назвал - абзацем выше. wink.gif
Многие из ваших устройств/систем работали в режиме 24 х 365 х ... 14 лет, к примеру?
С допустимым коэффициентом готовности ... не хуже 99.99999 - 5 9-ток это max. 5 мин. за 1 год непрерывной работы.
Olej
Цитата(Evgeny_CD @ Mar 3 2006, 16:55) *
Я чего-то не догоняю. Берем eCos (как пример мощной, но компактной RTOS), пишем C код под библиотеку POSIX Theards - и получаем то же самое. И процессы, и взаимодействие между ними и пр.


А этого никто не догоняет wink.gif.
Вообще, всё что есть языки МЭК - имеет хоть какой-то смысл только и исключительно для непрограммиста (возможно, технолога).
Во многих RTOS: QNX, pSOS, VxWorks - и изобретать ничего более не нужно, все механизмы взаимодействий POSIX или не POSIX но понятные по духу POSIX - здесь присутствуют.

Среди МЭК языков есть ST (структурированный текст) - двоюродный брат BASIC... Изобретать "ишо один язык" ... ? Если какой-то смысл в языках МЭК (5-ти) и есть для технолога (мне трудно влезть в шкуру технолога) - то только в тех, которые далеки именно от языков программирования, например FD (функциональных диаграм) - когда это визуальный построитель зависимостей, или язык .... релейной логики (RL, кажется) - это просто песня ("при чём погребальная"(с) Б.Акунин)... но может логикам-релейщикам так и понятно.

Ничего к программированию это не имеет отношения - это только нотации для выражения тем, кто не хочет писать программы.
Виктория
Olej
Цитата
Говорить о том, что PLC работают "без ОС" - не приходится: там всегда присутствует runtime среда, присутствующая всегда сверх того, что написал, например, тот же технолог на языках МЭК, и именно и обеспечивающая функционирование "того ..." .


Ну я это сразу отметила только другими терминами Target System или bios (хотела как термин, а SM обиделся слегка smile.gif ).
Я за общность в определениях - пусть будет runtime среда и будем ее считать как ОС (с этим я согласна).

Мою реплику
Цитата
Будет ли при этом этот новый case-инструмент альтернативой ОС РВ? Это возможно только на базе ОС РВ или самостоятельный путь развития программных технологий?

трактуем только в отношении существующих ОС РВ общего назначения (QNX, OS-9, ...)

Насчет языков программирования, если это тоже интересно (вообще то вопрос взаимосвязанный) мне кажется (крестится не буду smile.gif ) основное достоинство языков МЭК - введение новых элементов языка, отражающих специфику предметной области, причем не только новых структур данных, но и структур управления (если классически смотреть на язык высокого уровня (ЯВУ)).
Сюда же еще одна мысль - естественно ОС тоже может отражать специфику предметной области, только это отражение на уровне концепций ОС, ее внутренней архитектуры, выражающееся через некоторые правила работы в среде ОС путем использования системных вызовов.
И в первом, и во втором варианте - специфика предметной области может быть отражена в базисных примитивах. Зачем? -> Упрощение процесса разработки для конкретной области задач за счет технологичности программирования (вместо ручной дрели - электрическая), опять же за счет технологичности - повышение качества ПО в среднем (не ориентируясь на оч.умелые ручки), может быть немного спорная мысль - повышение эффективности самой программы (по известным критериям быстродействия/памяти или даже соответствия требованиям жесткого РВ и другим условиям исходной предметной области). Может быть немного и загнула smile.gif

Сомнения, конечно, всегда остаются насчет возвращения (этапа развития технологии) в предметно-ориентированное русло (всегда хочется универсальности ...)

Упоминаемые здесь скриптовые языки (собственно это обсуждение началось ранее в посте "Java in AVR") - все это тоже очень интересно, но runtime самим с нуля писать под предметную область. А как там обстоит дело с возможностью введения новых управляющих конструкций языка, (часто требующих доступа к аппаратному уровню целевой системы)? Один простой пример управляющей конструкции из "PLC культуры" - отработка таймаута.
И здесь в качестве runtime всегда используется интерпретатор sad.gif . А мне он не во всех предметных задачах нравится ... (предубеждение такое из-за ограничений по памяти/быстродействию).
Хотя может это предубеждение в будущем и развеется само собой по объективным причинам.

Цитата
Там ещё интереснее, если быть совсем точным...
Я не знаю как с CoDeSys (не было времени и случая), но с ISaGRAF покопался, и обстоятельно пообсуждал с парнями из "ФИОРД" С.-Петербург: система ISaGRAF может быть "заточена" (пересобрана) под разные исполняющие платформы (в их терминологии это называется "целевая функция"), и получается такая runtime среда исполнения, которая может крутиться:
- под RTOS ... тот же "ФИОРД" собрали "целевую функцию" под QNX;
- OS но не RT - одно из самых частых использований ISaGRAF это под Linux ... последнее время много пишут - под RT Linux, но RT Linux - это что-то вроде "осетрины второй свежести"...
- без всякой операционной платформы - над голым железом...

И в той, и в другой, и в третьей конфигурации - в среде ISaGRAF runtime будет выполняться один и тот же TIC-кода реализующий одну программу.


Интересно! Я знала только про портации CodeSys. Конечно, IsaGRAF сразу был ориентирован на различные ОС, а вот без ОС - это в какой-то мере новость.
SM
Цитата(Olej @ Mar 3 2006, 17:57) *
Цитата(SM @ Mar 3 2006, 17:06) *

Да потому, что область-то может и узкая, но внутри нее очень и очень много всего. Я думаю не многим меньше Вашей радиолокации, а возможно и больше. Там в одной системе есть и сбор данных с обработкой, и формирование ответа на основе результатов обработки, и сохранение аудиоинформации на жестком диске, и передача его в USB/Ethernet, и передача (по аналогии Вашего выделения отметок и т.п.) распознавание сигналов и сохранение/передача результатов этого распознавания, и еще много-много чего. Так что при детальном копании эта область вовсе не узкая в смысле задач.

А если там есть а). много задач б). разнородных задач с). взаимодействующих - то можно утверждать абсолютно уверенно, что эффективного разделения ресурсов и взаимодействий в "ручном" коде вы - на сделаете. Для этого достаточно только посмотреть - сколько лет POSIX механизмы в части параллелизмов и синхронизаций изменяются, т.е. эволюционируют, т.е. худшее (или со скрытыми дефектами) - заменяется лучшим.

Именно об этом говорю и я. Много задач. Разнородных. И я именно утверждаю, что сам сделаю более оптимально, чем при использовании чего-то готового в большинстве случаев. Это будет дольше, сложнее, но лучше.
Да-да... Худшее заменяется лучшим... Одни скрытые дефекты заменяются другими.
Цитата(Olej @ Mar 3 2006, 17:57) *
Цитата(SM @ Mar 3 2006, 17:06) *

И еще раз повторюсь, что реализация этого всего вкуче на одном микропроцессоре без использования RTOS оказалась наиболее эффективна по моему критерию (минимальности ресурсов -> низкой цене в серии).

А по критерию надёжности (т.е. отсутствия скрытых ошибок) и живучести? wink.gif

Однозначно лучше то, что сделано полностью самостоятельно. Отладка непонятно кем, непонятно чего и не в моих условиях не гарантирует ничего. И доверия у меня не вызывает. В отличие от самостоятельного проектирования всей системы по принципу разбиения на конечные автоматы с заданным максимальным временем исполнения каждого состояния. Если в диспетчере можно сделать ошибку - то тут ее сделать в принципе нельзя. Так как нет диспетчера. Все задачи вызываются последовательно обычной цепочкой CALL'ов на подпрограммы. Каждая подпрограмма - задача - КА. Тут нет никакого планировщика, никакой ОС - соответственно в ней и не может быть ошибки. И, как следствие, вообще меньше вероятность допустить ошибку. Другое дело, что писать всё в виде конечных автоматов, расписывая на состояния, и делая их такими, что в каждом из них программа не может находиться например более 500 тактов CPU - это не просто и надо иметь привычку и опыт. Ну еще схемы синхронизации - но они просты и стандартны. Так как нет переключения задач в непредвиденные моменты времени.

Цитата(Olej @ Mar 3 2006, 17:57) *
Цитата(SM @ Mar 3 2006, 17:06) *

И, самое главное, не вижу ни одного преимущества у RTOS для КОНЕЧНОГО продукта.

Я его назвал - абзацем выше. wink.gif


На мой взгляд введение RTOS в систему только понижает надежность, так как появляется лишний "слой", в котором может быть ошибка.

Цитата(Olej @ Mar 3 2006, 17:57) *
Многие из ваших устройств/систем работали в режиме 24 х 365 х ... 14 лет, к примеру?
С допустимым коэффициентом готовности ... не хуже 99.99999 - 5 9-ток это max. 5 мин. за 1 год непрерывной работы.


Они например стоят в составе этой системы
http://www.sl-systems.ru/products/models/sl-avia/
Виктория
Нет, Olej, я с Вами здесь не соглашусь
Цитата
А этого никто не догоняет .
Вообще, всё что есть языки МЭК - имеет хоть какой-то смысл только и исключительно для непрограммиста (возможно, технолога).
...
Ничего к программированию это не имеет отношения - это только нотации для выражения тем, кто не хочет писать программы.


Скорее - не может из-за громадного объема работ на плечи очень маленькой команды программистов (программистов, нету таких технологов, которые сами свой ТП автоматизируют) и коротких сроков выполнения этих работ. Или Вы под технологами этих программистов и понимаете? Из-за того, что они в предметную область ТП въехали? Чтобы технологи автоматизируемого ТП сами программы писали (или хотя бы легкие изменения вносили при эксплуатации - это мечта, может когда-нибудь и осуществится smile.gif).

Цитата
или язык .... релейной логики (RL, кажется) - это просто песня ("при чём погребальная"(с) Б.Акунин)... но может логикам-релейщикам так и понятно


smile.gif, респект. Еще насчет языков - удивляют языки программирования ПЛИС (там то наоборот вроде текстовые сейчас превалируют, и из-за этого несуразности другие видны, схемотехники забывают про классические решения своих задач - по вопросам на этом форуме заметила). off-topic

SM,
Цитата
Другое дело, что писать всё в виде конечных автоматов, расписывая на состояния, и делая их такими, что в каждом из них программа не может находиться например более 500 тактов CPU - это не просто и надо иметь привычку и опыт. Ну еще схемы синхронизации - но они просты и стандартны. Так как нет переключения задач в непредвиденные моменты времени.


как раз Вам бы - SFC в руки (это правда не совсем конечные автоматы, но зато сети Петри в чистом виде)

Evgeny_CD - Вам я вроде тоже ответила (про реализацию предметных примитивов в OC либо ЯВУ). Хотя насчет скриптовых языков я может и ошибаюсь.

И еще All - я конечно несчитаю стандарт МЭК идеальным (он слишком далек от этого, базисные примитивы еще требуют обсуждений и изменений, хотя они и из практики), но подход к программированию предметной области привлекает.
Evgeny_CD
Цитата(Vic1 @ Mar 3 2006, 18:22) *
...Упоминаемые здесь скриптовые языки (собственно это обсуждение началось ранее в посте "Java in AVR") - все это тоже очень интересно, но runtime самим с нуля писать под предметную область. А как там обстоит дело с возможностью введения новых управляющих конструкций языка, (часто требующих доступа к аппаратному уровню целевой системы)?...
Возьмите любую книжку по Питону - там подробно описано как встраивать новые сущности.

http://www.swig.org/ - тулза для этого.

По поводу LUA - есть ее порт eCos. Сайта разработчика его убрали - но у меня есть.
devel.elatec.si/

тут интересно
http://lua-users.org/wiki/LuaDirectory

IMHO, это будет самая экономичная реализация LUA. eCos живет на многих архитектурах.
ecos.sourceware.org
SM
Цитата(Vic1 @ Mar 3 2006, 18:44) *
Еще насчет языков - удивляют языки программирования ПЛИС (там то наоборот вроде текстовые сейчас превалируют, и из-за этого несуразности другие видны, схемотехники забывают про классические решения своих задач - по вопросам на этом форуме заметила). off-topic

Может и офф-топик (хотя часть задач RT-системы убирать в ПЛИС это очень распространенная практика, и, более того, очень удобное решение - реальное распараллеливание). Но не забываем мы никогда классические решения задач. Может кто-то и забывает, но это их проблемы smile.gif И не называйте это языками программирования - это языки описания аппаратуры (HDL).

Цитата(Vic1 @ Mar 3 2006, 18:44) *
как раз Вам бы - SFC в руки (это правда не совсем конечные автоматы, но зато сети Петри в чистом виде)

Возможно. Однако кроме того, что я противник всяких ОС, я еще и не люблю языки высокого уровня в embedded. Практически все мои проекты ассемблерные. (или ассемблер (CPU) + HDL (ПЛИС)). Опять же всевозможные библиотеки и компиляторы - это конкретный источник непредвиденных глюков и ошибок.
Виктория
Evgeny_CD, спасибо почитаю. Если найду, что можно добавить новый цикл (с новыми элементами управления, пусть по таймеру) - все мои сомнения разрешатся.
To SM
Цитата
Но не забываем мы никогда классические решения задач. Может кто-то и забывает, но это их проблемы И не называйте это языками программирования - это языки описания аппаратуры (HDL).

Молодежь на этом форуме забывает... А название - тоже из раздела форума заимствовала.. Все таки какая то реальность бытия здесь отражена smile.gif
Evgeny_CD
Цитата(Vic1 @ Mar 3 2006, 19:07) *
Evgeny_CD, спасибо почитаю. Если найду, что можно добавить новый цикл (с новыми элементами управления, пусть по таймеру) - все мои сомнения разрешатся.
Я не возьмусь Вас консультировать - но то, что такое туда добавляется - у меня сомнений нет!
SM
Цитата(Vic1 @ Mar 3 2006, 19:07) *
Цитата
Но не забываем мы никогда классические решения задач. Может кто-то и забывает, но это их проблемы И не называйте это языками программирования - это языки описания аппаратуры (HDL).

Молодежь на этом форуме забывает... А название - тоже из раздела форума заимствовала.. Все таки какая то реальность бытия здесь отражена smile.gif

Она, молодежь, не забывает. Она еще не знает smile.gif Это стандартно для тех, кто все время работал с МК, решил поработать с ПЛИС.
Andrew2000
Маленькие замечания.

ISaGRAF - интерпретатор.
Других интерпретаторов не знаю. CoDeSys, OpenPCS - компиляторы (т.е. так называемая целевая/управляющая система там присутствует, но пользовательский код (МЭК языки) компилируется).

ISaGRAF-у ОС, собственно, и не нужна, ему нужен аппаратный таймер, по которому он будет следить за временем выполнения такта: ввод-обработка-вывод - wait, если быстро, ошибка, если переполнение такта - вот и все реальное время ...
А вот когда появляется задача связи (по Ethernet, например), то тут удобнее ОС: 1 задача - задача связи, вторая задача - интерпретатор TIC-кода (хотя, никто не мешает организовать связь на прерываниях).

Siemens STEP7 - больше чем уверен, что компилятор. Новые Siemens PLC вообще построены на чипе Speed7 - http://www.speed7.com/ - спец. CPU заточенные под STEP7.

По поводу технологов - их язык FBD - т.е. функциональные блоки (LabView туда же).
Они так видят мир smile.gif И не надо им мешать.
Еще в МЭК считаю полезным SFC.
А ST там для того, если поймают обычного программиста и скажут - пиши на МЭК языке - ему будет куда спрятаться (шутка).

Рефлекс, как я понял, это еще один вариант SFC+ST.
(поправьте, если я не прав)

Ну приведу еще один язык(пример), который любят наши технологи (тоже аналог SFC+ST):
прог ТАЙМЕР_1 выкл;
сит начало;
переход СЧЕТ;
конец;
сит СЧЕТ;
T_1 = 0; t_1 = 0;
м: t_1 +=1;
переход ДОБАВИТЬ_СЕК если t == 100, //
СЧЕТ.м;
конец;
сит ДОБАВИТЬ_СЕК;
T_1 += 1; t_1 = 0;
переход СЧЕТ.м;
конец;
конец;

А когда им предложили ISaGRAF - они отказались - по-русски писать нельзя smile.gif
Olej
Цитата(Vic1 @ Mar 3 2006, 19:22) *
Насчет языков программирования, если это тоже интересно (вообще то вопрос взаимосвязанный) мне кажется (крестится не буду smile.gif ) основное достоинство языков МЭК - введение новых элементов языка, отражающих специфику предметной области, причем не только новых структур данных, но и структур управления (если классически смотреть на язык высокого уровня (ЯВУ)).
Сюда же еще одна мысль - естественно ОС тоже может отражать специфику предметной области, только это отражение на уровне концепций ОС, ее внутренней архитектуры, выражающееся через некоторые правила работы в среде ОС путем использования системных вызовов.
И в первом, и во втором варианте - специфика предметной области может быть отражена в базисных примитивах. Зачем? -> Упрощение процесса разработки для конкретной области задач за счет технологичности программирования (вместо ручной дрели - электрическая), опять же за счет технологичности - повышение качества ПО в среднем (не ориентируясь на оч.умелые ручки), может быть немного спорная мысль - повышение эффективности самой программы (по известным критериям быстродействия/памяти или даже соответствия требованиям жесткого РВ и другим условиям исходной предметной области). Может быть немного и загнула smile.gif


Языки МЭК вызывают у меня ... какие-то смутные ощущения wink.gif, не пойму пока:

1. в объяснение почему их 5 (да ещё ISaGRAF от себя 1 вводит, да ещё всё новые предлагаются, как здесь указывали...) я как-то в одном очень заслуживающем уважения месте вычитал примерно следующее: "... комитет долго спорил, чтоб не отдать предпочтение ни одному из уже установившихся поставщиков PLC в ущерб другим ... поэтому их 5 ..." - тут и задумаешься: мы хотим обсуждать высокотехнологическое средство, или кто, как, почём и больше продаст в рыночной стихии - тогда это мне совсем неинтересно.

2. кто их использует (здесь уже столкнулись с разночтениями в терминологии: технологи / программисты)? я перед собой ежедневно вижу парней, рисующих этими tools системы автоматики... и вот что я наблюдаю:
- ни один настоящий технолог в это занятие не полезет ... это технологу - чуждо, потому как всё равно по сути деятельности требует ... мышления программистского;
- заказчик всегда говорит: "с таким инструментом - мои эксплуатационщики всегда могут сесть и внести изменения в систему, подкорректировать её ... потом" - это полный бред: эксплуатационщик в принципе с таким инструментом, в силу его простоты, может "влезть" ... но единственным результатом такого влезания может быть только полное разрушение системы: исправляя в программе ошибку мы всегда вносим 3 новые, и бороться с этой прогрессией - нужно иметь навыки, и навыки эти - программистские.
- но назвать этих парней, "пишущих" на МЭК языках, программистами ... у меня как-то язык не поворачивается: они, обычно, не сильно задумываются, что такое IP-адрес, и очень удивляются, почему IP-адрес записывается как x.y.z.w, а Modbus-адрес - как x.y sad.gif, я обычно этот персонал называю "проектанты" (чтоб каждую вещь хоть как-то называть - нельзя же их называть ни технологи ни программисты).
- начитавшись предисловий, что "... работа такая не требует высокой квалификации и можно привлекать персонал невысокой квалификации..." - наши администраторы хотя бы задумались (хоть вообще об чём-то думали, например, зачем и в чьих интересах такое пишется?): это в наших то условиях? когда хлопчика ещё не закончившего институт и бегающего на занятия между работами - можно нанять за $400, а самого профессионального программиста-"волкодава" - $800 (цифры условные ... региональные wink.gif, но соотношение везде сохраняется).

Цитата(Vic1 @ Mar 3 2006, 19:22) *
Интересно! Я знала только про портации CodeSys. Конечно, IsaGRAF сразу был ориентирован на различные ОС, а вот без ОС - это в какой-то мере новость.


Вот это интересное место. Дело то в том, что в циклической алгоритмике управляющего АСУТП процесса: - ввод - обработка - вывод - , когда это принципиально однонитевой циклический процесс - вполне достаточно на все случаи жизни MS-DOS! И никаких особо специфических функций OS (RT или не RT) - особенно не нужно. До тех пор, пока не привносится каким-то образом параллелизм. Это в точности та же история, когда при работе над MS-DOS v.2 компашка Билли Г., в силу своей невежественности к тому времени, молодости и задора - напрочь исключили возможности параллелизмов из ОС (когда в более ранней и лучше CP/M этому уже уделялось внимание, и уже создавались первые версии QNX). А потом все годы "триумфального шествия" MS-DOS - это была борьба и успешные победы тех трудностей, которых нагородили с самого начала: print-spooler, мультиплексор INT 2F, TSR-программирование кто и во что горазд...

Я думаю, что успешная жизнь PLC (более 15 лет с ранних 90-х), когда в первоначальных моделях ничего управляющего более MS-DOS и быть не могло - определяется кажущейся сверхвысокой надёжностью и устойчивостью, обеспечиваемые, на самом деле, принципиально однонитевой цикличной природой вычислительного процесса АСУТП.

Вот здесь косвенно тоже это прозвучало:

Цитата(Andrew2000 @ Mar 3 2006, 21:57) *
ISaGRAF-у ОС, собственно, и не нужна, ему нужен аппаратный таймер, по которому он будет следить за временем выполнения такта: ввод-обработка-вывод - wait, если быстро, ошибка, если переполнение такта - вот и все реальное время ...
А вот когда появляется задача связи (по Ethernet, например), то тут удобнее ОС: 1 задача - задача связи, вторая задача - интерпретатор TIC-кода (хотя, никто не мешает организовать связь на прерываниях).


Да, 1 принципиально требующая параллельности ветвь - всегда появляется при требовании сетевых средств, или, если шире - любых асинхронных обменных процессов.

Но есть и другой скрытый механизм параллельности, и это гораздо серьёзнее... Когда рассматривают вот тот цикл работы АСУТП процесса: - ввод - обработка - вывод - часто неявно предполагается, что всё именно так и производится: по циклу ввод начинаются обменные операции, после завершения которых - начинается обработка полученных данных и т.д.
Но такое может быть только в крайне примитивных реализациях (которые, кстати, производители нередко именно и стараются "протолкнуть" системному интегратору).
Рассмотрим конкретный пример: 900 бинарных сигналов (это реально одна из последних задач, которую я "мозговал"), ввод каждого - не очень быстрый (RS-485 Modbus + не очень быстрая периферия) - скажем 1 мс. (это, кстати, и не так плохо)... По вот той схеме выше: начинаем читать сигнал 1, через 1 мс., получив данные - сигнал 2, ... i, ... i+1 - через чуть больше 900 мс. (1 сек.!) - начинаем логически перебирать эти сигналы, ещё 300 мс., скажем ... и т.д.
Зачем? Мы можем:
- параллельно с уже идущем циклом обработки (предыдущим)...
- запустить операцию на 1-й переменной, и не дожидаясь её завершения - на 2-й и т.д. ...
- через некоторое время операции 1, 2, ... i,i+1,... начнут завершаться, возможно совсем в другом порядке, чем они запускались...
- и вот когда все 900 операций ввода завершатся - тогда мы имеем право обновить буфер входных переменных, и следующий цикл обработки выгребет эти обновлённые данные...
- а все более ранние циклы обработки, которым придёт время начаться ранее полного завершения цикла ввода (здесь всё определяется соотношениями циклов ввода и обработки) - они спокойно возьмут себе старый комплект переменных, но только полный комплект! считанный предыдущим завершившимся циклом ввода (таким образом несколько последовательных циклов обработки могут работать с одним необновляемым набором входных переменных").
И вот здесь простейшая runtime исполняющая система PLC становится ... "просто беда" wink.gif.
Olej
Цитата(Andrew2000 @ Mar 3 2006, 21:57) *
ISaGRAF - интерпретатор.
Других интерпретаторов не знаю. CoDeSys, OpenPCS - компиляторы (т.е. так называемая целевая/управляющая система там присутствует, но пользовательский код (МЭК языки) компилируется).


Но здесь тоже нужно соблюдать определённую осторожность: интерпретатор чего? (или компилятор во что?)

ISaGRAF - интерпретатор промежуточной формы TIC, в которую компилируются программные компоненты, созданные на любом из МЭК языков.

В этом смысле и Java - интерпретатор, а уж .NET - и подавно wink.gif...
Тот же считающийся повсеместно интерпретатор (скриптовый язык wink.gif) Perl в релизе после 5-го - в значительно большей степени компилятор в промежуточный код, чем интерпретатор этого кода.

CoDeSys, OpenPCS - компиляторы во что? в систему команд целевой платформы ... в чистом виде, "окончательно и бесповоротно"? Сильно сомневаюсь! wink.gif
Даже те же С/С++ системы имеют достаточно развитую исполняющую систему: активация, прологи, эпилоги, обработчики исключительных ситуаций, сигналов... всё управление динамической памятью - это всё "интерпретирующие компоненты".
Andrew2000
Перечитал вниметельнее - выскажу свои мысли.

Evgeny_CD:
"
1. Ось - это совокупность стандартов и методологических подходов,
которая обеспечивает:
* разработку кода силами команды (>1 человека), причем код, написанный
одним человеком, с небольшими усилиями используется другим
* повторное использование кода от проекта к проекту
* переносимость между целевыми платформами и средами разработки
"
Нет, извините, Переносимость - да, а остальное к Оси отношение не имеет.
Грамотные "черные ящики" - сила любого проекта.

А с остальным я полностью соглашусь.

===

Vic1:
"
Можно еще эту книгу почитать (не слишком доверяя автору, но и не слишком критикуя)
http://www.natahaus.ru/2006/02/17/programm...ontrollery.html
"
_не слишком доверяя автору_ - а можно подробнее? книгу читал, а где надо не доверять?

"
Это все давно известно для задач АСУТП (их основное отличие от задач ЦОС - "мягкое" реальное время,
в остальном - много похожих свойств).
"
Я думаю, "мягкое" реальное время и задачи АСУТП связывать не надо - "мягкое реальное время" -
это как систему построить, а АСУТП разные бывают.

====

Vic1:
"
Насчет Siemens и его Step7 такой уверенности нет (вроде как без ОС РВ).
И еще, очевидно что подход с интерпретатором TIC-кода для ЦОС и ИИС не подойдет
(если только не уйдем куда-нибудь совсем в сторону изменяемой системы команд процессора под свою задачу ...)
"
Вот Siemens как раз сюда и ушел - см Speed7 - http://www.speed7.com/ smile.gif
А Vipa (брат-близнец Simatic) ставит на свои контроллеры eCOS.
Только одно _но_ - у них в одном контроллере 3 CPU: Speed7 для выполнения технологического алгоритма,
х86 (видимо он с eCOS) для связи с верхним уровнем по Ethernet и какой-нить SAB+ASPC2 для сети Profibus.
(Не уверен на 100%, но общая картина такая)

"
Хотя когда появились ПЛК и эти языки МЭК - уж такие размахивали флагом "открытых систем".
А на вопрос про переносимость и включение своего драйвера - да ОЕМ часть обязательно есть
(заплати только огромную сумму)! Ну это off-topic.
"
А Вы обратили внимание на историю МЭК языков (их корни) и какие фирмы этот МЭК между собой сделали стандартом ? smile.gif

===

Olej:
"
Там ещё интереснее, если быть совсем точным...
Я не знаю как с CoDeSys ...
"
А точно так же как и с ISa, только CoDeSys компилятор, и надо смотреть поддерживает-ли он платформу.

===

Evgeny_CD:
"
имеет смысл написать свой макро-язык, который ...
"
Так МЭК стандарт так и создавался smile.gif
Только фирмы, создавшие языки были крупными и сделали из внутрифирменного решения IEC.
(И как Siemens свой Profibus сделал МЭк-овским)

===

SM:
"
Кол-во ресурсов - это площадь - это доллары и центы.
"
"
Да потому, что область-то может и узкая, но внутри нее очень и очень много всего ...
"

Все-таки, тут обсуждается два разных подхода. Назовем их "ЦОС" и "АСУТП", условно.
1. "ЦОС" - Вы разрабатываете _изделие_, как правило, массовое, и сдаете его заказчику.
Сперва у Вас присутствует ОС, затем, после оптимизации уходит (а может и остается,
а может видоизменяется, не важно).
(Честно говоря, я так и живу smile.gif Сначала работают несколько задач под ОС,
а в релизе - одни прерывания и ОСь с одной задачей .... для диагностики)
Такие системы, узкоспециализированные _в конечном итоге_, выжимают из аппаратуру ~100%.
2. "АСУТП" - Вы сдаете заказчику _конструктор_, на базе которого он (а может и Вы сами)
строит систему управления производством - здесь многократный запас по производительности,
и "живая" (т.е. ПО меняется) система (добавь еще две ложки .... как в к/ф "33").

===

Vic1:
"
основное достоинство языков МЭК - введение новых элементов языка, отражающих специфику
предметной области, причем не только новых структур данных, но и структур управления
"
?????

"
Упоминаемые здесь скриптовые языки .... А как там обстоит дело с возможностью введения
новых управляющих конструкций языка, (часто требующих доступа к аппаратному уровню целевой системы)?
"
А тут (МЭК) это тоже никак не обстоит.

====

SM:
"
Самый выигрышный вариант оказался построение системы как ряда последовательно вызываемых конечных автоматом
в бесконечном цикле ...
"
"
Так как нет диспетчера. Все задачи вызываются последовательно обычной цепочкой CALL'ов на подпрограммы.
Каждая подпрограмма - задача - КА. ... , что в каждом из них программа не может находиться например
более 500 тактов CPU
"
Отличное описание работы ISaGRAF-a, точнее его целевой задачи.
Ессно, эта задача может быть запущена как без ОС, так и как процесс под ОС.
Andrew2000
Цитата(Olej @ Mar 4 2006, 16:24) *
Языки МЭК вызывают у меня ... какие-то смутные ощущения wink.gif, не пойму пока:

2. кто их использует (здесь уже столкнулись с разночтениями в терминологии: технологи / программисты)?

Но есть и другой скрытый механизм параллельности, и это гораздо серьёзнее... Когда рассматривают вот тот цикл работы АСУТП процесса: - ввод - обработка - вывод - часто неявно предполагается, что всё именно так и производится: по циклу ввод начинаются обменные операции, после завершения которых - начинается обработка полученных данных и т.д.


МЭК языки испоьзуют (по-моему мнению):
- программисты-технологи, т.е. люди, умеющие составлять программы и разбирающиеся в тех.процессе. они очень любят язык FBD (мое наблюдение).
- обычные программисты, которых наняли для тех же работ и сказали - пишите на МЭК языках, т.к. это круто и только МЭК языки весь мир применяет. Это самый ужасный случай. Они пишут, матеряться, и говорять что на асм/С/С++ написали бы быстрее.

Под циклом ввода и вывода в МЭК системых подразумевается отображение входных/выходных данных на внутренние переменные. т.е. как этот ввод/вывод происходит - дело разработчика контроллера (в параллельной задаче, или параллельно аппаратурой, ...)


Цитата(Olej @ Mar 4 2006, 16:34) *
Но здесь тоже нужно соблюдать определённую осторожность: интерпретатор чего? (или компилятор во что?)


Интерпретатор TICкода, т.е. пользовательской программы - ISaGRAF.
Компилятор в машинные коды (тоже пользовательской программы) - CoDeSys
Olej
Цитата(Andrew2000 @ Mar 4 2006, 22:35) *
МЭК языки испоьзуют (по-моему мнению):
- программисты-технологи, т.е. люди, умеющие составлять программы и разбирающиеся в тех.процессе. они очень любят язык FBD (мое наблюдение).
- обычные программисты, которых наняли для тех же работ и сказали - пишите на МЭК языках, т.к. это круто и только МЭК языки весь мир применяет. Это самый ужасный случай. Они пишут, матеряться, и говорять что на асм/С/С++ написали бы быстрее.


Так не пишите wink.gif...
Или пишите "на асм/С/С++" быстрее wink.gif.
Я, например, на это так и смотрю: хотите - я на С/С++ вам это сделаю, не хотите - пусть другие на МЭК "лабают", а я посижу в сторонке, посмотрю...

И из множества предпринятых попыток "подходов" к этому классу задач, я вынес и осмелюсь сделать такие предположения:
- каждая комерческая система проектирования логики + SCADA - хороша применительно только для той области, для которой она изначально разрабатывалась... , да ещё и лучше всего в руках именно тех, кто её и разрабатывал wink.gif;
- если "идти" на целую цепочку проектов в однотипной области использования - то лучше не использовать ничего из коммерческих tools, а, проанализировав, по образу и подобию ... сделать свой набор tools для наиболее общих случаев или элементов своей области, на тех же С/С++ (asm я сознательно исключаю, т.к. приобрёв в нём весьма приличный опыт - пришёл к выводу, что ничего в asm нельзя сделать того, чего нельзя в С, а если можно - то это только от неумения wink.gif)...
- и потом уже с использованием этого tools - лепить проекты в своей прикладной области.

Цитата(Andrew2000 @ Mar 4 2006, 22:35) *
Под циклом ввода и вывода в МЭК системых подразумевается отображение входных/выходных данных на внутренние переменные. т.е. как этот ввод/вывод происходит - дело разработчика контроллера (в параллельной задаче, или параллельно аппаратурой, ...)


Всё так, только в том то и дело, что "в зависимости от" :
- цикл на одном и том же оборудовании может отличаться на порядок (не переходя никуда в более производительные платформы);
- уровень/степень надёжности (ошибок, или обратно - уровень тщательности и квалификации) для реализации вот этого "на порядок больше" - тоже может потребоваться на порядок больше.

И это не совсем дело "разработчика контроллера", т.е. в прямолинейной как у носорога US-действительности, когда "разработчик" пишет: делай-раз, делай-два, и т.д. - и "всё гарантируется ОК" - можно и так подходить ... только мне хотелось бы знать а чем конкретно вот тот "разработчик контроллера" это гарантирует?

Пример: меня очень радует документация Modicon/Schneider Electric ... особенно в том месте, когда они предлагают в пакете разработки логики PLC Unity Pro ... наличие целых до 7-ми, кажется, параллельных задач в логике - ввод - обработка - вывод - ... (приоритетная задача, таймерные процедуры etc.). Вы хорошо себе представляете, что такое асинхронно возбуждаемая таймерная задача, которая начинает с чтения входных переменных (с уже начатой, возможно, обработкой фоновой задачи с прежними значениями переменных), да ещё когда они все написаны на МЭК, в которых в принципе даже не задумывались над синхронизацией значений переменных... На такой провокационный вопрос служба техподдержки Schneider Electric мычит что-то нечленораздельное, что мол, набор переменных одной задачи, и другой задачи - это непересекающиеся наборы, ... только на кой хрень мне параллельные задачи на непересекающихся наборах данных - я не собираюсь делать 7 независимых систем управления на одном PLC: кофеваркой, летательным аппаратом, уличным освещением ... и ещё одним ЦОС wink.gif.
Так что - не так всё там просто!
=AK=
Чтобы лучше понять суть МЭК-овских языков, настоятельно рекомендую ознакомиться с историей создания ПЛК. Лучше всего читать первоисточник, http://www.barn.org/FILES/historyofplc.html

Я бы выделил следующие существенные моменты:
-- ПЛК изначально создавался как средство замены релейных шкафов автоматики. Первые языки программирования ПЛК "имитировали" релейные схемы. Our customers treated the programmable controller as a box of relays, and well they should. Language theory is neither necessary not desirable for most of the customers to know. The customers, instead, understand their problem, and are indeed much smarter than the design engineers because the dimensions of their problem far exceed the relatively simple problem of designing a computer software system and language. Языки ST и SFR - это более поздние добавки.
-- Языки создавались на сравнительно бедной базе вычислительной техники 70-х ... 80-х годов, как аппаратной, так и программной. "Если нет гербовой бумаги - пишем на простой" (с) Поэтому имитация релейных схем изначально была достаточно условной.

Элементы настоящих релейных схем работают параллельно и одновременно. Для полноценной их имитации был бы необходим язык наподобие VHDL, или что-то вроде функционального языка, где последовательность написания операторов (в VHDL - процессов) не играет роли. А МЭК-овские языки реализованы намного проще, они несут в себе "родимые пятна" императивного программирования, где последовательность написания операторов все-таки играет роль. Вернее, сам МЭК-стандарт не требует этой "императивности", но из прагматических соображений допускает ее. Поэтому критика МЭК-овских языков с позиций императивного программирования в сущности не имеет под собой оснований.

Программы на МЭК-овских языках надежны прежде всего потому, что представляют пользователю очень простую и понятную модель поведения: все операторы в идеале исполняются "одновременно". А заморочки неодновременного исполнения - это уже нюансы реализации, исторические "родимые пятна". В конечном счете, надежность программ зависит прежде всего от человека, а именно - от того, насколько он хорошо представляет, что делается, и насколько он "держит в голове" что происходит в его программе. То есть, насколько хорошо он моделирует систему. Если порядок исполнения операторов неважен (пусть даже условно), это сильно упрощает моделирование и, соответственно, повышает надежность программы. Средства программирования ПЛК являются тому подтверждением.
Evgeny_CD
Думаю, в свете всех этих PLC языков программирования будет интересна эта книга
http://www.natahaus.ru/2006/03/05/SWITCH__tekhnologija.html
А.А. Шалыто
SWITCH - технология
Алгоритмизация и программирование задач логического управления
Издательство: Наука
Год: 1998
Формат: DjVu
http://rapidshare.de/files/14697466/SWITCH.rar.html
без пароля

Читая все эти материалы материалы по МЭК и дгуим подобны ужасам, мне, с одной стороны, становится страшно (есть еще заповедники "непуганных идиотов" (я не хочу обижать приверженцев МЭК) - и как только все эти заводы & фабрики работают?), с другой стороны, я наполняюсь оптимизмом - рано или поздно, когда знания по "нормальным подходам" к программизму станут широко доступными - придет время революции в мире PLC. Как следствие, для меня и других разработчиков будет БОЛЬШОЕ поле для деятельности. Разумеется, "старое" будет отчаянно сопротивляться - но кто его, "старого" спросит...

Одним из моих выводов (IMHO) - ждем появления аналого Micro$oft (или самих мелкомягких) в области PLC. Не завтра, но рано или поздно он появится. Ибо, с моей точки зрения, терпеть дальше все это безобразие с Бейсик-подобными языками - "держаться больше нету сил" ((С) "Тайна 3 планеты"). А кто привнесет стройную и ясную концепцию, дополненную высокопрофессиональным PR - тот и победит. Стоимость аппаратуры и софта тут не так важна. Т. е. по сути нужны:
* новый хороший язык
* несколько хороших книжек
* GPL реализация всего этого, желательно на любой аппаратной платформе для учебно-ознакомительных целей (ограниченная реализация)
* нормальный коммерческий продукт за вполе нормальные $$$
* и главное, главное - маркеторлоги и PR-щики, которые все это пропихнут.

Надо будет присмотреться к миру PLC более внимательно! biggrin.gif

Цитата(Andrew2000 @ Mar 4 2006, 21:14) *
Нет, извините, Переносимость - да, а остальное к Оси отношение не имеет.
Грамотные "черные ящики" - сила любого проекта.
Да. Но проще взято готовый и продуманный стандарт на такие "черные ящики" (медололгия проектирования под выбранную ОС называется), и пополнить его по своему усмотрению, чем все "изобретать с нуля".
=AK=
Цитата(Evgeny_CD @ Mar 5 2006, 19:54) *
Думаю, в свете всех этих PLC языков программирования будет интересна эта книга
http://www.natahaus.ru/2006/03/05/SWITCH__tekhnologija.html

"Излашается технология алгоритмизации и программирования задач логического управления на основе теории автоматов." Ладно, пускай "излашается" biggrin.gif

Цитата(Evgeny_CD @ Mar 5 2006, 19:54) *
Читая все эти материалы материалы по МЭК и дгуим подобны ужасам, мне, с одной стороны, становится страшно (есть еще заповедники "непуганных идиотов" (я не хочу обижать приверженцев МЭК) - и как только все эти заводы & фабрики работают?), с другой стороны, я наполняюсь оптимизмом - рано или поздно, когда знания по "нормальным подходам" к программизму станут широко доступными - придет время революции в мире PLC... ждем появления аналого Micro$oft (или самих мелкомягких) в области PLC

Угу. "Мы наш, мы новый мир построим..." (с) Не разбираясь, навесим на реально работающую технологию "правильные" ярлыки, выкинем на помойку, а потом будем изобретать свой велосипед, пусть изначально кривой, но зато за отдельные деньги. Это и есть стиль мелкомягких, истинная правда... cranky.gif
Andrew2000
Цитата(Evgeny_CD @ Mar 5 2006, 13:24) *
Читая все эти материалы материалы по МЭК и дгуим подобны ужасам, мне, с одной стороны, становится страшно ... - и как только все эти заводы & фабрики работают?), ... - рано или поздно, когда знания по "нормальным подходам" к программизму станут широко доступными
...
Одним из моих выводов (IMHO) - ждем появления аналого Micro$oft (или самих мелкомягких) в области PLC. Не завтра, но рано или поздно он появится. Ибо, с моей точки зрения, терпеть дальше все это безобразие с Бейсик-подобными языками -
...
Стоимость аппаратуры и софта тут не так важна. Т. е. по сути нужны:
* новый хороший язык
* GPL реализация всего этого, ...


Начнем с ужасов.
Настоятельно _не_ рекомендую читать эту статью:
К ПЯТИЛЕТИЮ СТАНДАРТА IEC 1131-3. ИТОГИ И ПРОГНОЗЫ Copyright 1998, Vladimir Zyubin.
1998г - немного устарела, а _главное_ - получите неверное представление о МЭК языках.

Что Вы понимаете под ""нормальным подходам" к программизму"? Чего Вам не хватает в МЭК языках?
Это всего _языки_, а подходы - это Ваше дело.
"безобразие с Бейсик-подобными языками" - может Вы эту статью уже прочитали?
Откуда про Бейсик?!?!

МЭК языки:
- SFC - Sequential Function Chart - можно назвать диаграммой состояний - каркас программы управления.
- FBD - Functional Block Diagram - как я уже писал, это то, что любят технологи. Это совсем другой подход к программированию. Это не структурный подход и не объектно-ориентированный - это язык, управляющий потоками данных.
Это аналог MATLAB, LabView, и т.д., мне, например, очень тяжело было "переключить" мозги на этот стиль со структурного подхода. Но, есть много людей успешно работающих с MATLAB/LabView/FBD, может Вам и удасться предложить им свой "нормальный подход".
- ST - Structured Text - это Паскаль/Бейсик/С - как его только не называют. Я, когда с ним познакомился, увидел в нем Fortran smile.gif А собственно, что тут удивительного ...
Не нравиться Вам FBD - вот Вам ST. Кстати, объектно-ориентированные зачатки в МЭК языках тоже есть - это Функциональные Блоки (Function Blocks) - не путать с языком FBD.
- IL - Instruction List - "универсальный" Ассемблер, происхождение - STEP5. Нужен был для переноса программ со STEP5. Современное назначение этого языка - организация PLCOpen сертифицирует ПО программирования ПЛК на соответствие стандарту МЭК - и это _единственный_ язык на соответствие которому сертифицированы все известные системы программирования ПЛК smile.gif (см. http://www.plcopen.org/). Изучать/писать на этом языке, я думаю, уже никто не будет.
- LD - Ladder Diagram - язык релейно-контактных схем, кстати, у технологов до сих пор пользуется спросом.

"ждем появления аналого Micro$oft"? А что Micro$oft сделали в "нашем" мире? кроме Бейсик-а smile.gif
Свой Micro$oft в мире PLC и так есть - это Siemens со своим STEP5/7 - для тех же целей но не мэк, я свой собственный.

"новый хороший язык" - не спорю, никогда не помешает, ждемс smile.gif
"GPL реализация всего этого" - на sourceforge можно найти - какой-то Чех или Словак написал (не помню) - язык документации похож на украинский (только латинскими буквами), тяжело, но читать можно smile.gif
Кроме того - http://linuxplc.org/


Теперь по теме ветки smile.gif
Когда в ПЛК ОС не нужна - когда у Вас работает только одна задача (POU "Program"), т.е. единственный цикл/такт ввод-обработка-вывод с фиксированным/заданным временем такта, а ввод/вывод данных можно обеспечит параллельно на прерываниях или аппаратно.
Если Вам потребуется более одного цикла (кстати ISaGRAF версии 3 это не поддерживает, только ISaGRAF Pro), например, когда нужно разное время реакции для управления двумя объектами - тут без ОС тяжело.
=AK=
Цитата(Andrew2000 @ Mar 6 2006, 06:37) *
Настоятельно _не_ рекомендую читать эту статью:
К ПЯТИЛЕТИЮ СТАНДАРТА IEC 1131-3. ИТОГИ И ПРОГНОЗЫ Copyright 1998, Vladimir Zyubin.
1998г - немного устарела, а _главное_ - получите неверное представление о МЭК языках.

Это не статья, а бред.

Цитата(Andrew2000 @ Mar 6 2006, 06:37) *
- ST - Structured Text - это Паскаль/Бейсик/С - как его только не называют. Я, когда с ним познакомился, увидел в нем Fortran smile.gif

ST происходит от благородной Модулы. Паскалем его еще можно назвать с большой натяжкой, но уж Бэйсиком, С или Фортраном ST обзывать могут только люди совсем несведущие.

Цитата(Andrew2000 @ Mar 6 2006, 06:37) *
- IL - ... происхождение - STEP5.

Не надо повторять зюбинские бредни.
Andrew2000
Цитата(=AK= @ Mar 6 2006, 00:35) *
ST происходит от благородной Модулы. Паскалем его еще можно назвать с большой натяжкой, но уж Бэйсиком, С или Фортраном ST обзывать могут только люди совсем несведущие.

Да, видимо, Вы правы. Паскаль я совсем не знаю и ничего сказать не могу. А вот Фортран мне вспомнился по индексам в массивах, по FUNCTION и FUNCTION_BLOCK, еще чего-то, не помню...

А по-поводу IL - поправте, почему бредни? была у меня когда-то документация на STEP, видел я там такое (правда давно, может память изменяет) или корни еще дальше?
Evgeny_CD
"Вредная" статья
http://www.msclub.ce.cctpu.edu.ru/plc/iec1131.htm
будет время - почитаю, помня все, что тут было сказано.

Да, стоит признать, что в PLC я профан. Но меня _интуитивно_ смущает другое. Возникает ощущение искуственности созданного мира. Т.е. есть мир "обычного" программизма - от 51 однокристалки до кластера на AMD64, который живет по одним, в общем-то, законам. И есть мир PLC, где сущность "обычного" программизма старательно спрятана за масками МЭК и пр. "языков программирования".

Но PLC'шники не одиноки в старании спрятать "отпугивающее мурло" системного программизма. Для этого были изобретены скриптовые языки (Perl, Python, LUA, RUBY, ...), которые
* переносимы с платформы на платформу
* гибки: можно предельно просто писать на "начальном" уровне, а можно использовать язык "на всю катушку", существенно экономя ресурсы на этапе разработки.

Для меня так и остается загадкой, почему PLC'шники не использовали богатый мир скриптовых языков "в своих целях". Одна мысль есть - тот же Python "повзрослел" как раз в 98-99 годах, когда МЭК исполнилось 5 лет... LUA, RUBY еще более молодые языки.
=AK=
Цитата(Andrew2000 @ Mar 6 2006, 17:57) *
А по-поводу IL - поправьте, почему бредни? была у меня когда-то документация на STEP, видел я там такое (правда давно, может память изменяет) или корни еще дальше?

Зюбин - единственный, кто утверждает, что IL произошел от STEP5. При этом не приводит никаких оснований для такого утверждения. Поскольку практически любое самостоятельное утверждение Зюбина является тяжким бредом, то это, очевидно, следует отнести туда же.

Первым языком ПЛК, разработанным в 70-х, был "ладдер диаграм", из которого впоследствии произошел LD. Это графический язык, который инструментальной системой транслировался в промежуточный код. Промежуточный код затем исполнялся (интерпретировался) в PLC. Вот этот промежуточный код и был предтечей IL.

Первыми производителями ПЛК были Модикон и Аллен-Брэдли, Сименс стал делать ПЛК на несколько лет позже (когда точно - не знаю, но позже, это точно). Поэтому еще до того как появился Step5, контроллеры Модикон и Аллен-Брэдли использовали нечто подобное IL. Пусть они в отличие от Step5 не оформляли свой промежуточный код как язык, на котором пользователь мог бы писать программы, но он был.

Цитата
Для меня так и остается загадкой, почему PLC'шники не использовали богатый мир скриптовых языков "в своих целях". Одна мысль есть - тот же Python "повзрослел" как раз в 98-99 годах, когда МЭК исполнилось 5 лет...

PLC появились в конце 60-х, т.е. когда еще не было даже ни С ни Паскаля. МЭК только к началу 90-х свел воедино и оформил то, что к моменту выхода стандарта существовало более двух десятков лет. Сама работа над МЭК-овским стандартом заняла 15 лет. Так что загадкой должно быть другое, почему современные скриптовые языки не использовали богатый опыт PLC... biggrin.gif
Evgeny_CD
Цитата(=AK= @ Mar 6 2006, 14:42) *
PLC появились в конце 60-х, т.е. когда еще не было даже ни С ни Паскаля. МЭК только к началу 90-х свел воедино и оформил то, что к моменту выхода стандарта существовало более двух десятков лет. Сама работа над МЭК-овским стандартом заняла 15 лет. Так что загадкой должно быть другое, почему современные скриптовые языки не использовали богатый опыт PLC... biggrin.gif
Сильно! Беру свои слова обратно!
Andrew2000
Цитата(=AK= @ Mar 6 2006, 14:42) *
Зюбин - единственный, кто утверждает, что IL произошел от STEP5.

Ясно, спасибо за информацию.
На сайте Фиорда в презенташке нашел: "IL - Подобен SIEMENS (Step 5)"
т.е. наверное Step 5 подобен IL smile.gif
Olej
Цитата(=AK= @ Mar 5 2006, 11:15) *
Я бы выделил следующие существенные моменты:
-- ПЛК изначально создавался как средство замены релейных шкафов автоматики. Первые языки программирования ПЛК "имитировали" релейные схемы. Our customers treated the programmable controller as a box of relays, and well they should. Language theory is neither necessary not desirable for most of the customers to know. The customers, instead, understand their problem, and are indeed much smarter than the design engineers because the dimensions of their problem far exceed the relatively simple problem of designing a computer software system and language. Языки ST и SFR - это более поздние добавки.
-- Языки создавались на сравнительно бедной базе вычислительной техники 70-х ... 80-х годов, как аппаратной, так и программной. "Если нет гербовой бумаги - пишем на простой" (с) Поэтому имитация релейных схем изначально была достаточно условной.


Если уж быть совсем точным, то таких "эпох" было не 2: релейные - PLC, а 3: релейные (...50-60г.г.) - жёсткая логика (70-е) - PLC ...
Я по-молодости ещё участвовал в разработке 1-й (потом были новые поколения) СССР-ской АСУ управления пуском-остановом турбин АЭС, которые многие годы экспортировались в массу стран мира... Там было ... миллион wink.gif элементов И-ИЛИ-НЕ, которые "кроссировались" на разъёмных колодках (чем и "программировались") под алгоритм регулирования - это нам сейчас пригодится... wink.gif

Цитата(=AK= @ Mar 5 2006, 11:15) *
Элементы настоящих релейных схем работают параллельно и одновременно. Для полноценной их имитации был бы необходим язык наподобие VHDL, или что-то вроде функционального языка, где последовательность написания операторов (в VHDL - процессов) не играет роли. А МЭК-овские языки реализованы намного проще, они несут в себе "родимые пятна" императивного программирования, где последовательность написания операторов все-таки играет роль. Вернее, сам МЭК-стандарт не требует этой "императивности", но из прагматических соображений допускает ее. Поэтому критика МЭК-овских языков с позиций императивного программирования в сущности не имеет под собой оснований.

Программы на МЭК-овских языках надежны прежде всего потому, что представляют пользователю очень простую и понятную модель поведения: все операторы в идеале исполняются "одновременно". А заморочки неодновременного исполнения - это уже нюансы реализации, исторические "родимые пятна". В конечном счете, надежность программ зависит прежде всего от человека, а именно - от того, насколько он хорошо представляет, что делается, и насколько он "держит в голове" что происходит в его программе. То есть, насколько хорошо он моделирует систему. Если порядок исполнения операторов неважен (пусть даже условно), это сильно упрощает моделирование и, соответственно, повышает надежность программы. Средства программирования ПЛК являются тому подтверждением.


Модель "одновременного" выполнения предоставляют никак не сами МЭК-овские языки, а циклическая организация процесса - ввод - обработка - вывод - ... особенно хорошо это видно, если эти циклы "разбить" вот так: - обаботка - вывод - ввод - ... Идея в том, что все N входных и M выходных локализованных переменных должны сменить свои значения одномоментно... а потом может идти, скажем, 1 сек. обработки, и если сигнал Ni сменит своё значение через 1мкс. после "ввод" - то это новое его значение никак не отразится на "обработка", и даже не станет этой фазе доступно ... а если до следующей фазы "ввод" Ni восстановит своё прежнее значение - то мы никогда и не узнаем, что значение "мигнуло"...

Я не случайно упомянул раньше логические элементы И-ИЛИ-НЕ... Все логические схемы (большие) могли строится на 2-х принципах: потенциальные и синхронные. Нас здесь интересуют именно синхронные реализации: все логические входя всей схемы - фиксировались (считывались) только на момент фронта синхроимпульса. Этим и достигалась "одномоментность" и и сильно снижалась вероятность "гонок" (хотя потенциальные схемы, в принципе - производительнее).

Так вот "классическое" программирование, а большинство участников разговора, мне кажется, принадлежат именно к этому миру - подобно потенциальной реализации логики: мы привыкли, что когда нам нужно значение переменной - тогда мы её и считываем (или когда оно изменяется - нас уведомляют прерыванием, и мы всё равно считываем wink.gif). Системы АСУТП, PLC, всё, что напрограммировано в МЭК языках... - ведёт себя (и должно!) как синхронные логические схемы: только в 1 момент синхроимпулься обновляются все внешние (локализованные) переменные.

И это - обязательное условие, но никто не обязывает вас реализовывать логику на языках МЭК ... рисуйте её на здоровье на С/С++ или чём хотите - обеспечьте только синхронное обновление всех внешних данных. И вы получите надёжность не хуже, чем обещанную производителями PLC (нет там других аргументов для надёжности!), а на самом деле - лучшую, потому как в смысле семантики и "тонких" неожиданностей - классические языки программирования проанализированы и проработаны на порядки лучше!

Цитата(Evgeny_CD @ Mar 5 2006, 14:24) *
Думаю, в свете всех этих PLC языков программирования будет интересна эта книга
http://www.natahaus.ru/2006/03/05/SWITCH__tekhnologija.html
А.А. Шалыто
SWITCH - технология
Алгоритмизация и программирование задач логического управления
Издательство: Наука
Год: 1998
Формат: DjVu
http://rapidshare.de/files/14697466/SWITCH.rar.html
без пароля


Вот, кстати, "школа Шалыто" (НПО "Аврора") и предложенная ими SWITCH-технология - это действительно одна из блестящих техник для классического программирования по обеспечению надёжности (которая на самом то деле является - безошибочностью wink.gif). И не только эта книга ... там где-то на сайте НПО "Аврора" было много интереснейших статей с примерами реализации всеми привычных программных подсистем в SWITCH-технологии (и это именно не "программирование", а "сквозная технология": и документирование, и верификация, и ... - готовый продукт). Так что вот здесь вы:

Цитата(=AK= @ Mar 5 2006, 15:55) *
"Излашается технология алгоритмизации и программирования задач логического управления на основе теории автоматов." Ладно, пускай "излашается" biggrin.gif


- в корне не правы!

Цитата(=AK= @ Mar 6 2006, 15:42) *
Первыми производителями ПЛК были Модикон и Аллен-Брэдли, Сименс стал делать ПЛК на несколько лет позже (когда точно - не знаю, но позже, это точно). Поэтому еще до того как появился Step5, контроллеры Модикон и Аллен-Брэдли использовали нечто подобное IL. Пусть они в отличие от Step5 не оформляли свой промежуточный код как язык, на котором пользователь мог бы писать программы, но он был.


Я вот как-раз знаю состояние с МЭК по Modicon (сейчас это Schneider Electric) и их tools программирования в МЭК Concept & Unity Pro ... и образца не "первых производителей", а в версиях 2005 года... Да-а-а-а ... это "что-то с чем-то"(с) wink.gif. Кстати, сами они и не пропогандируют "одновременность" происходящего (в техдокументации), а отчётливо объясняют "слева-направо и сверху-вниз" ... Когда я смотрю на несколькоэкранные диаграммы, понарисованные проектировщиками ... я просто балдею - так всё таки левее или выше? находится эта переменная от той? Не говоря уже о том, что о каких-то там возможностях синхронизаций разработчики просто не слышали (а возможны ли вообще синхронизации? ... того, что слева вверху, с тем что справа вверху ...).

P.S. Вот те парни, которых я "наблюдаю" проектируют системы СПД (системы обеспечения безопасности движения) в метрополитене, и эти системы уже внедрены на 3-х крупных станциях ... Хорошо, я знаю на каких - с тех пор меня не заманишь на ветку, проходящую черех них.
AlexandrY
Я согласен с Evgeny_CD в плане его определения RTOS.
Чета никто не упоминает, что сторонние библиотеки которые юзаются даже не в очень сложных проектах бывают гигантских размеров в соотношении с силами одного программера.
Там без RTOS просто нечего делать.
Итак ограничивая круг ответов на корневой вопрос утверждаем - RTOS может отсутствовать только в несложных системах.
Со всем уважение к многоканальным системам звукозаписи их никак сложной системой не назовешь, даже если они умудряются выдавать звук через Ethernet (с хардварным TCP/IP biggrin.gif , все знают, что SM использует для этого Wiznet ).
Я знаю нескольких разработчиков которые делают подобные устройства тоже без всяких RTOS, это показательно.
А вот сложные системы такие как современный мобильный телефон (50 и более разных задач), современный фотопринтер (около 40 разных задач), автомобильный центральный контроллер и т.д. без RTOS сделать не реально. При чем realtime в этих устройствах совсем не на первом месте. Буквы RT в слове RTOS означают лишь только, что эту OS при некоторых усилиях можно заставить работать детерминировано. Но профайлинг RTOS почему-то очень редко встречаеться в инете даже у самих производителей RTOS, это означает, что настоящий детерминизм в RTOS мало кому нужен и добиться его очень трудно при использовании RTOS. Всегда остаеться вероятность, что что-то выполнится не за то время на которое расчитывали.
Отсюда второе наблюдение - RTOS навярняка не нужна в простых, детерминированных программных системах. Это и будут простые PLC и DSP алгоритмы.
Тот же CoDeSys работает без RTOS, продвигаемый мной iCon-L тоже не требует RTOS.
Известный всем стандарт IEC61131-3 для PLC уже заменяется новым стандартом IEC61499 который сам определяет событийно управляемую модель поведения и тоже не нуждаеться в RTOS. Без RTOS могут обходиться и среды разработки управляемые моделью, как I-Logix.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.