Ответ на пост «Программирование ПЛК. Ожидание/реальность»1
Ох.... Ну и написали же тут. В целом, здрасьте. Я являюсь программистом АСУ и пишу код для этих ПЛК уже лет 6 так. В основе работают с Siemens.
И так.
1)ООП. Оно есть. Как так спросите вы? Да легко и просто. ООП - это объектно-ориентированное программирование. И мы тут и делаем что управляем объектами. У нас есть такие вещи как UDT(user data type) - что в целом и представляет собой структуру с параметрами объекта.
И мы такие умные пишем, что у нас есть какой нибудь var1, который является объектом типа UDT. Дальше мы инициализируем параметры этого объекта.
FC - она же функция. Ну тут и говорить нечего. обычная функция. с входными и выходными значениями. Служит для того для чего и служит. FB - является сборником этих функций и имеет свое место в памяти. Кстати. Можно также FC закидать в другой FC. Он у нас и обрабатывает логику и закидывает данные в нужный объект.
Можно ли ограничить видимость данных? Да, но... Скажем везде есть это НО.
Шо там дальше у нас... Наследование? А вот этот пункт я не разбирал. в CodeSys вроде есть подобные вещи.
2)Массивы и циклы.
Массивы - есть. Данные-хранят. Хочешь в энергозависимой памяти, хочешь в энергонезависимой памяти. Делаются, заполняются. Почему же массив не передается сразу всей кучей на визуализацию? А тут уже работают протоколы передачи данных. Но мы можем передавать массив из 8 элементов в 8 переменных.
Циклы есть и работают. Только стоит помнить о пороговых значениях.
Также есть циклические блоки, которые нам выдадут ответ не реже чем раз в столько-то миллисекунд. И есть один общий цикл( считай main). Единственное, так это надо следить за временем исполнения.
Есть и прерывания, правда они в основном сделаны для обработки ошибок. Иначе контролер уйдет в стоп. прерывания можешь обрабатывать, а можешь нет.
Вся суть ПЛК состоит в том, что мы получаем отклик за точное время. По большей степени это все конечные автоматы. И подход там немного другой, нежели в обычном ПО.
Так что если есть вопросы, спрашивайте. Если знаю - отвечу, если нет - буду узнавать)