1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

128 советов начинающему программисту ПЛК

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить

pike
завсегдатай
завсегдатай
Сообщения: 573
Зарегистрирован: 08 авг 2008, 10:43
Имя: Щукин Андрей Александрович
Страна: Россия
город/регион: Москва
Благодарил (а): 6 раз
Поблагодарили: 51 раз

Re: 16#0006 Почему ST лучше FBD

Сообщение pike »

leon78 писал(а): 1. ST выполняется быстрее FBD. Если не предусматривать специальных мер, постоянно выполняются все блоки FBD, даже если по алгоритму в данный момент времени они не нужны. В ST выполняются только те части программы, которые должны выполниться по алгоритму.
2. Память данных для ST меньше, чем для FBD. Дело в том, что в ST один экземпляр функционального блока можно вызвать сколько угодно раз. В FBD для каждого вызова надо делать свой экземпляр.
То что вы описываете это особенности "железки" конкретного производителя (а иногда даже и серии контроллера),без указания которого ваши советы "тень на плетень". Я например знаю несколько разных контроллеров в которых программа на ST занимает больше места, чем на LD, а использование FB одинакого влияет на объем программы. Ну, и про быстродействие тут тоже много чего интересного бывает, но в привязке к конкретной железке.
leon78 писал(а): 3. В FBD нельзя сделать нормальные циклы.
Задачи в плк и так циклические.
leon78 писал(а):4. В ST намного легче реализовать многие вещи, чем в FBD.
А какие-то в FBD (или мы CFC говорим?)... Старый спор какой из 5 языков лучше, стал сродни спору кто лучше: блондинки, шатенки или рыжие.
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Re: 128 советов начинающему программисту ПЛК

Сообщение Михайло »

Просто leon оказался очередным программистом и не представляет простоту языка LD. Я знаю много языков, в том числе объектно-ориентированные, но в дискретно-логических задачах лучше LD ничего нет! :) LD формирует особое мышление, которое облегчает программирование.

cde

Re: 128 советов начинающему программисту ПЛК

Сообщение cde »

Конечно все зависит от конкретной реализации системы программирования. У нас на эту тему написано не так много книг. Найдите пожалуйста книгу Петрова и посмотрите то место, где один и тот же алгоритм написан на разных языках. Вы будете очень удивлены :).
Михайло писал(а):LD формирует особое мышление, которое облегчает программирование.
Давно уже заметил, что и ФБД и ЛД одевает на программистов шоры и им тежело решить даже простую задачу под которую этот язык не заточен.
PS. Для тех кому лень читать: после компиляции на разных языках обьем программы получился одинаков и выполнялся за одно время. (Это кроме SFC).
Циклы кстати реализованы в ФБД у Круга.

pike
завсегдатай
завсегдатай
Сообщения: 573
Зарегистрирован: 08 авг 2008, 10:43
Имя: Щукин Андрей Александрович
Страна: Россия
город/регион: Москва
Благодарил (а): 6 раз
Поблагодарили: 51 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение pike »

cde писал(а): PS. Для тех кому лень читать: после компиляции на разных языках обьем программы получился одинаков и выполнялся за одно время. (Это кроме SFC).
Предложение надо было начать с фразы: В Codesys... Или у вас есть такие данные хотя бы по ПЛК 5 крупнейших производителей контроллеров?
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.

cde

Re: 128 советов начинающему программисту ПЛК

Сообщение cde »

pike писал(а):Предложение надо было начать с фразы: В Codesys...
cde писал(а):Конечно все зависит от конкретной реализации системы программирования.
pike писал(а):Или у вас есть такие данные хотя бы по ПЛК 5 крупнейших производителей контроллеров?
Данных нет и искать мне их как то лень. Кривые ручки могут замедлить контроллер значительно сильнее.
Кстати, вы могли бы привести данные по Омрон
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 16 раз
Поблагодарили: 18 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение Marrenoloth »

