Управление скоростью серводвигателя внешним дискретным сигналом
Для управлением скоростью в данном режиме используем внутренний параметр серводрайвера P0-01, устанавливаем значение 03 (управление скоростью (внутреннее значение)).
ДЛЯ УДОБСТВА ИСПОЛЬЗУЙТЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ XINJE SERVO.
Далее необходимо установить значения внутренней скорости.
P3-05 Внутренняя скорость 1
P3-06 Внутренняя скорость 2
P3-07 Внутренняя скорость 3
По умолчанию значение = 0. Единица: об/мин.
Выбор внутренней скорости устанавливает 3 скорости серводвигателя и выбирает скорость по внешнему сигналу. Нет необходимости настраивать внешний генератор скорости или генератор импульсов.

/SPD-D задает направление вращения сервопривода
/SPD-A, /SPD-B — комбинация данных сигналов переключает скорость.
Назначение сигналов соответствия на разъеме CN0

1. Кодировка скорости вращения

Управлять сервоприводом будем с контроллера XINJE XSLH-24A8.
Выходы контроллера NPN с открытым коллектором. Для правильной работы необходима следующая схема:

2. Программная часть
Соблюдаем правила ХОРОШЕГО ТОНА: создаем отдельные папки и переключение скоростей выносим в отдельный функциональный блок. Среда программирования CodeSys 3.5 Sp16 patch 4. Пишем на языке ST.

Добавляем папки POUs (основная программа), fbPOUs (для функционального блока), gGLB (для глобальных переменных), VISUs (визуализация).
Добавляем устройство HighSpeedIo.


{attribute 'qualified_only'}
VAR_GLOBAL
bSPD_1 :BOOL;
bSPD_2 :BOOL;
bSPD_3 :BOOL;
bREV :BOOL;
SpdA :BOOL;
SpdB :BOOL;
SpdD :BOOL;
END_VAR
FUNCTION_BLOCK SPEED_DIR
VAR_INPUT
bNspeed1 :BOOL; //Включение первой скорости
bNspeed2 :BOOL;//Включение второй скорости
bNspeed3 :BOOL;//Включение третьей скорости
bRev :BOOL;// Реверс
END_VAR
VAR_OUTPUT
bSPD_A :BOOL;//
bSPD_B :BOOL;//
bSPD_D :BOOL;//
END_VAR
VAR
END_VAR
FUNCTION_BLOCK SPEED_DIR
VAR_INPUT
bNspeed1 :BOOL; //Включение первой скорости
bNspeed2 :BOOL;//Включение второй скорости
bNspeed3 :BOOL;//Включение третьей скорости
bRev :BOOL;// Реверс
END_VAR
VAR_OUTPUT
bSPD_A :BOOL;//
bSPD_B :BOOL;//
bSPD_D :BOOL;//
END_VAR
VAR
END_VAR
IF bRev THEN
bSPD_D := TRUE;
ELSE
bSPD_D := FALSE;
END_IF
//………………………………
IF bNspeed1 AND NOT bNspeed2 AND NOT bNspeed3 THEN
bSPD_A := FALSE;
bSPD_B := TRUE;
END_IF
IF bNspeed2 AND NOT bNspeed1 AND NOT bNspeed3 THEN
bSPD_A := TRUE;
bSPD_B := TRUE;
END_IF
IF bNspeed3 AND NOT bNspeed2 AND NOT bNspeed1 THEN
bSPD_A := TRUE;
bSPD_B := FALSE;
END_IF
IF NOT bNspeed1 AND NOT bNspeed2 AND NOT bNspeed3 THEN
bSPD_A := FALSE;
bSPD_B := FALSE;
END_IF
PROGRAM PLC_PRG
VAR
SPEED_01 :SPEED_DIR;
END_VAR
SPEED_01(
bNspeed1:= gGlobal.bSPD_1 ,
bNspeed2:= gGlobal.bSPD_2 ,
bNspeed3:= gGlobal.bSPD_3 ,
bRev:= gGlobal.bREV,
bSPD_A=> gGlobal.SpdA ,
bSPD_B=> gGlobal.SpdB,
bSPD_D=> gGlobal.SpdD );
3. Визуализация
