PDA

Просмотр полной версии : ПЛК150 + СП270Т



_Александр_
16.04.2013, 11:53
Здравствуйте!
Выношу на ВАШЕ рассмотрение мой проект работы системы регулирования водогрейного котла. Проект рабочий. Отопительный сезон ПЛК отработали без сбоев. Но мне, как начинающему работать в программировании будет полезно узнать ВАШИ замечания. Что делаю может быть не так, как сделал бы квалифицированный программист.

Yegor
17.04.2013, 07:07
Код — жуть. Отступы, пустые строки и пробелы вокруг операторов от балды вообще расставлены. Как у вас: http://pastebin.com/zbe6EdWf, как надо: http://pastebin.com/EquvpVBB

Вот так нехорошо делать:
IF iNagruzka > 100 THEN
xMeoGazZacrytie := FALSE ;
xMeoGazBlok := TRUE;
END_IF

IF iNagruzka < 100 THEN
xMeoGazZacrytie := TRUE ;
xMeoGazBlok := FALSE;
END_IFМожно же проще:
xMeoGazBlok := iNagruzka > 100;
xMeoGazZacrytie := iNagruzka < 100;Есть фрагменты ещё забавнее:
IF xBlokGaz = TRUEЗачем тут «= TRUE» вообще?

Очень много бесполезных и даже неправильных комментариев:
Reguljtor_Vozduxa(); (*Объявление программы регулятора воздуха*)Не объявление, а вызов. Это комментарий типа наклейки «Руль» на руле автомобиля.

Многие переменные объявлены по два раза. Имена неудачные. Например, в PLC_PRG:
rVozduxVxod AT %ID6.0: REAL := 4; (*Давление воздуха перед горелкой 4..20 mA.*)Во-первых, в конфигурации эта переменная уже привязана к %ID6.0. Во-вторых, если это давление, то почему не написать VozduxDavlenie4_20? А лучше и вовсе AirPressure4_20. И уж совсем прекрасно будет назвать его AirPressure, убрать блок Shcala_Vozdux и задать шкалу на вкладке Module Parameters в конфигурации. Или вот iZdnGaz... Почему, например, не HMI_GasSetpoint? И не надо было бы этих комментариев:
Задание нагрузки введённое с панели оператора имеющее тип WORD преобразуется в тип INT для подключения на вход модуля CHARCURVEБыло бы и так понятно по «HMI», что значение берётся с панели. И про эти преобразования в то да в сё — зачем? Это какой-то хитрый трюк, непонятный из кода? Это имеет непосредственное отношение к задаче управления?

Дальше. Константы должны быть константами. Такие переменные, как timPauzaGaz и timImpulsCaz следует объявлять в разделе VAR CONSTANT.

В программах Reguljtor_Nagruzki и Reguljtor_Vozduxa у вас велосипед гистерезиса и комментарий для восьмиклассника о том, как он работает. Почему-то CHARCURVE вы догадались использовать, а HYSTERESIS проигнорировали.
Двоичные операторы GT и LTЭто операторы сравнения, а не двоичные операторы. Двоичные — AND, OR, NOT, XOR.

Интерфейс терпимый, только цвета не такие буйные возьмите.

Ладно, хватит пока.

_Александр_
17.04.2013, 13:35
Код — жуть.
Спасибо. Я для того и выложил, чтобы потыкали носом.
Вы не против, если ещё возникшие вопросы буду адресовать Вам персонально?

Yegor
17.04.2013, 14:05
Пожалуйста.

_Александр_
17.04.2013, 16:41
Внесу Ваши замечания. HYSTERESIS применить на вход регулятора?
... убрать блок Shcala_Vozdux и задать шкалу на вкладке Module Parameters в конфигурации...
Значит шкалу можно задавать так, как на рисунке?

Yegor
18.04.2013, 05:47
HYSTERESIS применить на вход регулятора?Гистерезис вместо всех этих GT/LT в регуляторах, да.

Шкалу можно задавать так.

_Александр_
18.04.2013, 07:28
Гистерезис вместо всех этих GT/LT в регуляторах, да.

Шкалу можно задавать так.

Спасибо. Жаль ПЛК свободного нет. Будет только через пару месяцев.

capzap
18.04.2013, 07:49
Спасибо. Жаль ПЛК свободного нет. Будет только через пару месяцев.

что такого в Вашей программе уникального, что нельзя все проверить в эмуляции?

_Александр_
18.04.2013, 08:16
что такого в Вашей программе уникального, что нельзя все проверить в эмуляции?

Как проверить диапазон у шкалы заданной со входа ПЛК в эмуляции?

capzap
18.04.2013, 08:32
вручную вводить ниже диапазона, равно нижней границе, в диапазоне и по верху те же манипуляции, если нужна динамика я подключал другое устройство в качестве слейва, там формировал аналоговый сигнал и выдавал его по модбас, а в редактируемом проекте у меня в конфигураторе диапазон 4-20 и есть фб который переводит эти значения в требуемый диапазон, границы которого можно менять из визуализации. После отладки меняю переменные из добавленного эмулятора сигналов на реальные входа контроллера

_Александр_
18.04.2013, 11:41
вручную вводить ниже диапазона, равно нижней границе, в диапазоне и по верху те же манипуляции, если нужна динамика я подключал другое устройство в качестве слейва, там формировал аналоговый сигнал и выдавал его по модбас, а в редактируемом проекте у меня в кнеонфигураторе диапазон 4-20 и есть фб который переводит эти значения в требуемый диапазон, границы которого можно менять из визуализации. После отладки меняю переменные из добавленного эмулятора сигналов на реальные входа контроллера
Значит все ФБ "LIN_TRAFO" после эмуляции удаляются, а значения шкалы прописываются на входе контроллера. Спасибо. Приду на
работу, переделаю на одном ПЛК.
Жду ещё замечаний.