Средство для программирования контроллера: Си или МЭК 61131? |
Ответить | Страница <1 2122232425 53> |
Автор | ||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 27 Март 2003 Категория: Russian Federation Online Status: Offline Публикации: 240 |
Опубликовано: 07 Октябрь 2003 00:51 |
|||||||
Да. А а цифровое устройство любой сложности можно создать используя только элементы 2И-НЕ. :-) Но я спрашивал не об этом. Просто Вы говорили что IL выглядит как ассемблер, а "для некоторых моделей ПЛК фирмы Siemens является языком Ассемблера". Я и спрашивал, для какой конкретно аппаратной платформы (для какого микроконтроллера) IL является ассемблером. Если не знаете так и скажите. У меня есть подозрение, что такого микроконтроллера не существует. Такой набор команд мог быть разве что у микропрограммных контроллеров конца 60х - начала 70х. Получается что ИДИОТИЗМ продолжается более 30 лет и ИДИОТЫ засели не только в крупнейших корпорациях, но и в национаьлных комитетах стран членов МЭК. А Sun - так это вообще сборище идиотов. Пытаются решить проблемы переносимости практически с помощью некого универсального ассемблера - байт-кода Java. :-) С Уважением, Сергей Сорокин
|
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 09 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 247 |
||||||||
Тут у меня действительно неточность, надо было
указать, что разговор идет не об IL, а об оригинале (STEP5), из которого IL конструировался... Спасибо за поправку. Несомненно ценную. Что касается Sun, то там решается несколько отличная от МЭК задача. Поэтому сравнение IL и байт-кода Java не совсем корректно... Sun (в отличие от МЭК) прямо декларирует ориентацию переносимость, поэтому и была выдумана виртуальная машина и байт-код к ней... Прямая интерпретация настолько ресурсопотребляющая, что Sun вынужден всякие "хитрушки" придумывать... часть трансляции (платформонезависимую часть) выносить в отдельную фазу, а интерпретатор строить уже только для байт-кода ("машинного кода" виртуальной машины). Что несомненно дает некий выигрыш, достаточно существенный по сравнению с "честным" интерпретатором, но все равно ресурсов потребляет больше, чем если бы это был нативный код выч. платформы. Опять же, подход этот (2-х фазовой трансляции) имеет не только плюсы, но и вполне очевидные минусы... Например, в браузерах стоит "честный" транслятор Java... А PLCopen дальше разговоров о виртуальной машины под МЭК1131-3 так и не пошла... что тоже вполне объяснимо. Не буду лить воду об отличиях архитектур, специфики и подходов МЭК и Sun... считаю, такой анализ труда не представляет... ключевые слова "переносимость исходных текстов" и "модифицируемость"... Ну, и т.д.
|
||||||||
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК http://reflex-language.narod.ru/ |
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
||||||||
Владимир Е. Зюбин Если кратко - то транслятор пришлось писать из-за семантики и прагматики. Некоторые, действительно, макросы пишут, например, в "Авроре" Шалыто и Ко... Надо ли это понимать так, что вводимые новшества настолько просты для реализации, что их можно вводить даже в виде макросов? Не говоря уж о библиотеках? или Любченко, вот, тоже секретные dll-ки создает... но это такая рутина, такая ненадега... Из-за чего "ненадега"? Вы хотите сказать, что Ваш самопальный транслятор с "похожего-на-С" языка СПАРМ - более надежен, чем существующие С трансляторы? а насчет Wiki, я там даже определения транслятора не Я уже говорил Вам, напоминаю: современное понимание терминов таково, что компилятор и транслятор являются синонимами. |
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
||||||||
Владимир Е. Зюбин Вы, может, не понимаете, что Вы могли бы догадаться, что я немного знаком с Фортом, поэтому Ваше напоминание о стеках совершенно неуместно. Форт всегда использует (виртуальную) стековую машину в качестве "внутреннего интерпретатора". Свойство у него такое. А как Вы думаете, кто в стек кладет числа? Мне не надо гадать, я точно знаю "кто". Числа на стек кладут литеральные операторы. Т.е. при исполнении этих операторов интерпретатором Форта, на стеке появляются числа. Теперь смотрите откуда эти литералы появляются: : LIT, ( W -> ) Это та часть компилятора Форта, которая создает (компилирует) эти литералы. Нетрудно видеть, что "байт-код" литерала является кодом одной единственной команды: MOV EAX, #число Когда этот "байт-код" исполняется интерпретатором, на стеке данных появляется число. А кто считывает байты из исходного файла? Компилятор, ессно. а кто разбирается, что со считаным байтом дельше делать? Компилятор. А кто вызывает приведенные процедуры? Интерпретатор А кто определяет, корректен ли считаный байт вообще? :-) В SPF - никто не определяет. Во-во... это и называется трансляция... :-) Ищите трансляцию не в подпрограммах с машинным кодом операций, а там, где работа с исходным файлом идет. "Работа с исходным файлом" - дело КОМПИЛЯТОРА, которого в PLC НЕТ! Для большинства PLC исполняемая (т.е. интерпретируемая) программа подготавливается на кросс-системе, например, на РС. В состав кросс-системы входит компилятор. Компилятор обрабатывает исходный текст и ТРАНСЛИРУЕТ его в байт-код. Байт-код загружается в память PLC и исполняется интерпретатором. Слышите, не "транслируется", а непосредстенно ИСПОЛНЯЕТСЯ. Поскольку интерпретатору не надо тратить время на трансляцию, он исполняется БЫСТРО, в пределе - так же быстро как "нативный код" сгенерированный С транслятором. Что Вам было продемонстрировано на примере SPF и его benchmarks. |
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 27 Март 2003 Категория: Russian Federation Online Status: Offline Публикации: 240 |
||||||||
Это конечно интересная тема - терминология в Computer Sience. Но я думаю рядовой пользователь о ней редко задумывается. Есть ли все таки какой то сухой остаток насчет "чего в супе не хватает"? В том же МЭК ведь есть альтернативный стандарт на функциональные блоки, где вводится некая событийная модель взаимодействия. Есть и вполне успешные графические языки програмирования типа Labview (там по моему можно и блоки данных обрабатывать). Можно ли взять что из одного места, что то из другого, что то из стандартных языков что бы Пользователь испытал чувство глубокого удовлетворения от работы с таким инструментом независимо от того нужна пользователю простота или гибкость? С Уважением, Сергей Срокин
|
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
||||||||
Владимир Е. Зюбин ...разговор идет не об IL, а об оригинале Приведите источник информации, который бы подтверждал, что IL "конструировался" из STEP5. Если такого источника нет, то перестаньте повторять эту выдумку. |
||||||||
Новичок Присоединился: 26 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 22 |
||||||||
Собственно, мое исходное предложение по поводу "агрегатных" или "множественных" связей и было таким предложением. Пользователь сам создает определенный ТИП СВЯЗИ, соединяющий определенные ТИПЫ БЛОКОВ. Затем он может протянуть одну единственную агрегатную связь (это как жгут проводов, если хотите), содержащую некоторое множество элементарных. Тогда агрегация самих данных в структуры или массивы ДЛЯ ЭТОЙ ЦЕЛИ будет не нужна.
А что в этом незаконного? Вполне корректная с точки зрения стандарта конструкция. Если я не cмогу, скажем, на Microsoft Visual C++ реализовать какую-либо законную конструкцию языка С, я им это сообщу как баг компилятора, а они мне пообещают его исправить :)
Не совсем точно. Настоятельно рекомендуется, чтобы пользователю была предоставлена ТАКАЯ ВОЗМОЖНОСТЬ. Он может ею не воспользоваться - имеет право.
"...изловить и повесить. ... - Здесь не сказано повесить!... - Не всякое слово в строку пишется!" (А.С.Пушкин "Борис Годунов") "Implicit feedback paths can also be created by using connectors that link the output parameters from blocks on the ***RIGHT*** of the network to inputs of preceeding blocks." (R.W.Lewis/ Programming industrial control systems using iec 1131-3). Итак, мы с Льюисом оказались в приятной компании фантазеров. ТО есть на самом деле никаких "лево-право" в стандарте нет, и evaluation rules не придают никакого значения расположению графических элементов на диаграмме. За исключением того, что при изображении блока на диаграмме у него на левой стороне квадратика входы, а на правой - выходы. А сами квадратики мы можем перемещать как хотим, и смысл от этого не меняется. Этого бы очень хотелось. Даже более того, формально Вы правы, про справа-налево явно ничего не говориться. Но.. A feedback path is said to exist in a network when the output of a function or function block is used as the input to a function or function block which _PRECEDES_ it in the network; the associated variable is called a feedback variable. Интересно, что такое "precedes"? Имеются ввиду "evaluation rules", которые в случае с обратными связями в чистом виде не работают, то есть, будучи применены буквально, вообще делают невозможным вычисление диаграммы с обратными связями? Вряд ли. Или все же старое доброе слева-направо? Кроме того, стандарт прямо не запрещает создавать обратные связи без явных feedback-переменных. В этом случае, кроме слева-направо, никаких разумных правил нет. Далее, предположим, сделано так, как на рисунке 23a (explicit loop) Как мы тогда отличим feedback-переменную от просто промежуточной переменной? Feedback-переменная находится правее блока-приемника? А как еще? Я не понимаю, как еще. Значит, все-таки ПРАВЕЕ! Ну а в целом Вы правы, все не так уж сумрачно. Стандарт действительно настоятельно рекомендует (It shall be possible for the user), как Вы совершенно справедливо заметили, дать юзеру возможность явно указывать обратные связи. И рекомендует несколько вариантов такого указания. По крайней мере один из них (если не оба) неявно основан на расположении элементов диаграммы на листе :). Но самое главное, он не запрещает это делать каким-либо другим образом. Чем, по моему мнению, и надо воспользоваться. Правда, про совместимость и переносимость лучше не вспоминать.. но стандарту это действительно не противоречит.
Имелось ввиду ситуация, когда разработчику алгоритма по смыслу неважно, берется значение переменной с текущего шага или с прошлого, достаточно, чтобы это значение было достаточно "актуально", то есть относилось к моменту, не очень древнему. Собственно, очень многие управляющие алгоритмы на самом деле нечувствительны к замене некоторых прямых связей на "неважно какие". В принципе коммуникации между разными задачами и коммуникации между узлами сети в мэке предствляются именно такими связями Их только не изображают линиями на "единой диаграмме сетевой системы", но, наверное, изображали бы, если бы в мэке (61131, я не имею ввиду 499) такая диаграмма была возможна. Но это уже другая история - о представлении распределенного алгоритма имено как алгоритма, без обязательной привязки к узлам, ресурсам и т.п. ... Чего в мэке 61131 нет. |
||||||||
С уважением,
Дмитрий Теркель |
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 29 Сентябрь 2003 Категория: Isle Of Man Online Status: Offline Публикации: 119 |
||||||||
Sergey Sorokin Есть ли все таки какой то сухой остаток насчет "чего в супе не хватает"? С моей точки зрения, "сухой остаток" очень простой: -- Разговоры про "принципиально медленное исполнение кода интерпретаторами" происходят от невежества. Признание этого факта выбивает краеугольный камень из позиции критиков МЭК, поэтому они так упираются. -- Развитие самих МЭК языков, вероятно, для начала стоило бы вести в направлении, указанном ув. Дмитрием Теркелем. -- В более далекой перспективе языки FBD и LD хорошо бы наделить свойствами, которые сделают их по-настоящему (т.е. без оговорок) функциональными. -- Дискуссию о путях дальнейшего развития МЭК языков надо продолжить. Особенно важно услышать слова прогрраммистов, которые на повседневно практике применяют эти языки. Без такой обратной связи выработать правильное понимание путей развития МЭК языков очень трудно, если вообще возможно. |
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 09 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 247 |
||||||||
1. Любой алгоритм можно программировать не то, что
макросами или библиотеками, но и прямо на ассемблере... как в МЭК 61131-3 предлагается.. :-) От безысходности много чего можно сделать и сложность/простота тут не при чем... :-))) 2. Да, "самопальный" транслятор, что у нас разработан, имеет повышенные надежностные характеристики. 3. Насчет wiki: Вы бы им подсказали статью о трансляторах все же тиснуть... :-) Честно признаться, wiki производит впечатление очень слабого толкового словаря, полного наивной и противоречивой отсебятины... Хотя, опять повторюсь, даже не очень хорошие толковые словари читать полезно...
|
||||||||
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК http://reflex-language.narod.ru/ |
||||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 09 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 247 |
||||||||
Так это что за код? По мне, так это типичный ассемблер процессора х86 архитектуры... При чем тут Форт неясно. Или Вы считаете, что стеком только Форт пользуется?
В каком месте стека? сверху? нет не сверху, для этого есть команда PUSH... толкается число куда-то в середину. Что за число толкается? Откуда оно берется? Кто определяет куда толкать число (кто задает адрес загрузки)? и т.д.
Все правильно. Байт-код записывается в память PLC, а потом интерпретируется... то есть побайтно считывается ИНТЕРПРЕТАТОРОМ, транслируется ИНТЕРПРЕТАТОРОМ в машинный код и исполняется ПРОЦЕССОРОМ... операция трансляции ИНТЕРПРЕТАТОРОМ (считывания, анализа, передачи управления, заталкивание в стек и т.д. и т.п.) - это операции, которые могут быть сокращены. Что и делается, когда используется компилятор. Поэтому компиляционная модель (трансляция в машинный код процессора) ВСЕГДА потребляет меньше выч. ресурсов, чем интерпретационная модель. Что тут Вам непонятно? Я уже не говорю о том, что разговор изначально шел об IL, а Вы тут какой-то Форт пытаетесь приплести... Вот Вам строка на ассемблере х86 MOV AX, BX занимает два машинных такта времени и один байт памяти... напишите на Форте или там на байт-коде ЛЮБОМ эквивалентную конструкцию, переведите ее потом в машинный код/ассемблер, поймайте мальчика на улице и убеждайте его, что Вы получили более быстродейственный и более компактный код... Мальчик должен быть не старше пяти лет - иначе не поверит... детский сад, ей-богу... :-) |
||||||||
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК http://reflex-language.narod.ru/ |
||||||||
Ответить | Страница <1 2122232425 53> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |