Рейтинг@Mail.ru
 

Программирование контроллеров ICP DAS на MiniOS 7. Работа с модулями ввода вывода

12 января 2015

Серия промышленных контроллеров базирующихся на операционной системе Mini OS от компании ICP DAS является самой привлекательной по цене. Контроллеры предлагаются в блочном варианте - это серии I-7188 и uPAC-7186, а так же в модульном I-8000 и iPAC-8000. Эти промышленные контроллеры давно присутствуют на российском рынке и имеют достаточно большое количество инсталляций в различных приложениях. В своей основе они базируются на x86 процессоре совместимом с ПК, а операционная система Mini OS полностью повторяет известную OC DOS,  поэтому разработка приложений для них осуществляется при помощи стандартных средств, таких как Turbo C или Borland C/С++. Несмотря на то, что и операционная система и средства разработки являются устаревшими, применение их для автоматизации локальных узлов и механизмов вполне оправдано, из-за низкой стоимости промышленного контроллера.

Рассмотрим одну из типовых задач, работу с модулями ввода – вывода, для этого используем контроллер uPAC-7186EXD к нему, по средством, сети RS-485 подключены два модуля удаленного ввода вывода  I-7055D для работы с дискретными каналами и модуль аналогового ввода I-7015 для измерения температуры при помощи термометров сопротивлений RTD .

Так как операционной системой контроллера uPAC является DOS-подобная MiniOS 7, то программирование будем осуществлять на языке Cи в среде разработки Borland С/C++ 3.1 для DOS. 

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

Модуля серии I-7000, работают по протоколу DCON, все необходимые функции находятся в стандартной библиотеке 7186el.lib - она имеется в свободном доступе на ftp-сервере компании ICP DAS.

Для чтения статуса дискретных входов и выходов используем две стандартных функции библиотеки 7186el.lib. Одна из которых посылает команду, в определенном формате протокола DCON, формат имеет следующую структуру:

 Разделительный символ   Адрес модуля (0-FF)   Команда   [Контрольная сумма]   CR 

Другая принимает ответ, который имеет аналогичную структуру: 

 Разделительный символ   Адрес модуля (0-FF)   Данные   [Контрольная сумма]   CR 

Формат протокола DCON применительно к модулям ввода вывода I-7000 описан в документации на ftp-сервере ICP DAS, поэтому подробно на этом мы останавливаться не будем, пользователь при необходимости может обратится к данной документации.

Приведем пример работы с модулем I-7055D, будем включать дискретные выхода в соответствии со входом:

#include <stdio.h> //
#include <stdlib.h> // подключаем необходимые библиотеки для работы с модулями
#include "lib7186e.h" //
void main()
{
InitLib(); // инициализация библиотеки для работы с модулями
InstallCom(2, 9600, 8, 0, 1); // открываем com-порт
unsigned char read[7]; // инициализируем переменную для чтения ответа от модуля
char status[2]; // переменная для хранения статуса каналов ввода
char out[5]; // переменная для управления каналами вывода
while(1>0) // цикл для бесконечного опроса
{
SendCmdTo7000(2, "$016",0); // команда для чтения статуса каналов ввода
ReceiveResponseFrom7000_ms(2,read,150,0); // считывание статуса в переменную read
sprintf(status,"%c%cn",read[3],read[4]); // преобразуем полученный ответ таким образом, 
//чтобы оставить только шестнадцатеричное значение статуса входных каналов
sprintf(out, "@01%c%c",read[3],read[4]); // этому значению придадим формат протокола
SendCmdTo7000(2,out,0); // и отправим команду на включение выходных каналов
Delay(15); // служебная пауза
}
}

Чтение аналогового входа модуля ввода I-7015 выполняется блоком:

unsigned char read[20]; // определяем переменную для чтения ответа модуля
SendCmdTo7000(2, "#020", 0); // указываем com-порт, адрес модуля в 485 сети
// и команду для чтения аналогового входа
ReceiveResponseFrom7000_ms(2, read, 200, 0); // считываем температуру датчика, подключённого к каналу №0
// модуля аналогового ввода

С помощью этих базовых функций управления модулями ввода/вывода имеется возможность реализации более сложных алгоритмов путём обработки полученных данных и использования сложной логики.

Смотрите так же статьи по программированию под Windows CE

Программирование контроллера под Windows CE. Обмен данными с панелью оператора по Modbus TCP ➦

Программирование контроллеров на Windows CE. Работа с модулями ввода вывода ➦

Программирование контроллеров на Windows CE. Работа с базами данных ➦