Нужна помощь с SMSD-1.5 MODBUS
 

Нужна помощь с SMSD-1.5 MODBUS

Автор ArtAn, 21 января 2022, 15:31:15

« назад - далее »

ArtAn

Сложности в программировании контроллера smsd-1.5 modbus. Ранее использовали smsd-1.5 (USB) и программы писали очень легко. Начали разбираться с программированием нового блока, не можем реализовать вращение с реверсом по программе.
Для техпроцесса нужно вращать ротор сначала в одну сторону с определенной скоростью и в течение определённого времени, а затем реверс и обратно.
Через MOVE и TARGET_POS удалось сделать первый этап. Но как добавить после этого реверс?
Понимаю, что надо смотреть на motor status d371, но как сделать - неясно.

LDP X7
CALL        P10
CALL        P20
LDP X6
HHIZ
FEND

P 10
MOV K1 D376 ; РЕЖИМ ПЕРЕМЕЩЕНИЯ
DMOV      K8    D359 ; МИНИМАЛЬНАЯ СКОРОСТЬ
DMOV K400 D357 ; СКОРОСТЬ
MOV K1 D382 ; АВТО РАСЧЕТ УСКОРЕНИЯ
MOV K0 D374 ; НАПРАВЛЕНИЕ
MOV K0 D366 ; ДРОБЛЕНИЕ
DMOV K400 D372 ; ТАРГЕТ
SPIN ; НАЧАТЬ ПЕРЕМЕЩЕНИЕ
END

P 20
MOV K1 D376 ; РЕЖИМ ПЕРЕМЕЩЕНИЯ
DMOV      K8    D359 ; МИНИМАЛЬНАЯ СКОРОСТЬ
DMOV K400 D357 ; СКОРОСТЬ
MOV K1 D382 ; АВТО РАСЧЕТ УСКОРЕНИЯ
MOV K1 D374 ; НАПРАВЛЕНИЕ
MOV K0 D366 ; ДРОБЛЕНИЕ
DMOV K400 D372 ; ТАРГЕТ
SPIN ; НАЧАТЬ ПЕРЕМЕЩЕНИЕ
END


Administrator

Уточните, пожалуйста, требуется вращение в течение определенного времени или в определенное положение?

В первом случае нужно использовать режим непрерывного движения (команда RUN) и таймер (TMR). Таймер настраивается на необходимое значение (TMR T5 K1000), а затем проверяется его битовое значение (LD T5).
При срабатывании таймера отправлять команду остановки двигателя, а затем уже проверять статус (D371) или текущую скорость (D383 - MOTOR_SPD).

Если хотите проверять регистр статуса, используйте одну из команд группы "Логические операции контактного типа" - например, LD& или AND&

LD& D371 K2 - контакт замкнут, если двигатель завершил движение и находится в режиме удержания.

Если нужен именно такой вариант, Вы можете посмотреть пример реализации в руководстве по эксплуатации. (В примере 3 используется проверка LD& D371 K2, остановился ли двигатель).




Второй вариант - если все же требуется перемещение в заданную позицию (команды MOVE).
В этом случае лучше проверять соответствие текущей позиции (D363) заданному значению.



Administrator

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

ArtAn

Спасибо за помощь. У нас задана скорость и время вращения, соответственно путь вычисляется. И подойдут оба варианта, и RUN, и MOVE. Пока буду пробовать дальше через MOVE.

ArtAn

Пока остановились на таком варианте

LDP X7
HHIZ
DMOV      K0            D363
CALL        P10
CMP         K400        D363            M1
LD            M1
AND=      D371        K2
CALL        P20
LD&         D371        K2
HHIZ
LDP X6
DMOV      K0            D363
HHIZ
FEND


P 10
MOV K1 D376 ; РЕЖИМ ПЕРЕМЕЩЕНИЯ
DMOV      K8    D359 ; МИНИМАЛЬНАЯ СКОРОСТЬ
DMOV K400 D357 ; СКОРОСТЬ
MOV K1 D382 ; АВТО РАСЧЕТ УСКОРЕНИЯ
MOV K1 D374 ; НАПРАВЛЕНИЕ
MOV K0 D366 ; ДРОБЛЕНИЕ
DMOV K400 D372 ; ЦЕЛЬ
SPIN                                  ; НАЧАТЬ ПЕРЕМЕЩЕНИЕ
SRET

P 20
MOV K1 D376 ; РЕЖИМ ПЕРЕМЕЩЕНИЯ
DMOV      K8    D359 ; МИНИМАЛЬНАЯ СКОРОСТЬ
DMOV K400 D357 ; СКОРОСТЬ
MOV K1 D382 ; АВТО РАСЧЕТ УСКОРЕНИЯ
MOV K0 D374 ; НАПРАВЛЕНИЕ
MOV K0 D366 ; ДРОБЛЕНИЕ
DMOV K400 D372 ; ЦЕЛЬ
SPIN                                  ; НАЧАТЬ ПЕРЕМЕЩЕНИЕ
RST         M1
RST         M2
RST         M3
SRET
END