9

Ответ на пост «Программирование ПЛК. Ожидание/реальность»

Ох.... Ну и написали же тут. В целом, здрасьте. Я являюсь программистом АСУ и пишу код для этих ПЛК уже лет 6 так. В основе работают с Siemens.

И так.

1)ООП. Оно есть. Как так спросите вы? Да легко и просто. ООП - это объектно-ориентированное программирование. И мы тут и делаем что управляем объектами. У нас есть такие вещи как UDT(user data type) - что в целом и представляет собой структуру с параметрами объекта.

И мы такие умные пишем, что у нас есть какой нибудь var1, который является объектом типа UDT. Дальше мы инициализируем параметры этого объекта.

FC - она же функция. Ну тут и говорить нечего. обычная функция. с входными и выходными значениями. Служит для того для чего и служит. FB - является сборником этих функций и имеет свое место в памяти. Кстати. Можно также FC закидать в другой FC. Он у нас и обрабатывает логику и закидывает данные в нужный объект.

Можно ли ограничить видимость данных? Да, но... Скажем везде есть это НО.

Шо там дальше у нас... Наследование? А вот этот пункт я не разбирал. в CodeSys вроде есть подобные вещи.



2)Массивы и циклы.

Массивы - есть. Данные-хранят. Хочешь в энергозависимой памяти, хочешь в энергонезависимой памяти. Делаются, заполняются. Почему же массив не передается сразу всей кучей на визуализацию? А тут уже работают протоколы передачи данных. Но мы можем передавать массив из 8 элементов в 8 переменных.

Циклы есть и работают. Только стоит помнить о пороговых значениях.

Также есть циклические блоки, которые нам выдадут ответ не реже чем раз в столько-то миллисекунд. И есть один общий цикл( считай main). Единственное, так это надо следить за временем исполнения.

Есть и прерывания, правда они в основном сделаны для обработки ошибок. Иначе контролер уйдет в стоп. прерывания можешь обрабатывать, а можешь нет.

Вся суть ПЛК состоит в том, что мы получаем отклик за точное время. По большей степени это все конечные автоматы. И подход там немного другой, нежели в обычном ПО.

Так что если есть вопросы, спрашивайте. Если знаю - отвечу, если нет - буду узнавать)

Показать полностью
8

Программирование ПЛК. Ожидание/реальность

/*ВВЕДЕНИЕ*/

Будучи в 5 классе, проснувшись 1 января я заметил в своей комнате заветный компуктер. О чем мог еще мечтать школьник? Поиграть в ГТА или NFS. Но, увы, компик то подъехал, а вот игры в комплекте не поставлялись, а интернет тем более. Так я и пролазил несколько месяцев по тотал командеру, командной строке и системным файлам. И задался вполне логичным вопросом: Как оно работает. Благо компьютерные клубы никто не отменял, там и  скачал пару книг по программированию на паскале и бейсике (о которых на данный момент ничего и не помню, ну кроме названия). Начался период взлетов и падений, когда или все понятно, или не понятно ничего. Ближе к 9 классу (а информатика началась именно в 9 классе) я уже мог написать простенькие программы на этих языках, поэтому на уроках спокойно играл в CSS или смотрел мемчики вконтакте. Пока кто-то не сказал про С++. Начались новые взлеты и падения. Началась эра парадигм и ООП. тут все было куда сложнее и даже после выпуска из школы я не мог сказать, что С++ стал мне как родной. А где как ни в универе прокачать свой скилл? Вот и поступил... На свою голову. Думаю стоит прояснить. Препод по английскому доказывал, что мужчины на английском будет "manS", препод по ОС, что у Windows монолитное ядро, а препод по метрологии отправлял к "ДИРЕКТОРУ" и "ВЫЗЫВАЛ РОДИТЕЛЕЙ". М-да, первый опорный юга России, что поделать. На 3 курсе нашу параллель разделили на 2 специальности - чистые программисты и программисты робототехники и мехатроники. Я попал во вторую. И О ЧУДО! Нас наконец начали С++. Да, не чистому, в WinForms, но это С++. И базы данных. И автоматизация. И искусственный интеллект. В общем желание кодить загорелось снова. Помимо универа я выучил еще несколько языков, попробовал себя в веб дизайне и геймдеве, но, увы, мои навыки оставляли желать лучшего. После 3 курса мне пришлось уйти в отставку (академ отпуск). И чтобы жить - нужны деньги, а значит нужна работа. Так я и попал в фирму, которая занимается автоматизацией. И тут началось...

/*ОСНОВНАЯ ЧАСТЬ*/

Скажу честно, с ПЛК до этого я работал мало, но работал, так что минимальное понимание было. Да и работал до этого я под присмотром препода на Mitsubisi, а тут неизвестный мне Schneider. "Ну ничего страшного" подумал я, "разберемся". Но увидев все вживую стало страшно. Что не так? А вот:

0. Для начала проясню, что в данной среде есть много "ЯП", на которых можно работать, но как истинный кодер я выбрал ST(Структурированный текст) и FBD(Functional Block Diagram). Почему объясню ниже.

1. ООП? Не, не слышал. Функции и те работают через одно место. Спасают функциональные блоки(далее ФБ), заменяющие функции. Работать с ФБ в ST крайне неудобно, поэтому прихдится делать следующее. Пишем код ФБ на ST и собираем все ФБ в одной большой программе. Удобно? Не особо, но мы знаем: работает - не трогай.

2. Массивы и циклы. Начнем с того, что вся жизнь ПЛК - это один бесконечный цикл, поэтому программа повторяться будет все время. Так же запрещены механизмы прерываний, коими и являются циклы. То есть в данной системе они как-бы должны отсутствовать, но они есть и работают крайне интересно. У данной среды предусмотрена многозадачность с разной скоростью реакции (100мс, 300 мс, 10000мс и тд). И при попытке использования циклов тот выполняется только в 1 случае: если на него есть время. Говорим циклам пока-пока. С массивами все положительно. Они работают, использовать можно, но... При попытке их передачи в панель оператора вторая может их просто не найти. Точнее в 99% случаев не найдет. Поэтому массивы только для выполнения кода, никак не для хранения данных.

3. Дебаг. Уже знаем про запрет прерываний, да? Так, а брейкпоинты это что такое? Да, точно, прерывания. Понять что с кодом не так разобрав его пошагово НЕВОЗМОЖНО! Удобно, правда?

/*ЗАКЛЮЧЕНИЕ*/

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

А на этом откланяюсь.

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества