По организации программы - согласен с kondor3000 - с четверга по субботу собирал две программы для ПР205. Так вот "рассыпухи" на холсте очень мало, а вот макросы занимают почти всё место.
Уже давно для себя решил - если код в программе повторяется (например, поиск минимального тока мотора только для включённых насосов - т.е. поиск среди "значения с качеством") - оформлять в макрос.
Макросы - благо.
Хотя, если разработчики добавят возможность изменения количества входов и инверсию входов и выходов - как у Codesys - хуже бы не стало. Но, для меня лично - пройдёт почти незаметно.
Чтобы не быть голословным - покажу главный экран свежей программы в виде pdf.
Организация программы:
- здесь вся система состоит из двух частей (насос и общие для всего комплекса), соответственно для каждой части поддерживаются наборы (состояние, технологическая сигнализация, отказы, команды из вышестоящей системы - HMI - панель, облако). Было бы два насоса - частей было бы три. Это разбиение для выделения отказов, которые блокируют работу одного или всех насосов
- состояние отдельной части - это уникальное для данной части состояние (для насоса - запрос включения, состояние готовности к работе, инициализация и т.д.) Эти состояния и так всегда имеются, я их просто на этапе описания переменных группирую
- команды от вышестоящей системы делаю импульсными, т.е. сразу после восприятия команды обнуляю командное слово
- часть команд задаются с местной панели - поэтому команды от источников обрабатываются в макросах
- чтобы не переделывать программу - сразу текущие измерения, состояния, параметры настройки - держу в сетевых Slave переменных - при поступлении распоряжения организовать обмен с облаком всё уже готово
- структура программы - инициализация, обмен с вышестоящей, формирование технологической сигнализации (Warning), формирование отказов и блокировок, формирование сетевого обмена с контроллером основной технологии (насосов перекачки), рабочий алгоритм. При общем отказе рабочий алгоритм блокируется, при отказе какой-то части - блокируется только эта часть. Здесь этого не видно, т.к. есть единственный насос.
Видно, что "рассыпухи" почти нет - ценные для других проектов или повторяющиеся фрагменты кода оформлены в макросы.




Ответить с цитированием