Страница 712 из 806 ПерваяПервая ... 212612662702710711712713714722762 ... ПоследняяПоследняя
Показано с 7,111 по 7,120 из 8058

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

  1. #7111

    По умолчанию

    Аааа, в этом смысле =) 2 дня по 1 часу в каждом

  2. #7112
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,494

    По умолчанию

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

  3. #7113

    По умолчанию

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

  4. #7114
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,006

    По умолчанию

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

  5. #7115

    По умолчанию

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

  6. #7116

    По умолчанию

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

  7. #7117

    По умолчанию

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

  8. #7118
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,494

    По умолчанию

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

  9. #7119

    По умолчанию

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

  10. #7120
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,494

    По умолчанию

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

Страница 712 из 806 ПерваяПервая ... 212612662702710711712713714722762 ... ПоследняяПоследняя

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

Ваши права

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