Показано с 21 по 30 из 32

Тема: Прошу несколько советов. Переход с Arduino на ПР200

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Прошу несколько советов. Переход с Arduino на ПР200

    Приветствую!

    Имеем в цехе штамп для пробития отверстий у трубе.
    Управляется Arduino

    Видео работы:


    Прошу совета, после Ардуино, очень все непривычно.
    Как было на Ардуино - у кода, два блока - первый выполняется один раз, второй в цикле. Причем обращение к водам выводам в любой момент выполнения кода.

    Тут же, судя по описанию сначала опрос всех входов, потом выполнение программы, потом я так понял подаем на выводы сигналы.

    ВОПРОС 1 - как обратится ко входу, в середине выполнения программы? Писать макрос? Что то другого на ум не приходит.

    У нас на Ардуино простая программа. Идет постоянный опрос педали штампа (а именно один контакт нормально замкнут и один нормально разомкнутый). Когда нажата запускается цикл, а именно - посылаем питание на реле, которое управляет первым пневмо распределителем. Это приводит в движение правый пневмоцилидр и происходит расклинивание внутри трубы. Чтобы понять, что эта процедура завершилась - ожидаем (опрашиваем) положение цилиндра по геркону (у каждого цилиндра их два - те два положения крайних). Как только первый цилиндр в рабочем положении, сразу замыкаем второе реле, и посылаем сигнал управление на второй пневмораспределитель, что заставляет двигаться левый цилиндр. И пока он не станет в рабочее положение (дословно не замкнется соответствующий геркон) программа дальше не будет выполняться. Конечно это все доли секунды. Когда цилиндры (оба) стоят в рабочем положении, делаем финальную проверку (просто всех четырех герконов), и после этого - замыкаем третье реле, а именно подаем сигнал на пресс - происходит удар (вырубка). Потом ждем 400 мс, и после этого снимаем питание с двух реле пневмораспределителей что заставляет вернуться цилиндры назад, соотвественно клины уходят и освобождают трубу. Ну и в конце простая проверка, вдруг педаль все еще нажата (на дурака), и если это так - ждем пока ее не отпустят.

    На ардуино все было просто. Вот код (часть "ненужная служит выводом на экран отладочной информации, а именно на каком этапе программа сейчас, те тупо выводим цифры):

    #include <QuadDisplay.h>
    #define PIN 0

    int Small_Cylinder = 7; // определяем пин, для замыкания реле управления маленьки цилиндром
    int Big_Cylinder = 6; // определяем пин, для замыкания реле управления маленьки цилиндром
    int Start = 5; // определяем пин, для замыкания реле пуска еденичного хода штампа

    int Sensor_Small_Cylinder_ON = 13; // определяем пин проверяющий, что маленький цилиндр в рабочем положении
    int Sensor_Small_Cylinder_OFF = 12; // определяем пин проверяющий, что маленький цилиндр в положении поумолчанию, не рабочее

    int Sensor_Big_Cylinde_ON = 11; // определяем пин проверяющий, что большой цилиндр в рабочем положении
    int Sensor_Big_Cylinde_OFF = 10; // определяем пин проверяющий, что большой цилиндр в положении поумолчанию, не рабочее

    int Sensor_Pedal_N_Open = 9; // определяем пин проверяющий, нажата ли педаль (нормально разомкнутый)
    int Sensor_Pedal_N_Closed = 2; // определяем пин проверяющий, нажата ли педаль (нормально замкнутый)


    void setup()
    {
    pinMode(Small_Cylinder, OUTPUT); // установить пин как выход, будет замыкать реле
    pinMode(Big_Cylinder, OUTPUT); // установить пин как выход, будет замыкать реле
    pinMode(Start, OUTPUT); // установить пин как выход, будет замыкать реле

    pinMode (Sensor_Small_Cylinder_ON, INPUT); //установить пин как вход, будет опрашивать датчик, который крепится со стороны штока
    pinMode (Sensor_Small_Cylinder_OFF, INPUT); //установить пин как вход, будет опрашивать датчик, который крепится с краю цилиндра
    pinMode (Sensor_Big_Cylinde_ON , INPUT); //установить пин как вход, будет опрашивать датчик, который крепится со стороны штока
    pinMode (Sensor_Big_Cylinde_OFF, INPUT); //установить пин как вход, будет опрашивать датчик, который крепится с краю цилиндра
    pinMode(Sensor_Pedal_N_Open, INPUT); //установить пин как вход, будет опрашивать датчик педали нормально разомкнутый
    pinMode(Sensor_Pedal_N_Closed, INPUT); //установить пин как вход, будет опрашивать датчик педали нормально замкнутый

    digitalWrite(Small_Cylinder, HIGH); //хоть это и бред, но подавая напряжение мы размыкаем реле в режиме нормально разомкнутой работы
    digitalWrite(Big_Cylinder, HIGH); //хоть это и бред, но подавая напряжение мы размыкаем реле в режиме нормально разомкнутой работы
    digitalWrite(Start, HIGH); //хоть это и бред, но подавая напряжение мы размыкаем реле в режиме нормально разомкнутой работы

    }

    void loop()
    {
    displayInt(PIN, 0, true);
    if ( digitalRead(Sensor_Pedal_N_Open)== HIGH && digitalRead(Sensor_Pedal_N_Closed)== LOW) { //опрашиваем датчик педали, и если он нажат то
    digitalWrite(Big_Cylinder, LOW); //убрали напряжение, и реле замкнулось управления большим цилиндром, он должен срабатывать сначала
    while (!((!digitalRead (Sensor_Big_Cylinde_ON) == LOW) && (!digitalRead (Sensor_Big_Cylinde_OFF) == HIGH))){ //по сути ждем пока цилиндр не перейдет в рабочее положение и условие перестанет выполняться
    displayInt(PIN, 1, true);
    }

    digitalWrite(Small_Cylinder, LOW); //убрали напряжение, и реле замкнулось управления малым цилиндром, он должен вторым срабатывать
    while (!((!digitalRead (Sensor_Small_Cylinder_ON) == LOW) && (!digitalRead (Sensor_Small_Cylinder_OFF) == HIGH))){ //по сути ждем пока цилиндр не перейдет в рабочее положение и условие перестанет выполняться
    displayInt(PIN, 2, true);
    }

    if ( digitalRead(Sensor_Big_Cylinde_ON) == HIGH && digitalRead (Sensor_Small_Cylinder_ON) == HIGH && digitalRead(Sensor_Big_Cylinde_OFF) == LOW && digitalRead (Sensor_Small_Cylinder_OFF) == LOW) {
    // строчка выше еще раз проверяет положения всех четырех датчиков двух цилиндров, цилиндры должны быть в рабочем состоянии)
    displayInt(PIN, 3, true);
    digitalWrite(Start, LOW); //убрали напряжение, и реле замкнулось управления ходом пресса, он должен совершить один удар
    delay(200); //возможно нужно увеличить если не юудет успевать срабатывать
    digitalWrite(Start, HIGH); //подали напряжение на реле управления ходом пресса и реле разомкнулось
    delay(200); // ждем пока пресс не выполнит этот удар и ползун не вернется на место

    digitalWrite(Small_Cylinder, HIGH); //подали напряжение на реле управления малым цилиндром, реле разомкнулось, сначала убираем его клин
    digitalWrite(Big_Cylinder, HIGH); //подали напряжение на реле управления большим цилиндром, реле разомкнулось, убираем его клин вторым после малого

    while (!((!digitalRead (Sensor_Small_Cylinder_ON) == HIGH) && (!digitalRead (Sensor_Small_Cylinder_OFF) == LOW))){ //по сути ждем пока цилиндр вернется в НЕрабочее положение и условие перестанет выполняться
    displayInt(PIN, 4, true);
    }

    while (!((!digitalRead (Sensor_Big_Cylinde_ON) == HIGH) && (!digitalRead (Sensor_Big_Cylinde_OFF) == LOW))){ //по сути ждем пока цилиндр вернется в НЕрабочее положение и условие перестанет выполняться
    displayInt(PIN, 5, true);
    }

    while(digitalRead(Sensor_Pedal_N_Open)== HIGH && digitalRead(Sensor_Pedal_N_Closed)== LOW){ //проверка на дурака, вдруг кто нажал на педаль и до сих пор держит ее нажатой, ждем пока не отпустит в исходное положение
    displayInt(PIN, 6, true);
    }

    }



    }
    }

    Вопрос 2 - Сколько может стоить написание программы примерно для такой задачи?

    Вопрос 3 - Опрос педали верно сделал (нажатие - один контакт замыкается, другой размыкается) ?

    WhatsApp Image 2017-12-01 at 20.39.39.jpeg
    343.jpeg
    Последний раз редактировалось SuperRobot; 04.12.2017 в 21:57.

Похожие темы

  1. Опрос ДМ5002 по RS485/232 при помощи Arduino
    от -RA- в разделе Трёп (Курилка)
    Ответов: 2
    Последнее сообщение: 28.07.2017, 10:39
  2. ПР200 переход по изменению значения переменной
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 2
    Последнее сообщение: 10.02.2017, 13:37
  3. Помогите советов!
    от Sijey в разделе Подбор Оборудования
    Ответов: 22
    Последнее сообщение: 19.09.2016, 09:07
  4. ПР200, "управляемые" запросы Modbus на несколько устройств.
    от chm в разделе Программируемые реле
    Ответов: 6
    Последнее сообщение: 24.12.2015, 09:51

Ваши права

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