Будучи лучшим/более эффективным программистом ПЛК
Компания, с которой я занимаюсь своим переводом/добавлением, в основном программирует ПЛК с модулями Siemens.
Исходит из того, что большинство людей были электрическими парнями и перешли на инженерные разработки.
Моя проблема как новичок в том, что я не могу быть действительно эффективным и быстрым, когда я программирую программное обеспечение PLC.
Хотя я очень эффективен, когда я кодирую С# или Java в VS/Eclipse
Я действительно беспокоюсь, что я не могу быть действительно продуктивным с ПЛК, а не с "реальными" языками программирования.
- Это недостаток завершения кода?
- Это недостаток общих знаний на стороне автоматизации?
- Это недостаток инноваций в PLC, а не VS (LINQ, Dynamics, Lambda).
Есть ли у вас опыт работы с ПЛК?
И как вы с ней продуктивны?
Примечание. Это мой последний год в компании, и поэтому я хочу быть очень продуктивным.
В ожидании многих замечательных ответов!
Ответы
Ответ 1
Программирование ПЛК отличается от обычного процедурного программирования несколькими способами:
1) Логика релейной логики - довольно примитивный язык. Его трудно быть столь же продуктивным. Большинство программистов ПЛК не используют подпрограммы; его почти как если бы мир PLC один из которых забыл время и программное обеспечение. Вы можете преуспеть, применяя как следствие, простые методы разработки программного обеспечения, например, определять интерфейсы между блоками кода, даже если абстрактно.
2) Большая часть программирования ПЛК связана с булевыми уравнениями. Если вы хотите быть хорошим при программировании PLC, работать при работе с булевой логики: узнать Булева алгебра, особенно такие вещи, как теорема Де Моргана для распространения НЕ через И и ИЛИ (поскольку ПЛК обычно не предлагают операторы НЕ, вам это нужно гораздо больше часто тогда вы ожидаете)
3) Поймите, что программирование ПЛК - это управление и обратная связь в реальном времени. Большинство стандартных языков программирования (например, Java) плохо относятся к этому, если вообще. Подумайте о том, что код ПЛК является логикой, которая управляет выходами, и , что механические системы, управляемые, являются фактически "логическими", что управляет входами PLC. Я часто моделировал механическую систему, используя другую PLC, чтобы позволить мне отлаживать мою программу ПЛК, не требуя реальной машины factory, чтобы контроль. Это также позволяет моделировать сбои; см. пункт 6.
4) Большая часть программирования ПЛС абстрактно связана с переходом от состояний к штатам, где государство представляет то, что PLC знает о внешнем мире, и переходы возникают, когда ПЛК считывает внешний вход и обнаруживает, что мировое государство имеет немного изменился. Поймите столько, сколько сможете, о автоматах с конечным состоянием и контроль над дискретными системами. Это будет вам очень приятно.
5) ПЛК часто нужно помнить прошлые события. Следовательно, большая часть логики ПЛК связанные с установкой/сбросом/тестированием логических/числовых переменных состояния и/или таймеров. Поэтому, хотя код программы ПЛК часто выглядит как чистая логика, на самом деле это имеет множество побочных эффектов, что делает довольно сложным рассуждение о программе. Так же сложно, как и на более современном языке, таком как C или Java.
6) Обратите внимание на обработку механических отказов. Большинство программ PLC предполагают контролируемая система работает как рекламируемая; это действительно плохая практика. В реальном мире контролируемые система работает так, как рекламируется только до тех пор, пока она не сломается, что всегда будет в конечном итоге. Если вы включите диагностический код, который поможет определить, что механически нарушено в ваших программах ПЛК, это займет у вас больше времени писать их, но пользователи будут любить вас, потому что нет ничего хуже, чем a factory, который сломан, но он не скажет вам, как это сделать. Остановленный factory это остановленный банкомат, а менеджеры factory ненавидят это.
Ответ 2
Это раздражает меня, когда программирование ПЛК рассматривается с презрением так называемых "реальных" программистов. Несколько сообщений здесь намекают на тот факт, что программирование ПЛК является дисциплиной для себя.
"Поймите, что программирование ПЛК связано с управлением и обратной связью в реальном времени. Большинство стандартных языковых программ программирования (например, Java) плохо относятся к этому приложению".
"Таким образом, люди начинают выпускать инструменты анализа для проверки последствий и логических противоречий, отдельного временного и государственного моделирования и т.д., фактически не делая ничего проще и отклоняются от технического принципа сокращения проблемного пространства".
Чтобы подчеркнуть, что лестничная логика - это "забытое время в дисциплине", это унизить инструмент для выполнения этой функции. В конце концов, Лестница была первым языком, на самом деле представляющим физические устройства в программном обеспечении - это место объектно-ориентированного программирования как парадигма.
Кроме того, давайте не будем забывать, что ПК и элементы управления на ПК полностью ненадежны. Он падает; componentenet устарели и не могут быть приобретены в течение нескольких лет, в лучшем случае; он падает; он заражается вирусами и людьми, которые помещают "Donkey Kong" на свои рабочие станции; он падает; сверлильные операторы отключают программное обеспечение в третьей смене; и я упоминал, что он падает?
ПЛК продолжают существовать после стольких лет так называемого "продвижения" в мире ПК, так как по сей день ПК по-прежнему содержат избыточные товары с избытком. И ваша многомиллионная сборочная линия не является.
Наконец, я держу тест юмора. Часть, которая трещит меня, видит, как ребята пытаются писать код ПЛК. Бесконечный вопрос (буквально и образно), который, как нам кажется, получается: "Почему я получаю ошибку сторожевого таймера, когда я возвращаюсь к началу программы?" Или другой личный фаворит - "Как написать следующий цикл в лестнице?"
Оба предают фундаментальную нехватку знаний о том, как работают ПЛК, и еще раз иллюстрируют, что программирование автоматизации - это отдельная дисциплина, требующая отдельных инструментов.
ТМ
Ответ 3
Я согласен с вами по 3 вопросам, которые вы упомянули.
У меня есть некоторый опыт работы с CoDeSys, и я думаю, что 2 из этих проблем исчезли с версией 3.x.
* Is it the lack of code completion?
* Is it the lack of innovation in PLC as opposed to VS (LINQ, Dynamics, Lambda)
CoDeSys 3.x имеет интеллект и удобный редактор, и он привносит объектно-ориентированное программирование в мир ПЛК, что, на мой взгляд, очень приятное новшество.
Я думаю, что это помогает повысить производительность. Я не знаю, делают ли конкуренты CoDeSys подобные вещи, но я думаю, что на рынке программирования ПЛК есть интересные вещи.
Отсутствие знаний является общим для всех технологий. IEC-1131 был спроектирован так, чтобы его можно было легко понять на фоне разработки (LD для электриков, FBD для автоматизации enginneer, ST для программистов C/PASCAL...). поэтому, на мой взгляд, это не сложнее, чем что-либо еще. VS также имеет свою сложность: попробуйте сделать свой собственный OPC-сервер с С++, и вы оцените, что эта функция готова к использованию в большинстве программ SoftPLC. В этом случае intellisense не будет большой помощью.
Конечно, рынок программирования ПЛК менее динамичен, чем обычные инструменты программирования. Я думаю, что это происходит из индустриального мира, который предпочитает недобросовестную технологию, а не маркетинговую сексуальность.
Я надеюсь, что это поможет
Ответ 4
Языки программирования - это инструменты. Если вы знаете только один язык, у вас есть только один инструмент. Инструмент может быть хорош для одной работы, хорошо для пары других и бесполезен для всего остального. Если вы знаете больше инструментов, вы можете делать больше заданий.
То, что вы видите, - это не просто разница между "настоящими" языками, такими как С# и Java, но разница между приложениями реального времени на ПК и управлением машиной в реальном времени, которая является основным для ПЛК.
Хорошие программисты знают языки, отличные программисты знают процессы. Они понимают не только язык, на котором они программируют, но и процесс программирования. Если вы собираетесь писать бухгалтерское программное обеспечение, вам нужно знать об учете. Если вы собираетесь писать код ПЛК для управления машиной, вам лучше знать, что делает эта машина и как она работает.
Ответ 5
Взгляните на эти два продукта для Siemens Simatic Step7:
- SCL (уже в Step7 Professional, также называемом ST или структурированным текстом)
- CFC (отдельный продукт)
Проще говоря, первый на самом деле Pascal, и он может быть очень полезен для создания ваших собственных блоков. Второй - это левый-правый, удобный для навигации по графическому представлению и связыванию этих блоков, а также онлайн-онлайн-мониторинг их.
Те двое дадут вам эффективность, которую вы ищете, поэтому вы можете полностью забыть о STL/LAD/FBD (за исключением анализа кода других людей). Комбинированные, они очень мощные и RAD-инструменты для программирования ПЛК.
Ответ 6
Программное обеспечение ПЛК имеет свой фон:
- является дополнительной частью пространства решений для механического и электрического моделирования (общей конструкции процесса)
- повышенная зависимость от ПЛК более достойная альтернативная реализация, но без независимой методики моделирования
- IEC61499 рекомендует UML в качестве метода проектирования для программирования ПЛК.
Разработать:
-
являющийся дополнительными компонентами, ПЛК использовался в качестве контроллеров последовательности/состояния/контура, блокировки защиты, формирования сигнала и т.д., имеющих функции, как указано в IEC61131. Требование хорошо фиксируется в механических и электрических моделях, нет необходимости в независимом моделировании.
-
возросла зависимость от ПЛК при наборе требований к исключениям процессов, процедурам восстановления, многоэтапному анализу режима отказа и управлению последствиями, было разработано бессознательное внедрение технологии проектирования шаблонов. Однако в разных отраслях разные технологические компании используют разные подходы. Как правило, они строятся поверх традиционных моделей, литературы по функциональным спецификациям, сквозного списка причин и следствий, условного управления ситуациями с использованием логических диаграмм. Основными принципами являются обширное тестирование, непрерывное применение и коррекция, возможность повторного использования для идеального подхода к дизайну.
-
Недостаточное отсутствие моделирования программного обеспечения ПЛК и отказ от IEC61158 (моделирование распределенных объектов/данных/зависимостей Foundation fieldbus), IEC61499 был представлен в 2006 году с рекомендацией UML в качестве метода проектирования. Тем не менее, тенденция была и есть подход к функциональному объектно-ориентированному объекту, что приводит к сложным зависимостям объектов из-за временных привязок и состояний, которые обычно присущи технологическим приложениям, которые являются логически тяжелыми, а не тяжелыми данными, как в ИТ-индустрии. Таким образом, люди начинают выходить с инструментами анализа для проверки последствий и логических противоречий, отдельного временного и государственного моделирования и т.д., Фактически не делая ничего проще, и отклоняются от технического принципа сокращения проблемного пространства. Подход также не имеет сходства и непрерывности от механических, электрических и документирующих процессов.
Текущая ситуация:
а. IEC61131 и IEC61499, являющиеся стандартами производителя, а также бесплатные инженеры по контролю от необходимости работать в ОС реального времени, должны оставаться стандартами приложений на долгое время
б. UML - очень возможный проектный подход
с. шаблоны проектирования поверх UML должны обеспечивать одинаковые/равные/близкие с точки зрения моделей модели (поток данных, а не поток продукта, модель данных, чтобы быть практическими свойствами объекта), шаблоны связующего, шаблон эскалации ошибок, шаблон эскалации блокировки, неявные шаблоны растений и объектов и т.д. Хорошая модель данных в ПЛК также является ключом к успешному дизайну интерфейса или SCADA.
Я успешно реализовал системы, разработав полностью рационализированный набор шаблонов проектирования для станции очистки воды и конвейера factory с погрузочно-разгрузочными машинами. Мне нужна среда для разработки шаблонов проектирования, слишком много для обсуждения, концептуального фона для измерений/оборудования/подсистемы/процессов/объектов установки, их зависимостей в меньшей степени, их неявных отношений, некоторых простых правил ограничения и управления распространением изменений, и т.д.