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

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

И так.

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

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

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

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

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



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

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

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

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

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

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

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