А можно вместо
STEPPER_PRU0_stepper_enable := SteppersConfig_Pru0MemoryTransfer.STEPPER_PRU0_ste pper_state <> STOP_STEPPER_RUN_STATE
написать
STEPPER_PRU0_stepper_enable := TRUE чтобы ШД работал без остановки ?
Вид для печати
А можно вместо
STEPPER_PRU0_stepper_enable := SteppersConfig_Pru0MemoryTransfer.STEPPER_PRU0_ste pper_state <> STOP_STEPPER_RUN_STATE
написать
STEPPER_PRU0_stepper_enable := TRUE чтобы ШД работал без остановки ?
При первом вызове SteppersConfig_Pru0MemoryTransfer() enable будет переведен в TRUE и ШД запустится.
Если ШД должен работать постоянно, то контролировать ничего не надо. Когда придет пора надо просто вызвать однократно программу SteppersConfig_Pru0MemoryTransfer() и остановить ШД, т.е. перевести enable в FALSE.
Я правильно понимаю ?
Сделал проект для двух ШД и одного энкодера. Скомпилировал проект в Hardella, сделал импорт .exp файла в проект CoDeSys. Как управлять драйверами ШД понятно. Не понятно как опрашивать энкодер.
Компилятор CoDeSys выдает кучу ошибок.
А что именно непонятно?
STEPPER2_Enc_PRU0_encoder_position это и есть текущее положение энкодера.Код:PROGRAM SteppersConfig_Pru0MemoryTransfer
...
VAR_OUTPUT
running : BOOL;
writeFails : DWORD;
readFails : DWORD;
STEPPER2_Enc_PRU0_encoder_counter : WORD;
STEPPER2_Enc_PRU0_encoder_position : WORD;
STEPPER2_Enc_PRU0_encoder_zeroDetected : BOOL;
STEPPER2_Enc_PRU0_stepper_state : STEPPER_RUN_STATE;
STEPPER2_Enc_PRU0_stepper_step_count : DWORD;
END_VAR
...
Иными словами, нужно вызвать программу SteppersConfig_Pru0MemoryTransfer, и после этого смотреть на значениеКод:SteppersConfig_Pru0MemoryTransfer.STEPPER2_Enc_PRU0_encoder_position
Компилятор CoDeSys выдает ошибки.
Ищем в гугле PRU_FB_GET_PARAMETER, находим такое:
Вложение 28750
Отвечает на вопрос?
Правильно. Я создал новый проект CoDeSys, а библиотеку не добавил.
Докладываю. Удалось без проблем раскрутить мощный ШД до 1350 об/мин за 2,5 сек. при хорошем крутящем моменте на валу.
Hardella рулит. ;) Спасибо Владимиру Ситникову.