Страница 714 из 737 ПерваяПервая ... 214614664704712713714715716724 ... ПоследняяПоследняя
Показано с 7,131 по 7,140 из 7362

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #7131
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,448

    По умолчанию

    Цитата Сообщение от Eugene Vavilov Посмотреть сообщение
    Аааа, в этом смысле =) 2 дня по 1 часу в каждом
    Ну так да. Как и здеся...
    Цитата Сообщение от Eugene Vavilov Посмотреть сообщение
    у меня ... PrevTime = 49d17h2m47s000ms.... Следующее вычисление ...через 500 ms..
    .. 100 дней. 296ms в первой полсотне и 204 во второй.

  2. #7132

    По умолчанию

    Здравствуйте! Интересует вопрос, могу ли я программно запретить выполнение какого-либо задания в конфигураторе задач? Опишу суть проблемы. Имеется концевик с нормально замкнутыми и нормально разомкнутыми контактами, они подключены к ПЛК. В PLC_PRG вход NC я инвертирую, и входа вешаю на прерывания. Замыкание NO или размыкание NC вызывают одну и ту же программу. НО! При нормальной работе концевика получится так, что программа вызовется дважды, один раз при размыкании NC и второй раз при замыкании NO. Мне нужно чтобы если скажем NC разомкнулось, прерывание по замыканию NO не вызывалось, так как нужное действие уже будет произведено. Использовать только один контакт концевика или ждать обоих срабатываний не вариант, по опыту знаю, что концевики любят умирать в неподходящий момент, поэтому нужно именно отключение вызова прерывания. Пока придумал только костыль по типу промежуточной программы, которая будет запускаться вместо основной про прерываниям, в ней объявляю переменную разрешения вызова основной программы, которая будет сбрасываться в момент срабатывания концевика, и устанавливаться в момент отжатия концевика. Вызов основной программы само собой через IF. Должен же быть способ лучше. И попутный вопрос, можно ли сделать вызов программы не по переднему фронту, а по заднему?

  3. #7133
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    640

    По умолчанию

    Avenging_Archangel
    Если уж так хочется поразвлекаться с прерываниями, то можно пойти другим путем.
    Делаем глобальную булеву переменную, например StartProgramm1.
    В прерываниях по необходимым условиям устанавливаем её в TRUE
    Пишем отдельную ПОУ Programm1, причем там должно быть прописано условие окончания алгоритма, по которому StartProgramm1 сбрасывается в FALSE.
    В ПЛЦ_ПРГ пишем следующее:
    Код:
    IF StartProgramm1 THEN Programm1(); END_IF;
    Что имеем в результате:
    По сработке любого NC или NO устанавливается флаг StartProgramm1.
    Начинает выполняться Programm1.
    Изменение состояний входов NC и NO уже не меняют состояние флага.
    Состояние флага меняет только Programm1.
    Выполнение Programm1 прекратится в следующем цикле ПЛК после сброса флага StartProgramm1.
    Следовательно Programm1 выполняется только один раз.

  4. #7134

    По умолчанию

    Ну в принципе похожим образом сейчас и реализовано у меня, хотелось бы попроще, типа как в AVR микропроцессорах, запретил внешнее прерывание на нужной ноге в регистре EIMSK, сделал нужные дела и разрешил прерывание

  5. #7135

    По умолчанию

    В том то и дело, что по идее концевик будет нажиматься очень медленно, и если там будет стоять не щелчковый, а типа советского ..овна, который будет на пружине, после размыкания NC контакта перед замыканием NO контакта может пройти и полсекунды. Ну и я конечно не знаю как в ПЛК устроены прерывания, если сравнивать с AVR, с которыми одно время работал, там если даже пришло второе прерывание во время работы первого, если прерывания запретить просто CLI, процессор все равно поставит бит прерывания, и после выхода из первого сразу перейдет во второе.

  6. #7136

    По умолчанию

    Через действие и делаю, думал есть способ проще

  7. #7137
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,448

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    всмысле нет,
    В смысле - нету смысла в семафоре. Изнутри заперлись. Даже если диарея - ждать придется.
    Ногой дверь открывает только вч-таймер.

  8. #7138

    По умолчанию

    С семафором пока не разобрался, но если я правильно понял, им можно заблокировать программу если она выполняется сейчас. Если это так, то вообще не вариант, так как программа по срабатыванию концевика очень маленькая, условно говоря 40 строк кода, поэтому до второго срабатывания она сто пудово успеет выполниться.
    Вкратце опишу, для чего это мне нужно. В общем, я заменяю на ПЛК внутренности одного станка, и в нем есть ЧПУ. И сейчас я занимаюсь с определением конечных точек ЧПУ, на которых стоят концевики. В идеале при поиске алгоритм такой: запускаю мотор по направлению к концевику, при касании концевика мотор начинает вращаться в другую сторону, как концевик размыкается, мотор опять идет к концевику, и так три раза. В моменты касания концевика я сохраняю значение энкодера и потом нахожу среднее. Именно поэтому мне нужно для надежности оба контакта концевика, но это полбеды. Так как оборудование все-таки ответсвенное, будет еще функция, типа если концевик сработал не во время поиска нулей - все, приехали, беги и смотри что не так с приводами. И именно для последней задачи мне нужно игнорировать второе срабатывание во время поиска.
    Вроде я написал эту часть кода, сегодня вечером попробую на плк на столе.

  9. #7139
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,448

    По умолчанию

    ..запускаю мотор по направлению к концевику, ..
    ..при касании концевика мотор начинает вращаться в другую сторону,
    ..как концевик размыкается, мотор опять идет к концевику,
    и так три раза. ...
    Забейте и забудьте про прерывания для таких задач.
    Классический автомат
    ..В моменты касания концевика я сохраняю значение энкодера и потом нахожу среднее. Именно поэтому мне нужно для надежности оба контакта концевика, но это полбеды...,
    еще функция, если концевик сработал не во время поиска нулей - все, приехали, беги и смотри что не так с приводами. ..
    для последней задачи мне нужно игнорировать второе срабатывание во время поиска. ...
    Особенности состояний-шагов
    Последний раз редактировалось Валенок; 05.09.2019 в 20:52.

  10. #7140
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    640

    По умолчанию

    Avenging_Archangel
    А что мешает поставить индуктивные датчики? На моем ЧПУ так. Правда у меня не на Овене, а на ЛинуксЦНЦ, но работает отлично.
    Но даже на Овене можно вычислить гистерезис индуктивного датчика по переднему и заднему фронту сигнала.

Страница 714 из 737 ПерваяПервая ... 214614664704712713714715716724 ... ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •