- •2. Операционные системы реального времени. Цикл контроллера. Языки программирования систем реального времени (мэк 61131-3). Scada-системы.
- •3. Язык fbd на примере α-контроллера ф. Mitsubishi. Примеры: микроволновая печь или стиральная машина-автомат.
- •8. Блок Time sw (switch)
- •9. Блок Counter
- •10. Блок Compare (сравнения)
- •11. Блок Display
- •12. Блок HourMeter (Таймер)
- •4. Язык lad на примере контроллера s7-200. Пример: Реверсивное включение ад.
- •5. Язык stl на примере контроллера s7-200. Пример: Разветвленная программа на языке stl.
- •6. Язык scl на примере контроллера I-7188 ф. Icp das. Пример. Дублирование состояния входов на выходах.
- •7. Система команд для чтения/записи данных на модули, включенные в сеть rs-485. Библиотечные функции контроллера I-7188 для доступа к удаленным модулям.
- •8. Составные части и архитектура scada-системы Genesis32. Орс-технология для доступа к устройствам ввода-вывода.
- •9. Пользовательский интерфейс GraphWorX32. Создание “картинки” технологического процесса на Genesis32. Взаимодействие GraphWorX32 с тегами модулей ввода-вывода.
- •10. Назначение vba-скриптов Genesis32. Классы доступа к элементам экранной формы. Основные этапы создания vba-скрипта.
6. Язык scl на примере контроллера I-7188 ф. Icp das. Пример. Дублирование состояния входов на выходах.
Порт СОМ2 у контроллера I-71788EAD работает по интерфейсу 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 число с = 03. При этом 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();
}