Не пойму где надо щелкнуть.
Вид для печати
А много вариантов? Щёлкать нужно PRU_ABZ_ENCODER в объявлении переменной
Вот: http://recordit.co/j4mzUpkugq
Ваша правда. ;)
А редактировать исходный текст можно ?
Ну и вопросы. Среда и предназначена для редактирования исходного кода.
Если вопрос "можно ли редактировать исходный код встроенного блока PRU_ABZ_ENCODER", то нет, встроенные блоки редактировать нельзя. Если нужно, то можно сделать копию (ctrl+c / ctrl+v) в свой проект и у себя править как нужно.
Для того, чтобы скопировать весь блок целиком, это нужно делать в дереве проекта.
Вот пример: http://recordit.co/PC04VErAID
Переменная position в коде что это такое ?
"значение энкодера". Оно же "положение энкодера".
А как сделать чтобы в position можно было писать из основной программы ?
Нужен пример конкретной задачи.
Вместо "обнуления position" можно же просто в основной программе сохранить текущее значение, и потом его всегда вычитать. Чем не подходит?
Какая должна быть реакция на Z метку после "ручного" обнуления?
А, если текущее значение и так равно 0? (грубо говоря, Z метка неизвестно где, энкодер ещё не двигался, система только-только запущена)
В буржуйских ПЛК ФБ работы с энкодером имеет море прибамбасов. Ваш ФБ хорош, но это простейший вариант обработки сигналов энкодера.
Я хочу усовершенствовать ваш код , вот и спрашиваю про то, как можно записать из основной программы в position.
Обычно Z метку используют для подсчета числа полных оборотов вала энкоднра. Обнулять position по приходу Z метки я думаю не надо.
Владимир Ситников
Доброго здравия, Владимир!
Разобрался малость с Харделлой, переписал свой проект ENCODER&COUNTER под свои хотелки. Внес кое какие изменения:
1. Переписал модуль энкодера. Убрал из него счетчик, заменил алгоритм опроса на проверенный временем и надежностью вариант.
2. В предложенном Вами варианте выходная переменная показаний энкодера выдавала четырехкратное значение разрешения энкодера. Т.е. если энкодер 360имп\об, то за один оборот показания составляли 1440. В ПЛЦ_ПРГ приходилось делать деление с отбрасыванием дробной части. В моем варианте показания соответствуют разрешению энекодера.
3. В модуле счетчика убрал перечислитель, т.к. необходимость в нем отсутствует
4. В ПРУ_0 и ПРУ_1 сделал трансляторы для непосредственного доступа к FDO1..4 из ПЛЦ_ПРГ.
На реальном железе пока не проверял, но скоро займусь этим.
Вопрос: папка проекта находится в C:\Users\%UserName%\MPSProjects\Project_xxx?
Хотел передать вам на рассмотрение и критику.
Можно отбрасывать, а можно и учитывать.
Оно же фактически позволяет повысить точность на том же самом энкодере.
Чем плохо использовать полную точность?
Да, это оно. Здорово, что всё получается.
Не всё понял, но на конкретном проекте, думаю, будет яснее.
Возможно, стоит добавить кнопку "сохранить проект в виде zip архива".
Вот мой проект
Владимир вы не можете проверить мой проект (см. вложение) ? На моем ПЛК он почему-то не работает. Выход 3 ПЛК не переключается (светодиод не загорается).
Владимир, чем порадуете ?
Технически, да, про переменную я неправильно сказал.
Но для POU не работает. Для POU не получается сделать "Show cross references" и узнать где вызывается.
Для типа данных -- тоже не получается. Не работает ни в окне POU (например, если переменная объявлена как enum тип), так и на определении самого enum'а нельзя сделать "Show cross references".
Перейти к объявлению POU можно, а к объявлению переменной -- нет.
Можно ли "вернуться назад" после операции "zoom (alt+enter)" -- непонятно (я не смог).
Отформатировать код можно? Тоже нет?
В моем случае просто обязательно. От показаний этого энкодера работают еще 14 исполнительных устройств. Есть градус включения и градус выключения. Если не обнулять по Z, то после первого оборота вся логика работы устройств просто встанет. Позднее я предоставлю полный проект, когда он будет готов
Изменил таргет на 110-32М v2, залил в ПЛК -- работает.
Визуально оба выхода постоянно горят (ну, глазами килогерц всё равно не увидишь, поэтому так и должно быть, что визуально оно просто горит).
Вот видео из КДС: http://recordit.co/R65u4Wcdu7
Счётчик импульсов бежит, всё в порядке.
Что у вас показывает КДС в момент работы программы?
Возможно, у 110-32 и 110-30 по разному распаяны выходы. Тут уж не знаю.
Код:PLCInfo
PLC model MODEL PLC 110-32
Binary VERSION 0.3.43
Need Target version >= 3.07
Compiled: 14:24:18 Sep 15 2015
STM32 binary version 114
MAC 6A:77:00:FF:FE:F4
IP 10.0.6.10
GATE 10.0.6.1
MASK 255.255.255.0
0) Из простого КДС быстрый выход нормально управляется?
1) Можно попробовать: PRU1 (посмотреть будут ли реагировать другие два fast output).
Если fast output 3 действительно не загорается, то можно попробовать так
2) Более простую программу. Например, "пример blink"
3) Спросить у ОВЕН одинаково ли управление fast output3 у 110-32М02 и 110-30М02. Возможно, на разных ПЛК выходы управляются разными битами
4) Сделать PRU программу, которая выдаст единички во все выходы PRU и посмотреть включится ли fast output.
5) Написать простую (не PRU) программу, мигающую 3-им быстрым выходом, и из памяти ПЛК считать где находится этот самый секретный бит
В моем случае совершенно бессмысленно. Экодер в процессе работы крутится постоянно, в зависимости от его показаний включаются и выключаются разные хлопушки-моргушки. Причем есть устройства который включаются например в 330*, а выключются в 45*. Т. е. устройство включается в одном цикле, а выключается в следующем.
Ну если только этот счетчик использовать как счетчик продукции. Было бы разумно, если бы качество вырабатываемй продукции было 100%. К сожалению на имеющихся машинах это не так.
Возник вопрос по безостановочному вращению вала ШД. Нет ли возможности постоянно не делать этот самый перезапуск чтобы не было кратковременного останова ШД.
STEPPER_PRU0_stepper_enable := SteppersConfig_Pru0MemoryTransfer.STEPPER_PRU0_ste pper_state <> STOP_STEPPER_RUN_STATE