Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
S3_Методичка_рус.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
8.89 Mб
Скачать

1.3.3. Устройства ввода-вывода. Драйверы

Практически в любой разрабатываемой системе не обойтись без устройств аналогового и дискретного ввода/вывода. S3-IDE поддерживает достаточно много специализированных плат, список поддерживаемого оборудования постоянно пополняется. Вначале необходимо выбрать подходящее оборудование, а затем обеспечить работу создаваемой системы с ним. Выполним добавление аналоговых устройств.

Добавление в систему нового устройства производится добавлением драйвера этого устройства к QNX-контроллеру. Используем плату аналогового ввода PCI–1713 и плату аналогового вывода PCI–1720.

Добавим соответствующие драйверы (рис. 1.19) в контроллер QNX_DEMO (рис. 1.20).

Рис. 1.19. Меню Добавить драйвер

Рис. 1.20. Контроллер с аналоговыми платами

Свойства драйверов плат (рис. 1.21) вызываются двойным щелчком на плате или через контекстное меню (см. Справку S3).

Рис. 1.21. Диалоговое окно Свойства драйвера PCI–1713

Привяжем переменные к соответствующим каналам. Откроем таблицу входных каналов драйвера PCI–1713 (один драйвер может содержать как входные, так и выходные каналы, в нашем только AI – аналоговые входы) двойным щелчком на элементе AI (рис. 1.22).

Рис. 1.22. Таблица входов PCI–1713

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

Рис. 1.23. Привязка переменной к каналу платы

В окне Переменные автоматически создаются группы переменных с именами соответствующих драйверов – в них S3-IDE помещает переменные, привязанные к каналам драйверов.

Переменную можно привязать к каналу драйвера и через окно свойств переменной (рис. 1.24).

Рис. 1.24. Привязка переменной к каналу через диалоговое окно Свойства

Вышеперечисленные действия необходимо выполнить и для платы аналогового вывода.

Добавим в проект плату PCI–730, она содержит как дискретные входы, так и дискретные выходы. Процедура привязки переменной к каналу драйвера та же, что и для аналоговых переменных.

1.3.4. Процессы управления

Для создания процесса управления добавим процесс управления к контроллеру QNX_DEMO и выполним необходимые настройки в окне Создание процесса управления (рис. 1.25).

Рис. 1.25. Добавление процесса управления

Развернув добавленный элемент дерева, можно увидеть элементы (секции), из которых он состоит (рис. 1.26).

Рис. 1.26. Секции процесса управления

Стартовая секция.

Стартовая секция процесса управления может содержать программы, написанные на языке ST, и предназначена для отделения неких начальных действий от основной программы. Создадим программу в стартовой секции, добавив и открыв новую функцию (рис. 1.27).

Рис. 1.27. Добавление функции в стартовую секцию

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

Рис. 1.28. Окно редактора ST-программы

Редактор ST имеет несколько полезных функций, среди них – дополнение кода и автформатирование кода (рис. 1.29). Дополнение кода (работает для имен функций и имен переменных) вызывается нажатием Ctrl+Space (конечно, перед этим нужно набрать хотя бы один символ, чтобы редактору было, что дополнять). Автоформатирование кода выполняется при нажатии Alt+Ctrl+F.

Рис. 1.29. Дополнение кода в редакторе ST

Конечная секция.

По аналогии со стартовой секцией процесса управления, конечная секция может содержать завершающие действия, выполняемые гарантировано после основной программы. В остальном все сказанное о стартовой секции процесса управления верно также и для конечной секции. Создадим в конечной секции функцию, которая будет обнулять флаг сброса неисправностей (рис. 1.30).

Рис. 1.30. Функция в конечной секции

Подпрограммы процесса управления.

Подпрограммы, созданные в данной секции, могут быть использованы в секции Последовательные программы. Языки подпрограмм – ST и FBD.

Создадим на ST функциональный блок для управления конвейером загрузки шихтовых материалов в печь (рис. 1.31).

Рис. 1.31. Создание нового функционального блока

Рис. 1.32. Редактирование функционального блока

Окно редактирования функционального блока (см. рис. 1.32) отличается от окна редактирования функции на ST. Здесь присутствует Таблица входов/выходов (таблица пин-компонент). Она содержит входы, выходы и локальные переменные для FBD функций и блоков, моделируя таким образом входные и выходные точки связи, а также ячейки памяти (переменные) с локальной областью видимости (см. Справку S3-IDE).

Последовательные программы.

В этой секции выполняются основные действия с переменными S3. Секция может содержать произвольное количество программ на FBD и SFC, которые будут выполняться в той последовательности, в которой они расположены в ветке Дерева проекта. Создадим в секции FBD программу, в которую будем помещать наши функциональные блоки (рис. 1.33).

Рис. 1.33. Создание FBD-программы в секции Последовательные программы

Созданный функциональный блок ChargeKоnveyor также помещен теперь в область Subroutines окна Палитра S3-IDE (рис. 1.34).

Рис. 1.34. Окно Палитра с пользовательским функциональным блоком

Блок можно вставить из палитры, сначала нажав на его кнопку на Палитре, а затем, нажав в точке, в которую необходимо поместить блок. Можно также перетащить блок в окно FBD-программы из Дерева проекта (рис. 1.35).

Рис. 1.35. Функциональный блок в FBD-программе

Далее присоединим переменные к входам и выходам блока (рис. 1.36– рис. 1.38).

Рис. 1.36. Контекстное меню редактора FBD

Рис. 1.37. Выбор переменной

Рис. 1.38. Переменная на схеме

Чтобы связать переменную и вход блока, их нужно соединить (рис. 1.39).

Рис. 1.39. Переменная, привязанная ко входу блока

Выполним эту операцию для всех входов блока, а также добавим комментарий к программе (рис. 1.40).

Рис. 1.40. Готовая FBD-программа

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]