Точно по Сименсу (были моменты экспериментов): На первом месте, конечно STL. На втором, как не странно, SCL. Причем, если СЕРЬЕЗНО не заняться оптимизацией, то SCL выигрывает! Остальные безнадежно отстают с примерно одинаковым результатом. Только версии программ после SR4 надо брать...
Но это только по объему кода. Т.к. компилятор очень любит использовать косвенную адресацию где не надо, то по скорости, думаю, STL будет лучше.
З.Ы. Прошу прощения за использование симановских обозначений языков.
З.З.Ы. Прения и мерения длинны языка - ИМХО очередной бесконечный холивар...

pike
завсегдатай
завсегдатай
Сообщения: 573
Зарегистрирован: 08 авг 2008, 10:43
Имя: Щукин Андрей Александрович
Страна: Россия
город/регион: Москва
Благодарил (а): 6 раз
Поблагодарили: 51 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение pike »

cde писал(а):Данных нет и искать мне их как то лень. Кривые ручки могут замедлить контроллер значительно сильнее.
Кстати, вы могли бы привести данные по Омрон
Вам лень искать, а у меня нет времени писать доклад под сотню страниц об особенностях использования языков плк. У меня, кстати, не только по Омрону данные имеются. Только вот без структирирования и четкого описания выкладывать эти данные в открытую это "кормить горе продавцов".
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.

Автор темы
leon78
эксперт
эксперт
Сообщения: 1024
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 104 раза

16#0007 Команды с верхнего уровня

Сообщение leon78 »

Механизм выдачи команд верхим уровнем контроллеру можно сделать многими способами. Предлагаю следующий вариант (упрощенно):
1. Договариваемся, что команда - эта 16-ти битный регистр.
2. Договариваемся о кодировке, например:
биты 15-8 - число 16#00 - 16#FF - код технологического объекта (задвижка №10.5.4, насос №18, ...)
биты 7-4 - число 16#0 - 16#F - код команды (открыть, закрыть, пустить, ...)
биты 0-3 - число 16#0 - 16#F - код "источника команды", т.е. номер АРМа или панели, откуда выдана команда
3. Заводим в контроллере 16 регистров, в которые "источники команд" 16#0 - 16#F могут писать команды.
4. Заводим кольцевой буфер размером например 16 регистров.
5. Заводим переменную типа WORD, в которой храниться код команды, исполняемой программой на данном скане контроллера. Эта переменная подается на все DFB-блоки или куски программы, где должна выполняться какая-то команда. Они по битам 15-8 должны определять, их эта команда, и выполнять ее.
6. Пишем в ПЛК обработчик команд:
При появлении новой команды она переписывается в кольцевой буфер, значение в регистре команды обнуляется;
При появлении в кольцевом буфере команд самая первая пришедшая забирается из буфера и записывается в переменную из п.5.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
leon78
эксперт
эксперт
Сообщения: 1024
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 104 раза

Re: 128 советов начинающему программисту ПЛК

Сообщение leon78 »

Михайло писал(а):Просто leon оказался очередным программистом и не представляет простоту языка LD. Я знаю много языков, в том числе объектно-ориентированные, но в дискретно-логических задачах лучше LD ничего нет! :) LD формирует особое мышление, которое облегчает программирование.
Вам приходилось иметь дело с программой на LD или FBD, в которой порядка 3000 каналов ввода-вывода?
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
leon78
эксперт
эксперт
Сообщения: 1024
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 104 раза

Re: 16#0006 Почему ST лучше FBD

Сообщение leon78 »

pike писал(а):Задачи в плк и так циклические.
Ну ничего себе...
А как же Переменная "i"! 26 лет на рынке счётчиков!???
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

pike
завсегдатай
завсегдатай
Сообщения: 573
Зарегистрирован: 08 авг 2008, 10:43
Имя: Щукин Андрей Александрович
Страна: Россия
город/регион: Москва
Благодарил (а): 6 раз
Поблагодарили: 51 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение pike »

