Думаю можно. С бубном через PRU. Но у меня MS4 на руках.
Вид для печати
О! Вот это совсем другое дело: т.е. есть дополнительный входной сигнал, и нужно запоминать положение энкодера в момент фронта этого самого спец сигнала.
Да, на MS4 не выйдет.
В простом -- без проблем. Буквально пара строк кода и всего делов:
Код:abzEncoder(A := in1, B := in2, Z := in3);
IF R_TRIG(IN := in4).Q THEN
положениеИнкодера := abzEncoder.position;
END_IF;
да на MS4 с Hardella не получится (во всяком случае без танцев с бубном точно) ибо внедренная библиотека в ОС LX контроллера (увы) заточена под нашу штатную программу PRU.
поэтому динамичная замена программы PRU... == "нашла коса на камень"
P.S. MS4 всё таки позиционируется как контроллер ближе к диспетчеризации, нежели позиционер конвеера с WEB сервером.
P.S.S. 4 строки кода могут убить все, особенно если доходим до ASM (там и пары хватит завалить проц))
А почему бы нет?
Как-никак, можно же дать пользователям возможность, а они там поймут как, что и для чего.
Может, стоит подумать о динамической загрузке PRU программы? Хоть бы и через Hardella.
Понятно, что там не будет online режима, но его и так нет.
В конце концов, PRU программа пишется 1 раз и всего делов.
Так и в простом случае WHILE TRUE END_WHILE убивает всё. Тут PRU ничем не хуже.
Во второй функции этого проекта контроллер должен генерить импульс между двумя заданными из визуализации точками положения вала энкодера.
Этот проект (и положение вала по импульсу и импульс по заданным точкам и с применением шагового двигателя) я реализовал на STM32F746. Вложение 38811 Вложение 38812
Но у меня проблема с визуализацией, да и на производстве устанавливать данный девайс как-то.....
И тут я задумался о 210 блоке с быстрыми входами.
Можно ли что-то организовать с применением этого блока?
Вложение 38808 Вложение 38809 Вложение 38810
И ещё вопрос - можно ли перепрошить MS4 на CDS?