Обмен с модулями 8080, 8090 и 8091
В контроллере I8000 обращение к модулям ввода/вывода I-80xx поддерживается следующими каналами:
подтипа 2 (см. Подтип 2 ):
OEM_DI_8, OEM_DO_8 (8DI, 8DO, 8DI+8DO)
OEM_DI_16, OEM_DO_16 (16DI, 16DO, 16DI+16DO)
OEM_DI_32, OEM_DO_32 (32DI, 32DO)
подтипа 1 (см. Подтип 1 ):
OEM_AI, OEM_AO
Атрибут Канал указывает номер канала в модулях аналогового ввода-вывода, номер слова (0/1) в модуле 32DI и равен 1 для канала OEM_DO_16 для модуля (16DI+16DO).
Атрибут GAIN/REG для модулей аналогового ввода задает диапазон входного сигнала:
0 – 10 V
1 – 5 V
2 – 2.5 V
3 – 1.25 V
4 – 20 mA
Для работы с модулями I-87xxx, установленными в основной крейт, используются каналы подтипа 8 (см. Подтип 8 ), настроенные следующим образом:
Номер порта=0 (всегда);
Адрес=0 для всех модулей (не важно, на какой адрес был настроен модуль);
Слот – номер слота в крейте (нумерация начинается с 1);
Канал – номер канала в модулях аналогового ввода-вывода.
В контроллере WinCon/WinPAC CE / I8000 для поддержки обмена с модулями I-87xxx, установленными в основной крейт, необходимо задать порт COM1 с настройками 115 кбит/с, 8-1-n.
Для работы с модулями I-87xxx, установленными в крейт расширения, используются каналы подтипа 8, настроенные следующим образом:
Номер порта – номер COM-порта, уменьшенный на 1;
Адрес – адрес модуля;
Слот= 0;
Канал – номер канала в модулях аналогового ввода-вывода.
Для работы со встроенным индикатором контроллера I8000 необходимо создать канал OEM_SysKey (см. Подтип 2 ); это дает возможность просматривать значения каналов при помощи кнопок, расположенных на лицевой панели контроллера. Для работы с диодами L1, L2, L3 лицевой панели контроллера I8000 необходимо создать канал OEM_Led (см. Подтип 2 ). Первые 3 бита этого канала переключают индикаторы L1, L2 и L3.
В контроллере I8000 прерывания и адреса портов должны быть заданы произвольными–ненулевыми. При работе через COM3 по внутреннему RS-485 необходимо установить управление приемопередатчиком RTS.
Для взаимодействия с платой 87040 (32 DI) в ИС нужно создать шаблон 8.7 ( Подтип 8 , DI), задать в нем Канал=2 и привязать к каналу HEX32 типа INPUT.
Для взаимодействия с платой 87041 (32 DO) в ИС нужно создать шаблон 8.108 ( Подтип 8 , DO16), задать в нем Канал=2 и привязать к каналу HEX32 типа OUTPUT.
Обмен с модулями 8080, 8090 и 8091
Для обмена с модулями 8080, 8090 и 8091 используются каналы OEM_Register (имеют также имя WinCon_Register, 1.26 – см. Подтип 1 ), настроенные следующим образом:
Канал {ia.c[2]} – номер канала (для 8091 – конфигурирование обмена);
Мультиплексор {ia.c[3]} – слот (для 8091 – номер платы, 1-19);
GAIN/REG {ia.c[4]} – параметры инициализации (для 8091 – различные параметры в зависимости от ia.c[2]);
ALT/REG {ia.c[5]} – тип платы (80, 90, 91).
Плата 8080
Атрибут ia.c[4] канала OUTPUT задает параметры инициализации (см. документацию 8080):
биты 0 и 1 – режим работы платы:
00 – 0 (Dir/Pulse Counting, 4 канала);
01 – 1 (Up/Down Counting, 4 канала);
10 – 2 (Frequency, 8 каналов);
11 – 3 (Up-counting, 8 каналов);
биты 2 и 3 – выбор t для режима 2, Frequency:
00 – AutoTT;
01 – LowTT;
10 – HighTT;
11 – останов канала;
биты 4 и 5 – зарезервировано;
бит 6 – 1 – разрешить использование фильтров;
бит 7 – 0 – неинвертированный сигнал; 1 – инвертированный сигнал.
Каждый канал инициализирует плату.
Атрибут ia.c[2]} задает выполнение следующих функций:
если ia.c[2] < 16 – INPUT: чтение значения счетчика (int) или частоты (float); OUTPUT: ia.c[4]=0 – сброс счетчика и ia.c[4]=<значение канала> (новый режим);
другие значения ia.c[2] – чтение/запись (INPUT/OUTPUT) следующих параметров:
16 – AutoTT (мс);
17 – AutoVV;
18 – LowTT (мс);
19 – LowVV;
20 – HighTT (мс);
21 – HighVV;
22 – установка значений, заданных ia.c[2] = 16...21 (только OUTPUT);
23 – время фильтра 0 (мкс);
24 – время фильтра 1 (мкс);
25 – время фильтра 2 (мкс).
В режиме 0, 1 и 3: если номер канала – 8…16, считывается значение переполнения.
Плата 8090
Атрибут ia.c[4] канала OUTPUT задает параметры обмена (см. документацию 8090):
биты 0 и 1 – режим работы платы:
00 – Quadrant Counting;
01 – CW/CCW Counting;
10 – Pulse/Direction Counting;
биты 4, 5 и 6 – если 1, при старте не сбрасывается счетчик соответственно оси X, Y и Z.
Атрибут ia.c[2]} задает выполнение следующих функций (в зависимости от класса канала – HEX16/HEX32, – вызываются соответственно 2- или 4-байтовые функции):
INPUT:
1, 2, 3 – чтение значения счетчика соответственно оси X, Y и Z;
OUTPUT:
0 – сброс счетчиков всех осей;
1, 2, 3 – сброс счетчика соответственно оси X, Y и Z.
Плата 8091
Класс канала – HEX16/HEX32.
В зависимости от атрибута ia.c[2], каналы OUTPUT задают параметры инициализации или команды управления (см. документацию 8091):
0 – реинициализация платы с параметрами, заданными каналами OUTPUT с ia.c[2] = 1...11; count=1 (служебная переменная);
1 – режим концевых выключателей всех осей (NCmode; 0 – NO; 1 – NC);
2 – Low_Speed;
3 – High_Speed;
4 – направление по X (xdir, 0 – NORMAL_DIR, 1 – REVERSE_DIR);
5 – направление по Y (ydir);
6 – DDA_Cycle;
7 – Acc_Dec;
8 – режим выходных импульсов X (xmode; 0 – CW_CCW, 1 – PULSE_DIR);
9 – режим выходных импульсов Y (ymode);
10 – состояние двигателя по X (xson; 0 – OFF, 1 – ON);
11 – состояние двигателя по Y (yson);
12 – если count >= <значение канала>, count=0 и производится останов платы (после этого плата должна быть реинициализирована);
13 – остановы (в зависимости от значения канала):
1 – останов оси X;
2 – останов оси Y;
3 – останов осей X и Y; очистка буфера команд;
4 – то же, что и 3 через программу обработки прерываний;
14 – простые перемещения (в зависимости от значения канала):
0 – если ia.c[4]==0, останов оси X, 1 – останов оси Y;
2 – медленное перемещение, останов по выключателю ORG1 (X) или ORG2 (Y); значение бита 0 канала задает направление (0 – CW, 1 – CCW), ia.c[4] задает ось (0 – X, 1 – Y);
4 – то же, что 2, но перемещение быстрое;
6 – то же, что 2, но перемещение продолжается до подачи команды останова оси;
8 – то же, что 6, но перемещение быстрое;
10 – замедление до Low_Speed, останов – по команде останова оси; ia.c[4] задает ось (0 – X, 1 – Y);
12 – замедление до 0 и останов; ia.c[4] задает ось (0 – X, 1 – Y);
15 – медленное перемещение (ia.c[4]=0 – по X; ia.c[4]=1 – по Y; атрибут (0,9) определяет величину и направление перемещения);
16 – то же, что 15, но перемещение быстрое;
18 – запись значения атрибута (9, Q) канала в служебную переменную pulseX;
19 – запись значения атрибута (9, Q) канала в служебную переменную pulseY;
20 – перемещение по длинной интерполяционной прямой в точку (pulseX, pulseY);
21 – перемещение по длинной интерполяционной прямой в точку (pulseX, pulseY) с заданием скорости (0-2040, биты 0-10 значения канала) и профилей ускорения/замедления (бит 11 значения канала; 0 – разрешить профили, 1 – запретить); ia.c[4]=1;
22 – перемещение по интерполяционной окружности с центром в точке (pulseX, pulseY); бит 12 значения канала задает направление (0 – CW (по часовой стрелке), 1 – CCW (против часовой стрелки)); скорость и профили ускорения/замедления задаются так же, как для ia.c[2]=21;. ia.c[4]=1;
23 – перемещение по интерполяционной дуге в точку (Xcur + pulseX, Ycur+pulseY); направление, скорость и профили ускорения/замедления задаются так же, как для ia.c[2]=22; ia.c[4]=1. Радиус дуги (со знаком) определяется переменной RR:
если канал 4-байтовый, RR равно значению байтов 2 и 3 атрибута (0,9);
если канал 2-байтовый, RR равно значению битов 13-15 значения канала;
24 – перемещение по короткой интерполяционной прямой в точку (pulseX, pulseY).
Для канала INPUT атрибут ia.c[2] задает считываемый параметр:
0 – count;
1...11 – параметр, заданный соответствующим каналом OUTPUT;
13 – проверка остановки осей (бит 0 – X, бит 1 – Y; 0 – остановлена, 1 – не остановлена);
17 – информация о выключателях и буфере команд (байт 0 – X, байт 1 – Y, расшифровку битов см. в документации 8091);
18 – pulseX;
19 – pulseY;
23 – проверка выполнения команды интерполяционного перемещения (2 – завершена; 1 – не завершена). Если ia.c[4] = 0, в канал записывается 0;
24 – проверка остановки осей (аналогично ia.c[2] = 13); если обе оси остановлены, перемещение по короткой интерполяционной прямой в точку (pulseX, pulseY).
Эта плата требует инициализации, для чего используется канал 1.33 (WinCon_AO) типа INPUT со следующими параметрами удаленного адреса:
95, C2 (номер канала) – 0;
98, C5 (ALT/REG) – 0.
Для обмена используются каналы 8-/16-/32-разрядного дискретного ввода/вывода для WinCon/WinPAC (см. Подтип 2 ). Для инициализации обмена и задания направления работы битов атрибут Состояние (STATE) должен иметь одно из следующих значений (в скобках указан номер значения в списке):
I-I-I (1) – все биты – IN;
I-I-O (2) – биты 0-3 – OUT, биты 4-15 – IN;
I-O-I (3) – биты 0-7 – OUT, биты 8-15 – IN;
O-O-I (7) – биты 0-11 – OUT, биты 12-15 – IN;
O-O-O (8) – все биты – OUT.