leon78 писал(а): Вам приходилось иметь дело с программой на LD или FBD, в которой порядка 3000 каналов ввода-вывода?
Мне приходилось/придеться разбираться с программами на LD c ~2000 вх/вых. Ни чего страшного, бубен не требуется, умение читать электро схемы приветствуется. Программа разбита на задачи, внутри задач идет деление LD секциями по узлам системы. На узел получается LD стр 5 А4 макс.

Хотя я не поклонник решений, где "3000 каналов" запихиваются в один процессор.
leon78 писал(а):А как же Переменная "i"! 26 лет на рынке счётчиков!???
А? Вы о чем?
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.

Автор темы
leon78
эксперт
эксперт
Сообщения: 1024
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 104 раза

Re: 128 советов начинающему программисту ПЛК

Сообщение leon78 »

pike писал(а):
leon78 писал(а): А как же Переменная "i"! 26 лет на рынке счётчиков!???
А? Вы о чем?
Да я о том, что цикл сканирования контроллера и циклы FOR или WHILE это несколько разные вещи
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

Re: 128 советов начинающему программисту ПЛК

Сообщение Михайло »

Я не имел дела с такими большими программами. Но не уверен, что каждый бит влияет на значение остальных 2999 бит! Такое мозгу человека непостижимо!
Группу из 3000 битов, можно разбить примерно на 1000 групп примерно по 3 бита в каждой, и они не взаимосвязаны, а значит могут легко запрограммированы в LD. :)

Зачем переменные i, команды while, for и прочее, если есть счетчики (counters)?

Представьте: заниматься наладкой 3000 датчиков и исполнительных механизмов единовременно... Один датчик выйдет из строя - придется останавливать остальные 2999 микрообъектов...
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17472
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1278 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение Jackson »

Михайло писал(а): Группу из 3000 битов, можно разбить примерно на 1000 групп примерно по 3 бита в каждой...
Как-то в институте нам преподаватель вывел формулу и считал подставив значения. Глядя на доску он вслух говорил: "... таааак, это сокращается, остаётся дробь, в числителе... ага.... получаем 60 поделить на 3, это будет приблизительно 20, ну а (восторженно) бОльшей точности нам сейчас и не требуется!"
:)
По вопросам работы Форума можно обратиться по этим контактам.

pike
завсегдатай
завсегдатай
Сообщения: 573
Зарегистрирован: 08 авг 2008, 10:43
Имя: Щукин Андрей Александрович
Страна: Россия
город/регион: Москва
Благодарил (а): 6 раз
Поблагодарили: 51 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение pike »

leon78 писал(а):Да я о том, что цикл сканирования контроллера и циклы FOR или WHILE это несколько разные вещи
А для чего вы используете циклы, которые должны выполняться за 1 скан контроллера? И сколько повторений нужно? И как это у вас влияет на скан контроллера?
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17472
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1278 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение Jackson »

pike писал(а):
leon78 писал(а):Да я о том, что цикл сканирования контроллера и циклы FOR или WHILE это несколько разные вещи
А для чего вы используете циклы, которые должны выполняться за 1 скан контроллера? И сколько повторений нужно? И как это у вас влияет на скан контроллера?
Я бы переформулировал вопрос: А для чего Вы используете циклы?
По вопросам работы Форума можно обратиться по этим контактам.

sensorlink
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 18 янв 2010, 11:14
Имя: Oleg Z

Re: 16#0000 Самый лучший язык - ST

Сообщение sensorlink »

