Федеральное агентство железнодорожного транспортаФилиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования«Сибирский государственный университет путей сообщения» в г.Новоалтайске
Тема урока: Разработка программ логических контроллеров в системе программирования MasterPLC Designer.
Тип урока: смешанный (получение новых знаний, лабораторная работа).
Цель урока: Познакомиться с системой программирования логических контроллеров MasterPLC Designer.
Оборудование: Российский производитель средств программирования для программируемых логических контроллеров – компания «Инсат» [ Cкачайте файл, чтобы посмотреть ссылку ]
Автор: преподаватель информатики и схемотехники Чебан Олег Олегович
Дата создания: 2014, г. Новоалтайск
I. Лекция.
I.1. Разработка проекта.
Разработка программ контроллеров
Настройка связей с контроллерами средствами OPC-сервера
Настройка связей с БД
Описание системы управления
Описание технологического проекта
Задание типовых настроек
Создание документов (свойства объектов)
Администрирование (права операторов)
Тестирование системы.
Примечание. Работы можно выполнять параллельно, например: один специалист программирует и отлаживает контроллеры и управляемые ими механизмы ввода-вывода, другой – проектирует систему управления, третий разрабатывает пользовательский интерфейс оператора.
I.2. Типы данных языка программирования контроллеров.
Типы данных относятся к общим элементам языков МЭК (Международная энергетическая комиссия [ Cкачайте файл, чтобы посмотреть ссылку ]). Тип данных переменных определяет род информации, диапазон представления и множество допустимых операций. Любую переменную (параметр) можно использовать только после ее объявления. Присваивать значения одной переменной другой можно, если только они обе одного типа. Допускается присвоение значения переменной совместимого типа, например:
Переменной типа SINT (диапазон значений от -128 до +127) можно присвоить значение логической переменной, способную принимать только два значения: логической 1 и 0, но не наоборот.
Таблица 1. Целочисленные типы
Тип
Нижний предел
Верхний предел
Размер в байтах
BYTE
Строка из 8 бит
1 (8 бит)
WORD
Строка из 16 бит
2 (16 бит)
DWORD
Строка из 32 бит
4 (32 бит)
LWORD
0
2^64-1
8 (64 бит)
SINT
-128
+127
1
INT
-32768
+32767
2
DINT
-2^31
+2^31-1
4
LINT
-2^63
+2^63-1
8
USINT
0
255
1
UINT
0
65535
2
UDINT
0
2^32-1
4
ULINT
0
2^64-1
8
Целые числа могут быть представлены в двоичной, восьмеричной, десятичной или шестнадцатеричной системе счисления. Числовые константы отличные от десятичных требуют указания основания системы счисления перед знаком «#». Например:
Двоичное
2#1010_1100
Восьмеричное
8#16
Десятичное
78
Шестнадцатеричное
16#4E
Примечание. Символ подчеркивания не влияет на значение и используется для улучшения зрительного восприятия числа.
I.3. Общая структура программы на языке ST.
Общая структура программы на языке ST (структурированный текст) состоит из двух разделов: раздел описания переменных и раздел действий. Например:
VAR
in0, in1: WORD; (*Это комментарий. Переменные in0 и in1 типа WORD*)
in2: SINT:=5; (*Тип SINT начальное значение 5*)
in1: BYTE:=16#f5; (*Тип BYTE начальное значение f5*)
END_VAR
In1:=2#1010_1000; (*равносильно 2#10101000*)
Логические переменные объявляются ключевым словом BOOL (алгебра Буля). Они могут принимать значение логического нуля FALSE (Ложь) или логической единицы True (Истина). При начальной инициализации начальное значение равно FALSE (Ложь).
VAR
out1: BOOL; (* Переменная логического типа*)
out2: BOOL:=TRUE; (*переменная лог. типа значение TRUE*)
END_VAR
out1:=out2 > 100; (*результат операции сравнения можно присваивать лог. переменной*)
Переменные действительного типа REAL представляют действительные числа в диапазоне ±10^±38. Из 32 бит занимаемых числом мантисса занимает 23 бита. В результате точность представления составляет 6-7 десятичных цифр. Длинный действительный формат LREAL занимает 64 бита с мантиссой в 52 бита. Точность 15-16 десятичных цифр и диапазоном ±10^±307.
Переменные типа TIME используются для выражения интервалов времени.
VAR
(* Переменная состоит из полей дней (d), часов (h), минут (m), секунд (s)*)
time1: TIME:=t#1d_5h_14m_15s;
time1: TIME:=t#14m_15s;
END_VAR
Time1:=t#1m_65s; (*ошибка*)
Time1:=t#1m_59s; (*правильно*)
Time1:=t#165s; (*правильно*)
Time1:=t#1.2s; (*равносильно 1s 200 ms*)
Тип переменных время суток и дата.
Дата записывается в формате Год-Месяц-Число:
Время записывается в формате асы:Минуты:Секунды:
Дата и время записывается DATE_AND_TIME#2002-01-31-16:03:15.47
или DT#2002-01-31-16:03:15.47
Тип строковых переменных STRING определяет переменные, содержащие текстовую информацию. Размер строки задается при объявлении
VAR
str1: STRING(20); (* Строка вмещает 20 символов*)
str2: STRING(60):=’Протяжка’; (*апостроф – одиночная кавычка*)
END_VAR
Таблица 2. Непечатные символы
Обозначение
Код
$$
Знак доллара
$’
Одиночная кавычка
$L
Перевод строки
$N
Новая строка
$P
Перевод страницы
$R
Разрыв страницы
$T
Табуляция
Массивы представляют собой множество элементов с произвольным доступом. Массивы бывают одномерными, двумерными и трехмерными.
VAR
massXY: ARRAY [1..10,1..20] of INT; (*двумерная таблица 10 строк и 20 столбцов*)
massSTR:ARRAY[0..9] of STRING(12); (*10 элементов типа строка по 12 символов*)
massXY: ARRAY [1..10] of INT:=1,3,5,7,11,13,17,19,23,29; (*простые числа*)
massSTR:ARRAY[1..2] of STRING(12):=’Вася’;
END_VAR
massSTR[2]:=’Петя’; (*Запись строки во 2 элемент массива*)
Структуры предназначены для создания новых типов данных на основе элементов базовых типов. Описание структуры происходит глобально на уровне проекта (структура получает идентификатор). После этого можно объявлять переменные типа структура (идентификатор).
Пример объявления структуры:
TYPE base:
STRUCT
Name: STRING(32);
Group: STRING(6);
Kurs: INT;
END_STRUCT
END_TYPE
Объявление переменной student и начальная инициализация
VAR
Student: BASE:=( Name:=’Иванов Иван’);
END_VAR
Student.group:=’21-АТМ’;
Student.kurs:=2;
Задача. Написать LT программу упаковки 8 бит в байт, см. Приложение 3.
Дано. Промышленный контроллер (микросхема) обладает входом в 8 бит и выходом в 1 байт.
Требуется. Перевести параллельный двоичный код (входы in0, in1, .., in7) в десятичное число (выход out1).
Теоретические основы задания.
Для перевода двоичного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания двоичной системы счисления на соответствующие цифры в разрядах двоичного числа.
Пример: Дано двоичное число 1010 00102
Перевод двоичного числа в десятичное: 1010 00102 = 1·27 + 0·26 + 1·25 + 1·24 + 0·23 + 0·22 + 1·21 + 0·20 = 128+32+2 = 16210
Решение.
Вариант 1. Условный оператор IF <условие> THEN <действие 1> ELSE <действие 2>;
VAR
in0, in1, in2, in3, in4, in5, in6, in7: BOOL; (* Переменные логического типа*)
out1: USINT; (*натуральные числа в диапазоне от 0 до 255*)
END_VAR
out1:=0; (*Инициализируем переменную out1*)IF(in0)THEN out1:=out1+1;END_IF; (*Если in0=TRUE то переменную out1 увеличиваем на 1*20*)IF(in1)THEN out1:=out1+2;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*21*)IF(in2)THEN out1:=out1+4;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*22*)IF(in3)THEN out1:=out1+8;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*23*)IF(in4)THEN out1:=out1+16;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*24*)IF(in5)THEN out1:=out1+32;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*25*)IF(in6)THEN out1:=out1+64;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*26*)IF(in7)THEN out1:=out1+128;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*27*)
Вариант 2. Функция преобразования типов (bool_to_usint)
VAR
in0, in1, in2, in3, in4, in5, in6, in7: BOOL; (* Переменные логического типа*)
out1: USINT; (*натуральные числа в диапазоне от 0 до 255*)
END_VAR
out1:=0; (*Инициализируем переменную out1*)out1:=bool_to_usint(in0)*1+bool_to_usint(in1)*2+bool_to_usint(in2)*4+bool_to_usint(in3)*8+bool_to_usint(in4)*16+bool_to_usint(in5)*32+bool_to_usint(in6)*64+bool_to_usint(in7)*128;
I.2. Лабораторная работа №1. Программа упаковки 8 бит в байт.
Цель работы: Познакомиться с системой программирования логических контроллеров MasterPLC Designer.
Задача. Написать программу упаковки 8 бит в 1 байт.
Теоретические основы лабораторной работы.
Промышленный контроллер обладает входом в 8 бит и выходом в 1 байт. Требуется перевести параллельный двоичный код в десятичное число (выход). Для перевода двоичного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания двоичной системы счисления на соответствующие цифры в разрядах двоичного числа.
Пример: Дано двоичное число 1010 00102
Перевод двоичного числа в десятичное: 1010 00102 = 1·27 + 0·26 + 1·25 + 1·24 + 0·23 + 0·22 + 1·21 + 0·20 = 128+32+2 = 16210
Ход работы.
1. Запустите программу MasterPLC Designer – Новый проект: Наименование: Project_1; Тип: Стандартный
2. В разделе Система раскройте список фильтров и задайте «Полное дерево (нет фильтров)», см. Рис. 1
Рис. 1. Настройка фильтра дерева Системы
3. В разделе Система по правой кнопке Добавить – Контроллер Windows – Переименуйте в Контроллер 1
4. Раскройте группу Контроллер 1 – Ресурсы – ФБ (функциональный блок) и по правой кнопке Добавить – ФБ ST.
Рис. 2. Создание программы ST в дереве проекта
5. Переименуйте программу ФБ ST_1 в pack8bits
Раскройте группу pack8bits – Параметры – по правой кнопке Добавить – Параметр, см. Рис. 3
Рис. 3. Создание входов и выходов программы
6. По правой кнопке мыши – Дублировать – продублируйте переменную in0 7 раз
Аналогично создадим переменную out1: Доступ: Output (выход) - Тип данных: USINT (от 0 до 255, размер 1 байт)
7. В редакторе программы задается тело программы, см. Листинг 1. Код упаковки 8 бит (in0, in1,..,in7) в 1 байт (out1)
out1:=0; (*Инициализируем переменную out1*)IF(in0)THEN out1:=out1+1;END_IF; (*Если in0=TRUE то переменную out1 увеличиваем на 1*20*)IF(in1)THEN out1:=out1+2;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*21*)IF(in2)THEN out1:=out1+4;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*22*)IF(in3)THEN out1:=out1+8;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*23*)IF(in4)THEN out1:=out1+16;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*24*)IF(in5)THEN out1:=out1+32;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*25*)IF(in6)THEN out1:=out1+64;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*26*)IF(in7)THEN out1:=out1+128;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*27*)
8. Сохраните проект
9. Компиляция проекта: Исполнение – Проверить
10. В случае обнаружения синтаксических ошибок кода программы – проверить наличие переменных, тип данных, комментаторные скобки и т.д..
11. Чтобы программа выполнялась в контроллере ее нужно поместить в основную задачу – Перетащите программу pack8bits в Основную задачу
12. Выделите группу Основная задача и задайте период запуска основной задачи 1 секунда (1000 мс) в окне Настройки
13. Для запуска проекта щелкните кнопку Эмуляция – раскройте правый (Вход) и левый (Выход) клемник – задайте TRUE для in1, in5 и in7 значение TRUE
Примечание. При ручном изменении значения, переменная автоматически блокируется пиктограмма Блокировка (Замок)
14. Симуляция контроллера: По правой кнопке на ФБ добавьте ФБ FBD – перетащите в группу Основная задача -откройте окно блок схем FBD – перетащите в него программу pack8bits
15. Запустите Эмуляция – протестируйте результат работы – сохраните проект
16. Закомментируйте код программы и найдите сумму произведений степеней по формуле, используя стандартную функцию преобразования типов: out1:=bool_to_usint(in0)*1+bool_to_usint(in1)*2+bool_to_usint(in2)*4+bool_to_usint(in3)*8+bool_to_usint(in4)*16+bool_to_usint(in5)*32+bool_to_usint(in6)*64+bool_to_usint(in7)*128;
Date1: DATE:=D#2002-01-31;
time1: TIME:=TOD#16:03:15.47;
15
Тема урока: Разработка программ логических контроллеров в системе программирования MasterPLC Designer.
Тип урока: смешанный (получение новых знаний, лабораторная работа).
Цель урока: Познакомиться с системой программирования логических контроллеров MasterPLC Designer.
Оборудование: Российский производитель средств программирования для программируемых логических контроллеров – компания «Инсат» [ Cкачайте файл, чтобы посмотреть ссылку ]
Автор: преподаватель информатики и схемотехники Чебан Олег Олегович
Дата создания: 2014, г. Новоалтайск
I. Лекция.
I.1. Разработка проекта.
Разработка программ контроллеров
Настройка связей с контроллерами средствами OPC-сервера
Настройка связей с БД
Описание системы управления
Описание технологического проекта
Задание типовых настроек
Создание документов (свойства объектов)
Администрирование (права операторов)
Тестирование системы.
Примечание. Работы можно выполнять параллельно, например: один специалист программирует и отлаживает контроллеры и управляемые ими механизмы ввода-вывода, другой – проектирует систему управления, третий разрабатывает пользовательский интерфейс оператора.
I.2. Типы данных языка программирования контроллеров.
Типы данных относятся к общим элементам языков МЭК (Международная энергетическая комиссия [ Cкачайте файл, чтобы посмотреть ссылку ]). Тип данных переменных определяет род информации, диапазон представления и множество допустимых операций. Любую переменную (параметр) можно использовать только после ее объявления. Присваивать значения одной переменной другой можно, если только они обе одного типа. Допускается присвоение значения переменной совместимого типа, например:
Переменной типа SINT (диапазон значений от -128 до +127) можно присвоить значение логической переменной, способную принимать только два значения: логической 1 и 0, но не наоборот.
Таблица 1. Целочисленные типы
Тип
Нижний предел
Верхний предел
Размер в байтах
BYTE
Строка из 8 бит
1 (8 бит)
WORD
Строка из 16 бит
2 (16 бит)
DWORD
Строка из 32 бит
4 (32 бит)
LWORD
0
2^64-1
8 (64 бит)
SINT
-128
+127
1
INT
-32768
+32767
2
DINT
-2^31
+2^31-1
4
LINT
-2^63
+2^63-1
8
USINT
0
255
1
UINT
0
65535
2
UDINT
0
2^32-1
4
ULINT
0
2^64-1
8
Целые числа могут быть представлены в двоичной, восьмеричной, десятичной или шестнадцатеричной системе счисления. Числовые константы отличные от десятичных требуют указания основания системы счисления перед знаком «#». Например:
Двоичное
2#1010_1100
Восьмеричное
8#16
Десятичное
78
Шестнадцатеричное
16#4E
Примечание. Символ подчеркивания не влияет на значение и используется для улучшения зрительного восприятия числа.
I.3. Общая структура программы на языке ST.
Общая структура программы на языке ST (структурированный текст) состоит из двух разделов: раздел описания переменных и раздел действий. Например:
VAR
in0, in1: WORD; (*Это комментарий. Переменные in0 и in1 типа WORD*)
in2: SINT:=5; (*Тип SINT начальное значение 5*)
in1: BYTE:=16#f5; (*Тип BYTE начальное значение f5*)
END_VAR
In1:=2#1010_1000; (*равносильно 2#10101000*)
Логические переменные объявляются ключевым словом BOOL (алгебра Буля). Они могут принимать значение логического нуля FALSE (Ложь) или логической единицы True (Истина). При начальной инициализации начальное значение равно FALSE (Ложь).
VAR
out1: BOOL; (* Переменная логического типа*)
out2: BOOL:=TRUE; (*переменная лог. типа значение TRUE*)
END_VAR
out1:=out2 > 100; (*результат операции сравнения можно присваивать лог. переменной*)
Переменные действительного типа REAL представляют действительные числа в диапазоне ±10^±38. Из 32 бит занимаемых числом мантисса занимает 23 бита. В результате точность представления составляет 6-7 десятичных цифр. Длинный действительный формат LREAL занимает 64 бита с мантиссой в 52 бита. Точность 15-16 десятичных цифр и диапазоном ±10^±307.
Переменные типа TIME используются для выражения интервалов времени.
VAR
(* Переменная состоит из полей дней (d), часов (h), минут (m), секунд (s)*)
time1: TIME:=t#1d_5h_14m_15s;
time1: TIME:=t#14m_15s;
END_VAR
Time1:=t#1m_65s; (*ошибка*)
Time1:=t#1m_59s; (*правильно*)
Time1:=t#165s; (*правильно*)
Time1:=t#1.2s; (*равносильно 1s 200 ms*)
Тип переменных время суток и дата.
Дата записывается в формате Год-Месяц-Число:
Время записывается в формате асы:Минуты:Секунды:
Дата и время записывается DATE_AND_TIME#2002-01-31-16:03:15.47
или DT#2002-01-31-16:03:15.47
Тип строковых переменных STRING определяет переменные, содержащие текстовую информацию. Размер строки задается при объявлении
VAR
str1: STRING(20); (* Строка вмещает 20 символов*)
str2: STRING(60):=’Протяжка’; (*апостроф – одиночная кавычка*)
END_VAR
Таблица 2. Непечатные символы
Обозначение
Код
$$
Знак доллара
$’
Одиночная кавычка
$L
Перевод строки
$N
Новая строка
$P
Перевод страницы
$R
Разрыв страницы
$T
Табуляция
Массивы представляют собой множество элементов с произвольным доступом. Массивы бывают одномерными, двумерными и трехмерными.
VAR
massXY: ARRAY [1..10,1..20] of INT; (*двумерная таблица 10 строк и 20 столбцов*)
massSTR:ARRAY[0..9] of STRING(12); (*10 элементов типа строка по 12 символов*)
massXY: ARRAY [1..10] of INT:=1,3,5,7,11,13,17,19,23,29; (*простые числа*)
massSTR:ARRAY[1..2] of STRING(12):=’Вася’;
END_VAR
massSTR[2]:=’Петя’; (*Запись строки во 2 элемент массива*)
Структуры предназначены для создания новых типов данных на основе элементов базовых типов. Описание структуры происходит глобально на уровне проекта (структура получает идентификатор). После этого можно объявлять переменные типа структура (идентификатор).
Пример объявления структуры:
TYPE base:
STRUCT
Name: STRING(32);
Group: STRING(6);
Kurs: INT;
END_STRUCT
END_TYPE
Объявление переменной student и начальная инициализация
VAR
Student: BASE:=( Name:=’Иванов Иван’);
END_VAR
Student.group:=’21-АТМ’;
Student.kurs:=2;
Задача. Написать LT программу упаковки 8 бит в байт, см. Приложение 3.
Дано. Промышленный контроллер (микросхема) обладает входом в 8 бит и выходом в 1 байт.
Требуется. Перевести параллельный двоичный код (входы in0, in1, .., in7) в десятичное число (выход out1).
Теоретические основы задания.
Для перевода двоичного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания двоичной системы счисления на соответствующие цифры в разрядах двоичного числа.
Пример: Дано двоичное число 1010 00102
Перевод двоичного числа в десятичное: 1010 00102 = 1·27 + 0·26 + 1·25 + 1·24 + 0·23 + 0·22 + 1·21 + 0·20 = 128+32+2 = 16210
Решение.
Вариант 1. Условный оператор IF <условие> THEN <действие 1> ELSE <действие 2>;
VAR
in0, in1, in2, in3, in4, in5, in6, in7: BOOL; (* Переменные логического типа*)
out1: USINT; (*натуральные числа в диапазоне от 0 до 255*)
END_VAR
out1:=0; (*Инициализируем переменную out1*)IF(in0)THEN out1:=out1+1;END_IF; (*Если in0=TRUE то переменную out1 увеличиваем на 1*20*)IF(in1)THEN out1:=out1+2;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*21*)IF(in2)THEN out1:=out1+4;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*22*)IF(in3)THEN out1:=out1+8;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*23*)IF(in4)THEN out1:=out1+16;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*24*)IF(in5)THEN out1:=out1+32;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*25*)IF(in6)THEN out1:=out1+64;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*26*)IF(in7)THEN out1:=out1+128;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*27*)
Вариант 2. Функция преобразования типов (bool_to_usint)
VAR
in0, in1, in2, in3, in4, in5, in6, in7: BOOL; (* Переменные логического типа*)
out1: USINT; (*натуральные числа в диапазоне от 0 до 255*)
END_VAR
out1:=0; (*Инициализируем переменную out1*)out1:=bool_to_usint(in0)*1+bool_to_usint(in1)*2+bool_to_usint(in2)*4+bool_to_usint(in3)*8+bool_to_usint(in4)*16+bool_to_usint(in5)*32+bool_to_usint(in6)*64+bool_to_usint(in7)*128;
I.2. Лабораторная работа №1. Программа упаковки 8 бит в байт.
Цель работы: Познакомиться с системой программирования логических контроллеров MasterPLC Designer.
Задача. Написать программу упаковки 8 бит в 1 байт.
Теоретические основы лабораторной работы.
Промышленный контроллер обладает входом в 8 бит и выходом в 1 байт. Требуется перевести параллельный двоичный код в десятичное число (выход). Для перевода двоичного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания двоичной системы счисления на соответствующие цифры в разрядах двоичного числа.
Пример: Дано двоичное число 1010 00102
Перевод двоичного числа в десятичное: 1010 00102 = 1·27 + 0·26 + 1·25 + 1·24 + 0·23 + 0·22 + 1·21 + 0·20 = 128+32+2 = 16210
Ход работы.
1. Запустите программу MasterPLC Designer – Новый проект: Наименование: Project_1; Тип: Стандартный
2. В разделе Система раскройте список фильтров и задайте «Полное дерево (нет фильтров)», см. Рис. 1
Рис. 1. Настройка фильтра дерева Системы
3. В разделе Система по правой кнопке Добавить – Контроллер Windows – Переименуйте в Контроллер 1
4. Раскройте группу Контроллер 1 – Ресурсы – ФБ (функциональный блок) и по правой кнопке Добавить – ФБ ST.
Рис. 2. Создание программы ST в дереве проекта
5. Переименуйте программу ФБ ST_1 в pack8bits
Раскройте группу pack8bits – Параметры – по правой кнопке Добавить – Параметр, см. Рис. 3
Рис. 3. Создание входов и выходов программы
6. По правой кнопке мыши – Дублировать – продублируйте переменную in0 7 раз
Аналогично создадим переменную out1: Доступ: Output (выход) - Тип данных: USINT (от 0 до 255, размер 1 байт)
7. В редакторе программы задается тело программы, см. Листинг 1. Код упаковки 8 бит (in0, in1,..,in7) в 1 байт (out1)
out1:=0; (*Инициализируем переменную out1*)IF(in0)THEN out1:=out1+1;END_IF; (*Если in0=TRUE то переменную out1 увеличиваем на 1*20*)IF(in1)THEN out1:=out1+2;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*21*)IF(in2)THEN out1:=out1+4;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*22*)IF(in3)THEN out1:=out1+8;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*23*)IF(in4)THEN out1:=out1+16;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*24*)IF(in5)THEN out1:=out1+32;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*25*)IF(in6)THEN out1:=out1+64;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*26*)IF(in7)THEN out1:=out1+128;END_IF; (*Если in1=TRUE то переменную out1 увеличиваем на 1*27*)
8. Сохраните проект
9. Компиляция проекта: Исполнение – Проверить
10. В случае обнаружения синтаксических ошибок кода программы – проверить наличие переменных, тип данных, комментаторные скобки и т.д..
11. Чтобы программа выполнялась в контроллере ее нужно поместить в основную задачу – Перетащите программу pack8bits в Основную задачу
12. Выделите группу Основная задача и задайте период запуска основной задачи 1 секунда (1000 мс) в окне Настройки
13. Для запуска проекта щелкните кнопку Эмуляция – раскройте правый (Вход) и левый (Выход) клемник – задайте TRUE для in1, in5 и in7 значение TRUE
Примечание. При ручном изменении значения, переменная автоматически блокируется пиктограмма Блокировка (Замок)
14. Симуляция контроллера: По правой кнопке на ФБ добавьте ФБ FBD – перетащите в группу Основная задача -откройте окно блок схем FBD – перетащите в него программу pack8bits
15. Запустите Эмуляция – протестируйте результат работы – сохраните проект
16. Закомментируйте код программы и найдите сумму произведений степеней по формуле, используя стандартную функцию преобразования типов: out1:=bool_to_usint(in0)*1+bool_to_usint(in1)*2+bool_to_usint(in2)*4+bool_to_usint(in3)*8+bool_to_usint(in4)*16+bool_to_usint(in5)*32+bool_to_usint(in6)*64+bool_to_usint(in7)*128;
Date1: DATE:=D#2002-01-31;
time1: TIME:=TOD#16:03:15.47;
15