Сам проект корректно сделан ?
Вид для печати
Сам проект корректно сделан ?
Завтра напишу что получилось.
С моим дубовым ФБ опроса энкоднра ситуация такая. ШД нормально управляются, а при медленном вращении вала энкодера считываемое значения (position) принимает попеременно два состояния - 0 и 1. Фазы А и В энкодера подключены к 1 и 2 быстрым дискретным входам ПЛК.
Код ФБ опроса энкодера прилагаю.
Владимир Ситников
Начал испытания в железе на столе. Обнаружил проблему с обменом.
Когда обращаюсь так:
имею пустые данные, т. е. обмена нет. Как со входными, так и с выходными данными.Код:Enc:=ENCODER_AND_COUNTER_Pru0MemoryTransfer.PRU_ENCOER_COUNTER_Enc_Position;(*Показания энекодера*)
Когда обращаюсь так:
То проблем нет, всё работает нормально.Код:ENCODER_AND_COUNTER_Pru0MemoryTransfer(
PRU_ENCOER_COUNTER_DO3:=FDO3 , (*Прямое управление выходом FDO3*)
PRU_ENCOER_COUNTER_DO4:=FDO4 , (*Прямое управление выходом FDO4*)
PRU_ENCOER_COUNTER_count_Enable:=RunTransport ,(*Запуск транспорта*)
PRU_ENCOER_COUNTER_count_Lenght:= Lenght ,(*Пройденный путь*)
running=> ,
writeFails=> ,
readFails=> ,
PRU_ENCOER_COUNTER_Enc_Position=>Enc ,(*Показания энкодера*)
PRU_ENCOER_COUNTER_Enc_ZeroDetect=>ZeroDetect ,(*Обнаружение машинного нуля*)
PRU_ENCOER_COUNTER_count_Path=>Path );(*Пройденный путь транспорта*)
В обоих случаях компиляция происходит без ошибок и предупреждений.
Вполне допускаю, что напутал с синтаксисом в первом случае.
Так работает
PRU_ENCOER_COUNTER_Enc_Position=>Enc ,(*Показания энкодера*)
а так не работает
Enc:=ENCODER_AND_COUNTER_Pru0MemoryTransfer.PRU_EN COER_COUNTER_Enc_Position;(*Показания энкодера*)