Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Положительный и отрицательный фронт



В STL контакту Положительный фронт соответствует команда EU (Edge Up).

В STL контакту Отрицательный фронт соответствует команда ED (Edge Down).

 

 


6. Язык SCL на примере контроллера I-7188 ф. ICP DAS. Пример. Дублирование состояния входов на выходах.

Порт СОМ2 у контроллера I-71788 EAD работает по интерфейсу RS-485. Как известно, этот интерфейс используется для создания распределенной системы сбора данных на основе модулей серии I-7000.

Для посылки команд на модули 7000-серии следует использовать функцию:

int SendCmdTo7000 (int Port,unsigned char *Cmd,int ChkSum)

здесь Port – номер СОМ порта;

Эта функция возвращает 0, если команда передана (ответ получен) или возвращает код ошибки.

После посылки команды, программа должна вызывать функцию

int ReceiveResponseFrom7000 (int Port,unsigned char *Buffer,long TimeOut, int ChkSum);

для получения ответа из модуля серии 7000.


Общие команды для модулей

Параметры обмена по сети RS485 по умолчанию

- Адрес: 01

- Скорость обмена: 9600 бод

- Контрольная сумма: отключена.

Рассмотрим общие команды на примере модуля I-7060D

1. $AAM – чтение имени модуля

Ответ: !AA(Data) – где Data имя модуля.

 

2. Команда ~** - Информирует всех модулей, что хозяин сети готов

Ответ: Ничего не возвращает

 

Модуль дискретного ввода/вывод I-7060D

Модуль I-7060D имеет 4 входа и 4 релейных выхода. Релейные выходы RL1 и RL2 имеют нормально разомкнутые контакты, а релейные выходы RL3 и RL4 имеют переключающиеся контакты.

Основные команды для работы с входами и выходами

1. @AA - Чтение состояния дискретных входов/выходов.

Ответ: >(Data)

здесь (Data) – прочитанное состояние дискретных входов/выходов.

Пример. Команда: @01.   Ответ: >0F09

0F – состояние выходов.

09 – состояние входов.

 

2. @AA(Data) - Установка дискретных выходов.

Data – значение выходных данных. Один символ для выходных каналов, меньше чем 4. Для модуля I-7060 Data принимает значения от 0 до F.

Ответ: >

Пример. Команда: @01F. Ответ: >

Установка всех выходов на лог. 1.

 

3. #AABBDD - Установка дискретных выходов.

Эта команда дублирует предыдущую команду. BB – определяет режим вывода:

1. BB = 00 – вывод на все каналы. При этом DD определяет состояние выходов. Для модуля I-7060 DD может находиться от 00h до 0Fh.

2. BB = 1c – установка значения одного канала. Число с – определяет номер канала. Для модуля I-7060 число с = 03. При этом DD определяет состояние выхода: DD=01 – установка канала; DD=00 – обнулить канал.

Ответ: Правильная команда >

Пример. Команда: #01 00 0F. Ответ: >

Предполагаемый модуль I-7060 с адресом 01. Установка всех выходов 0Fh=1111b. Возвращает успешное выполнение команды.

 

4. $AA6 - Чтение состояния дискретного ввода/вывода

Ответ: !(Data)              

(Data) значение дискретного ввода/вывода. Для модуля I-7060D ответ будет например, таким: !0F0900. Назначение цифр:

0F - состояние 4-х выходов,

09 – состояние 4-х входов,

00 – ничего не означает.

Биты 16-ичной цифры определяют состояние соответствующего входа или выхода.

 

5. $AA4 - Чтение синхронно выбранных данных

Ответ: Правильная команда: !S(Data)

          Неправильная команда: ?AA

S – статус синхронных данных, 1 - первое чтение, 0 – повторное чтение.

Пример. Команда: $014. Ответ: !10F00

     Чтение по адресу 01. S=1 – первое чтение. Данные – 0F – состояние выходов; 00- состояние входов для модуля I-7044.

 

6. Команда #** - синхронное чтение модулей.

 

ПРИМЕР: Дублирование состояния входов на выходе

 

#include

 

Int data, quit=0;

Unsignes_char Response [40], Command [40], in;

Void

{

       InstallCom2(9600,8,0);

       Strcat(Command, “@01”);

//Цикл контроллера

       While (!quit)

       {

                   If (kbhit())

                   {

                              Data=Getch();

                              If (data==’q’)quit=1;

}

                   SendCmdTo7000(2,”@01”,0);

ReceiveResponseFrom7000(2,Response,10000L,0);

//ответ: >0F0A

In=Response[4];

Command[3]=in;

Command[4]=0;

SendCmdTo7000(2,Response,10000L,0);

}

//конец цикла

RestoreCom2();

}



Система команд для чтения/записи данных на модули, включенные в сеть RS-485. Библиотечные функции контроллера I-7188 для доступа к удаленным модулям.

Система команд контроллера I-7188 EAD

А) Команды чтения и записи на порта

Контроллер I-7188 EAD имеет 8 дискретных входов и 7 дискретных выходов. Для чтения состояния дискретных входов и изменения состояния дискретных выходов можно использовать следующих команд:

Inp(порт) - считывание состояния дискретных входов.

Outp(порт, значение) – записывает значение в указанный порт.

int Kbhit (void) – проверяет, имеется ли символ в буфере клавиатуры. Если данных нет, то возвращает 0. Если данные имеются, то возвращает символ.

int Getch(void) - считывает один символ из порта СОМ1 и возвращает его (число от 0 до 255). Если в буфере порта не имеется символа, то функция будет ожидать до тех пор, пока не появится символ.

void Putch (int data) – посылает один символ на порт СОМ1 (только младший байт будет послан)

 

Б) Инсталлирование драйвера СОМ-порта и снятие драйвера

Перед использованием СОМ-порта, пользователь должен вызывать функцию InstallCom (или InstallCom1/2/3/4) для инсталляции драйвера СОМ-порта. Перед выходом из программы, пользователь должен вызывать функцию RestoreCom (или RestoreCom1/2/3/4) для снятия драйвера COM-порта. 

 

В) Функции для работы с СОМ-портами

Функция проверки на наличие данных во входном буфере СОМ-порта:

int IsCom1(void);

Если буфер СОМ-порта пустой, то возвращает 0, если в буфере имеются данные, то возвращает 1. Если буфер СОМ-порта переполнен, то возвращает -7. Для снятия статуса переполнения следует считывать данных из СОМ порта с помощью функции ReadCom( ).


Поделиться:



Последнее изменение этой страницы: 2019-04-21; Просмотров: 276; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.019 с.)
Главная | Случайная страница | Обратная связь