Полная версия этой страницы:
Язык программирования ПЛК
Захотелось возобновить дискуссию по поводу программирования ПЛК. Все-таки что лучше и на чем удобнее по Вашему мнению писать ПО, не только с точки зрения простоты и удобства, а еще и с точки зрения итогового быстродействия.
Ведь ресурсы ПЛК не безграничны и его работа определяется не всегда объемом памяти под программу, но и умением ее выполнить. Особенно это касается возможностей маломощных отечественных ПЛК, но и у иностранцев бывают проблемы. На том же Сименса 400-ке столкнулись с неприятностями, связанными со временем исполнения кода.
Вот что вычитал тут на сайте КоДеСис в поддержку IL и ST супротив Си, на котором написан нижний уровень у многих ПЛК:
Цитата
Возможность CoDeSys генерировать машинный код означает, что вы можете рассчитывать на максимальное быстродействие, которое способна обеспечить данная аппаратура. Базовая инструкция IL требует от одной до трех машинных команд. В расчете на 1000 логических IL инструкций это дает примерно следующие результаты:
Pentium 200 MMX 20µs
386EX 20 MHz 700µs
68332 20 MHz 600µs
80C167 20 MHz 570µs
Dallas 80C32 20 MHz 1700µs
Генератор C кода оказывается на 20 - 30 % медленнее, интерпретатор замедляет выполнение примерно на порядок.
Что скажете? Или все-таки FBD???
"Или все-таки FBD???"
Разумеется.
"с точки зрения итогового быстродействия"
Неактуально.
Сергей Долганов
8.6.2007, 16:01
На FBD никогда не писал. LD или ST.
Цитата(ttt @ 8.6.2007, 16:50)

"с точки зрения итогового быстродействия"
Неактуально.
А для чего неактуально то? Поясните. Ведь бывают сложные алгоритмы и "медленные" ПЛК?
Взводатор
8.6.2007, 16:07
Аппаратные ограничения сейчас практически отсутствуют - были бы деньги, да и не особая в них разница. Программы исполняются машинами и им все равно, на чем был написан исходник. А вот пишутся программы, отлаживаются, эксплуатируются и модифицируются людьми. Чем более понятен и удобочитаем текст или графика программы, тем лучше. Чем грамотнее разработчик, тем короче и эффективнее будет его программа при прочих равных условиях. И всегда ли нужно стремиться к оптимизации? Часто даже неэффективный код вполне укладывается в рамки и в таком случае его дальнейшее вылизывание представляет собой только академический интерес.
Любую программу можно написать на любом языке - на одном лучше, на другом хуже, но результат будет.
С уважением Взводатор.
Игорь Борисов
8.6.2007, 16:08
Цитата(ttt @ 8.6.2007, 16:50)

"Или все-таки FBD???"
Разумеется.
"с точки зрения итогового быстродействия"
Неактуально.
У Zelio есть в меню пунктик... "Check the programm" - и там есть пунктик "Время цикла".... можно посмотреть время... у меня больше 12 мс не бывает...
Цитата(Игорь Борисов @ 8.6.2007, 17:08)

У Zelio есть в меню пунктик... "Check the programm" - и там есть пунктик "Время цикла".... можно посмотреть время... у меня больше 12 мс не бывает...
Но есть же еще ограничения по колличеству блоков в программе.
Сергей Долганов
8.6.2007, 16:21
И числа рекурсий.
Привет Николаю ,)
В основном FBD (но только не в таком как в Кодесисе), и некоторые вещи на ST.
В порядке убывания: LD, ST, SFC. О быстродействии даже не задумываюсь, главное правильность работы и понятность программы для человека. Когда память начинает кончатся приходится задуматься об объеме программы.
Игорь Борисов
8.6.2007, 20:49
Цитата(Fanat @ 8.6.2007, 17:18)

Но есть же еще ограничения по колличеству блоков в программе.
Угум. есть. но я тока один раз получил нехватку... был взбешен, пришлось ваять на твидо...
FBD любят все, кроме профессиональных электриков, которым нужен только LD, имхо FBD нагляднее. Это если сравнивать графические языки. Но вот иногда возможностей графики начинает нехватать, т.е. ты представляешь себе кусок алгоритма в текстовом виде, но никак это блоками не можешь придумать. И так хочется взять какой-нибудь IL-STL а контроллер его не умеет поддерживать. и все, так и не стать программистом
ScrewDriver
9.6.2007, 6:06
Цитата(mich_vk @ 8.6.2007, 19:50)

FBD любят все, кроме профессиональных электриков, которым нужен только LD, имхо FBD нагляднее. Это если сравнивать графические языки. Но вот иногда возможностей графики начинает нехватать, т.е. ты представляешь себе кусок алгоритма в текстовом виде, но никак это блоками не можешь придумать. И так хочется взять какой-нибудь IL-STL а контроллер его не умеет поддерживать. и все, так и не стать программистом

берем другой компилятор с возможностью преобразования и переконверчиваем его =) (но это так - размышления.... не делал я такого)
А вообще использую ST... пока мне почему-то сложно представить написанное в виде графики, хотя, наверняка возможно. В общем надо пытаться - лиж бы было на чем. Симуляцию терпеть не могу....
mike-altai
9.6.2007, 6:50
Симуляция-то в чем виновата? Щелкнешь кобылу по носу - она махнет хвостом

Козьма Прутков (С).
На FBD схемы рисовать вовсе не сложно - немного другой подход, чем при написании кода. Мне привычнее рисовать логику на элементах И, ИЛИ, НЕ, счетчиках и триггерах...
Цитата(Fanat @ 8.6.2007, 17:03)

А для чего неактуально то? Поясните. Ведь бывают сложные алгоритмы и "медленные" ПЛК?
В нашей предметной области автоматизации медленные процессы.
Программный цикл в 1 сек вполне достаточен. За 1 сек любой ПЛК выполнит программу.
Актуально для промышленной автоматизации.
Писал на ассемблере, С, FBD.
Разница не только в удобстве или наглядности.
На ассемблере или С можно и нужно писать 1 раз (и долго отлаживать) для одного устройства. Потом это устройство штамповать и продавать.
Мы занимаемся другим - фактически создаем и продаем программы под разные установки (я запрограммировал за последние 9 лет около 1000 контроллеров, НИ ОДНОЙ одинаковой программы). На С это невозможно.
Каждая задача наиболее изящно реализуется на своем языке. Но с точки зрения конечного пользователя, это создает трудности в понимании алгоритма. Поэтому я пишу отдельные блоки на ST, а общую структуру программы строю на FBD, CFC и SFC.
Раньше писал на FBD, теперь перешёл на LAD (для удобства наших наладчиков) и привык.
P.S. Законченные подпрограммы пишу на чём удобнее и запароливаю, не для секретности, а чтобы кривыми ручками не попортили.
несколько лет назад впервый раз увидел программу в LAD для s-200 и теперь на нем и делаю. хотя могу и в FBD и STL но... Нагляднее что-ли. Согласен, что бывают моменты когда проще в других видах.
LAD это язык релейных диаграмм. Подходит только для битовой логики.
Подходит-неподходит... На некоторых контроллерах есть только LD, а математика и прочее сделано в виде различных расширений LD.
Цитата
На некоторых контроллерах есть только LD
Ну и в *** такие контроллеры
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.