Появилась необходимость в использовании скоростных счётчиков для работы с энкодером.
Мне нужно по прерыванию сохранять текущее значение счётчика в сторонний регистр и сбросить счётчик.
В описании для sa и прочих этого уровня все это хорошо прописано в инструкции. Но все регистры и высокоскоростные счётчики у sv контроллера резко отличаются. Нашел инструкцию где эти счётчики описаны. Я попробовал использовать прерывание i401 в котором 1 командой dmov копирую содержание с251 а следующей хотел сбросить счётчик, активируя специальный маркер командой out по контакту m1000, но несмотря на то что в прерываниях должен выполняться только один скан, но спецреле не сбрасывается. Я пробовал и set, но сброс сделать не могу, а без rst этого маркера счётчик не начинает снова считать.
После этого попробовал использовать прерывание штатного входа сброса, но в нем сначала сбрасывается счётчик а потом выполняется прерывание. Для sa контроллеров есть специальные регистры куда записывается значение счётчика перед сбросом, а для sv такого регистра не нашел. При выполнении сброса мне нужно минимально терять импульсы счета.
UPD: Решено
Как я писал ниже я решил представленную задачу через прерывание от стороннего импульса (не функцией штатного сброса)
в нем я сначала копирую значение счетчика
Код: Выделить всё
ld m1000 DMOV C251 D100
Код: Выделить всё
ld m1000 Rst c251
Во вложенном файле я сделал простейшую программу, в которой я реализовал то, что я написал тут текстом.
Кроме этого хочу обратить внимание, что для контроллеров серий EH, SV, EC инструкция по эксплуатации (на английском наиболее свежая) отличается от той, что написана для всех остальных младших контроллеров DVP, хотя в основном и пересекается с ней, кроме, как раз, управления высокоскоростными командами, входами и выходами.