leon78 писал(а):
pike писал(а): Мягко говоря, спорное утверждение...
Вот и напишите это как совет, противоречаший совету 16#0000
Действительно спорное, только не совсем в поддержку Вам. Уже лет 7 использую язык С для программирования контроллеров (правда - это B&R описание, если интересно есть на http://www.sensorlink.ru). Соглашусь с Вами что ST читабельнее LD. В свое время на Сименсе приверженцу LD показал, что код на ST раза в 3 меньше места занимает. И если LD занял 3 экрана, то LD - только 1. Но надо признать, что все зависит от образования, если вы инженер, то схемы Вам читать намного проще, чем мне как прграммисту код на С. Насчет памяти и функций, для серьезных и "мощных" контроллеров нет особой разницы. Если даже на слабеньких мотороллах B&R справлялся на ура с 30 и более ПИД регуляторами на С и кучей своих функций, то с появлением Интела такие вопросы даже не возникают. Насчет документирования отвечу, практически у всех при внесении изменений в код добавления в документацию сильно опаздывают и, соответственно, другому разобраться может быть даже сложнее с несоответствующей документацией, чем без нее.

sensorlink
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 18 янв 2010, 11:14
Имя: Oleg Z

Re: 16#0003 Распределение адресного пространства

Сообщение sensorlink »

leon78 писал(а):Никто не хочет меня поддержать, продолжаю сам. Буду стараться дополнять список советов при наличии времени.

5. Не храните булевские переменные для чтения ЧМИ - храните биты в регистрах. Помните, что 2 булевские переменные занимают целый 16-битный регистр!
6. Если есть флаги состояния или режима работы оборудования, не храните их поотдельности. Пример:
хранить сочетание бит 00 - закрыта, 01 - промежуток, 10 - открыта, 11 - неисправность намного лучше, чем хранить 4 независимых бита на каждое состояние.
5. - это видимо особенность Вашего PLC.
6. Исходя из 5 я бы посоветовал уже сразу ввести состояния 0, 1, 2, 3, 4, ... Причем каждое состояние описать в виде констант Close, Open и т.п. Тогда код будет более читабельный.

sensorlink
здесь недавно
здесь недавно
Сообщения: 3
Зарегистрирован: 18 янв 2010, 11:14
Имя: Oleg Z

Re: 16#0005 Сообщения для ЧМИ

Сообщение sensorlink »

leon78 писал(а):В DCS системах есть механизм передачи сообщений (алармов). В ПЛК этот механизм надо делать самим.
В B&R контроллерах с интегрированными панелями, такой механизму уже реализован, т.е. не для всех типов PLC - это актуально.

Автор темы
leon78
эксперт
эксперт
Сообщения: 1024
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 104 раза

Re: 128 советов начинающему программисту ПЛК

Сообщение leon78 »

Я решил по этой теме сделать форум. Уже несколько месяцев лежит, руки не доходят наполнять.
http://plc.iboards.ru/
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17472
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1278 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение Jackson »

leon78 писал(а):Я решил по этой теме сделать форум. Уже несколько месяцев лежит, руки не доходят наполнять.
http://plc.iboards.ru/
А можно было у нас тут сделать подфорум, отдали бы его Вам в администрирование.... :ext_secret:
По вопросам работы Форума можно обратиться по этим контактам.

Автор темы
leon78
эксперт
эксперт
Сообщения: 1024
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 27 раз
Поблагодарили: 104 раза

Re: 128 советов начинающему программисту ПЛК

Сообщение leon78 »

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

Jackson
администратор
администратор
Сообщения: 17472
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 749 раз
Поблагодарили: 1278 раз

Re: 128 советов начинающему программисту ПЛК

Сообщение Jackson »

leon78 писал(а):Можно, только я там тем кучу наделал. Хочу, чтобы не форум в полном смысле слова получился
Да, но технически ведь сделано на том же самом PHPbb, что и здесь :) Стало быть всё зависит только от оформления. На torrents.ru или на 4pda.ru - видели как F.A.Q. оформлены? А там - движки с тем же функционалом.
В общем, смотрите сами. Отдельный форум создать можно, в нём - те же подфорумы и темы как обычно, а дальше - только руки. Нет - так нет, дело Ваше, мы на Вас ссылку дадим тогда. Просто наш форум уже довольно раскрученный (смотрю по посещаемости).
По вопросам работы Форума можно обратиться по этим контактам.

Vladi

Re: 128 советов начинающему программисту ПЛК

Сообщение Vladi »

:ext_book: это все конечно прелесть спорить какой язык удобнее, каждому свое не все блоки удобно писать в STL, главно не забывать оставлять коменты,для тех кто придет после вас.еще бы не забыть продублировать. :ext_book:
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»