0

Стиральная машинка (SFC, задачи, типы данных)

Пожалуй, самый простой случай, когда многозадачность может быть полезна – это моделирование объекта управления. Классическая простейшая задача на применение языка SFC – это стиральная машина, основные этапы работы которой: контроль закрытия дверки, ожидание нажатия кнопки пуск, наполнение бака водой, нагрев, стирка, слив воды.

Добавим в нашу машину несколько режимов стирки, отличающихся температурой, временем стирки и количеством используемой воды.

Для описания режима определим структуруWashPara:

TYPE WashPara :

STRUCT

WaterIn: TIME;

WashTime: TIME;

WashTemp: WORD;

WaterOut: TIME;

END_STRUCT

END_TYPE

Это ничто иное, как новый тип данных. Такие определения делаются в проекте централизованно на вкладке Data types (типы данных) менеджера проекта. Теперь мы можем объявлять в проекте переменные типа WashPara.

Создадим в проекте новый POU типа программа (PROGRAM), назовем его Wash и выберем упрощенный язык SFC. В разделе объявлений Wash объявим константу для числа режимов:

VAR CONSTANT

maxProgNr :BYTE:= 5;

END_VAR

Идея состоит в том, чтобы везде, где потребуется количество режимов, использовать maxProgNr, это позволит при необходимости легко менять их число в единственном месте программы. Для хранения режимов объявим массив структур:

MyWashPara: ARRAY [0..maxProgNr] OF WashPara;

Обращение к элементам структуры происходит через точку после указания элемента массива, например:

MyWashPara[i].WaterOut := T#5s;

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

временам шага показана на рис. 1. Переходы после выполняемых по времени шагов всегда разрешены, то есть им присвоены константы TRUE. Этим собственно все программирование и исчерпывается.

Стиральная машинка (SFC, задачи, типы данных), image0026

Рис. 1. Временные атрибуты шагов SFC

 Для наглядной демонстрации работы нашей машины удобно использовать встроенную графическую визуализацию CoDeSys. Ее возможный вариант показан на рис. 2.

 Стиральная машинка (SFC, задачи, типы данных), image0045

Рис. 2. Визуализация модели

Наша визуализация слишком уж статична, хотелось бы отобразить вращение барабана. Это можно сделать при помощи закрашенного сегмента. Напишем отдельную программу Motor, ее задача плавно циклически изменять переменную wAngle от 0 до 360 градусов, которую мы свяжем с углом сектора соответствующего элемента визуализации. Например, так:

IF xMotOn THEN

wAngle := wAngle + 5;

IF wAngle > 359 THEN

wAngle := 0;

END_IF

ELSE

wAngle := 180;

END_IF

Как видите, здесь нет таймеров, обеспечивающих достаточно медленную для зрительного восприятия скорость вращения барабана. Мы можем поступить проще, создадим для целей моделирования циклическую задачу с достаточно медленным циклом работы, который легко регулировать. После отладки эту задачу можно будет просто отключить, не изменяя ничего в основных программах. По умолчанию CoDeSys создает новый проект с единственной программой PLC_PRG, которая неявно включена в единственную циклическую задачу. Чтобы сделать многозадачный проект, необходимо использовать конфигуратор задач (Task configuration), расположенный на вкладке ‘Ресурсы’ менеджера проектов. Щелкните правой кнопкой мыши по элементу Task configuration и в появившемся контекстном меню выберете команду Append task. Сначала создадим главную задачу, она будет назваться Main, ее тип – циклический (cyclic) и интервал работы T#10ms. Аналогичным способом откройте контекстное меню для нашей новой задачи и добавьте в нее (Append program call) программу PLC_PRG();. Теперь создайте еще одну циклическую задачу MotorSim с интервалом T#100ms, в нее вставьте вызов программы Motor();. Теперь конфигурация задач должна выглядеть так, как показано на рис.3.

Стиральная машинка (SFC, задачи, типы данных), image0063

Рис.3. Конфигурация задачи

Раздел: Программы ПЛК Метки: , ,

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

Отправить сообщение

CoDeSys GSM/GPRS модем Lectus OPC MasterSCADA Modbus MX110 Omron OPC-сервер owen OWEN Easy Logic owen logic PLC Configuration PROFIBUS s-200 SCADA scada системы siemens siemens plc SIMATIC Simplight SMS step7 TRACE MODE Динамизация ИП-320 ОВЕН ОВЕН ПЛК ОВЕН ПЧВ ПЛК ПЛК ОВЕН ПР 110 Панель оператора Программируемое реле Частотный преобразователь библиотека в CoDeSys визуализация диспетчеризация конфигурация панели программирование ПЛК серия NS сименс плк частотник частотное управление язык CFC язык ST
.