Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Вывод значений переменных на внешний индикатор из ПР100 без RS-485

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    22.11.2022
    Адрес
    Ростов-на-Дону
    Сообщений
    51

    По умолчанию Вывод значений переменных на внешний индикатор из ПР100 без RS-485

    Добрый всем день!

    Требуется вывести значение счётчика CTN (ПР100 без RS-485) на внешний индикатор для контроля количества циклов при ресурсных испытаниях.
    Прошу подсказать возможные пути решения проблемы.

  2. #2

    По умолчанию

    Цитата Сообщение от Serg52 Посмотреть сообщение
    Добрый всем день!

    Требуется вывести значение счётчика CTN (ПР100 без RS-485) на внешний индикатор для контроля количества циклов при ресурсных испытаниях.
    Прошу подсказать возможные пути решения проблемы.
    Что за индикатор? Выводи в двоичной системе, например... Через дискретные выходы...

  3. #3
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,669

    По умолчанию

    ПР100 без экрана и без RS - и выходы видимо в работе интересно посмотреть на способ вывода

  4. #4

    По умолчанию

    Цитата Сообщение от Serg52 Посмотреть сообщение
    Добрый всем день!

    Требуется вывести значение счётчика CTN (ПР100 без RS-485) на внешний индикатор для контроля количества циклов при ресурсных испытаниях.
    Прошу подсказать возможные пути решения проблемы.
    Если есть свободный выход, считать кол-во срабатываний постоянно или если есть несколько выходов выводить 8-16-ричным кодом.

    Была тема вывода номера аварии через светодиод, но больше10-16, замучаешься считать кол-во миганий.
    Ну как вариант, отдельно вывести тысячи, потом десятки и единицы
    Последний раз редактировалось kondor3000; 26.09.2023 в 18:23.

  5. #5
    Пользователь
    Регистрация
    22.11.2022
    Адрес
    Ростов-на-Дону
    Сообщений
    51

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Если есть свободный выход, считать кол-во срабатываний постоянно или если есть несколько выходов выводить 8-16-ричным кодом.

    Была тема вывода номера аварии через светодиод, но больше10-16, замучаешься считать кол-во миганий.
    Ну как вариант, отдельно вывести тысячи, потом десятки и единицы
    Спасибо, kondor3000! Было бы очень интересно узнать КАК это сделать, выводить 8-16- ричным кодом. Свободный выход есть.

  6. #6

    По умолчанию

    Цитата Сообщение от Serg52 Посмотреть сообщение
    Спасибо, kondor3000! Было бы очень интересно узнать КАК это сделать, выводить 8-16- ричным кодом. Свободный выход есть.
    Вы не внимательно читаете. 1 выход только для счёта кол-ва импульсов. Это самое простое. Даже ссылку дали.
    Для вывода 8-ным кодом надо 4 выхода и паять плату на логических микросхемах.
    Последний раз редактировалось kondor3000; 27.09.2023 в 10:26.

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,841

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Вы не внимательно читаете. 1 выход только для счёта кол-ва импульсов. Это самое простое. Даже ссылку дали.
    Для вывода 8-ным кодом надо 4 выхода и паять плату на логических микросхемах.
    1 выход, тогда азбукой Морзе
    Захват-01.png

    ЗЫ
    1234 == •−−−− ••−−− •••−− ••••−

    ЗЫ
    Кодер-декодер морзянки на ардуино
    Код:
    String morse_codes[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", "-----", "......", ".-.-.-", "--..--", "..--.."};
    char* symbols[] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ",", "!", "?", " "};
    byte i = 0;
    byte j = 0;
    unsigned long timer_backlight = 0;
    unsigned long timer1_backlight = 0;
    unsigned long timer = 0;
    unsigned long cycle_time = 0;
    unsigned long timer1 = 0;
    String symbol = "";
    byte command = 0;
    const uint64_t pipe = 0xE8E8F0F0E1LL; 
    
    boolean buttonWasUp = false;
    boolean buttonIsUp = true; 
    boolean symbol_end = false;
    boolean wrong_symbol = false;
    boolean Button_switch = true;
    boolean transmitter = true;
    boolean screen = true;
    
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x3F,16,2); //адрес другого дисплея 0x27. 16,2 - количество столбцов и строк
    #include <SPI.h>
    #include "nRF24L01.h"
    #include "RF24.h"
    #include "printf.h"
    
    RF24 radio(9,10); 
    
    //функция включения дисплея
    void turn_on() {
      lcd.display();
      lcd.backlight();
                 }
    
    //функция выключения дисплея
    void turn_off() {
      lcd.noDisplay();
      lcd.noBacklight();
                 }
    
    //функция передатчика
    void transmitter_() {
      buttonIsUp = digitalRead(3);
      if (!buttonIsUp){
        timer = millis();
        delay(20);
        buttonIsUp = digitalRead(3);
      }
        while (!buttonIsUp) { 
          tone(2, 550);
          buttonIsUp = digitalRead(3);
          buttonWasUp = true;
        }
        if (buttonWasUp) {
          cycle_time = 0;
          symbol_end = false;
          timer1 = millis() - timer;
          if (timer1 >= 150) {
            symbol = symbol + "-";
          }
          if (timer1 < 150) {
            symbol = symbol + ".";
          }
          buttonWasUp = false;
        }
        if (!buttonWasUp) {
          cycle_time += 1;
          if(cycle_time == 30000 && !symbol_end){
          for (int p=0; p <= 40; p++){
            if (symbol == morse_codes[p]){
            Serial.println(symbol);
            byte command = p;  
            radio.write( &command, sizeof(command) );
            symbol_end  = true;
            cycle_time = 0;
            wrong_symbol = false;
                                         }
            else{
              wrong_symbol = true;
            }
                                      }
          symbol = "";
                                 } 
           if(cycle_time == 60000 && wrong_symbol){
            byte command = 40;  
            radio.write( &command, sizeof(command) );       
                                                        }                                    
                          }
        noTone(2);
    }
    
    //функция приёмника
    void receiver_() {
       //перевод строки
      if (i > 15) {
        i = 0;
        j = j + 1;
        if (j > 1) {
        j = 0;
      }
        lcd.setCursor(i, j);
        lcd.print("                ");
      }
       //приём данных
      if ( radio.available() ){
        timer = millis();
        radio.read(&command,sizeof(command));
        Serial.println(command);
        turn_on();
        lcd.setCursor(i, j);
        lcd.print(symbols[command]);
        i++;
                              }
        timer1 = millis() - timer;
    
        //выключение подсветки
         if (timer1 > 60000 && screen){
          turn_off();
          screen = false;
        }
    
      }               
    
    void setup() {
      //инициализация пинов кнопок и динамика
      pinMode(2, OUTPUT);//выход для динамика
      pinMode(4, INPUT_PULLUP);//кнопка смены режима работы
      pinMode(3, INPUT_PULLUP);//кнопка набора символов
      pinMode(8, OUTPUT);//дополнительный GND пин
      digitalWrite(8, LOW);
      pinMode(7, OUTPUT);//дополнительный GND пин
      digitalWrite(7, LOW);
      pinMode(6, OUTPUT);//дополнительный GND пин
      digitalWrite(6, LOW);
      //инициализация радио
      radio.begin();
      radio.enableAckPayload();
      radio.openWritingPipe(pipe);
      radio.openReadingPipe(1,pipe); 
      //инициализация последовательного порта
      Serial.begin(9600);
      //инициализация дисплея
      lcd.init();
      lcd.cursor(); 
      delay(2000);
    }
    
    void loop() {
      Button_switch = digitalRead(4);
      //Выбор режима работы
      if (!Button_switch){
        delay(100);
        Button_switch = digitalRead(4);
        if (!Button_switch){
          transmitter = !transmitter;
        if (transmitter) {
          if (!screen) {
            turn_on();
            screen = true;
            timer = millis();
            transmitter = !transmitter;
          }
          else{
            radio.stopListening();
            turn_off();
          }
                         }
        if (!transmitter) { 
          radio.startListening(); 
          turn_on();
                         }
                           }
                         }
      
      //режим передатчика                   
      if (transmitter){
        transmitter_();
      }
      
      //режим приёмника
      if (!transmitter){
        receiver_();
      }                  
                }
    Последний раз редактировалось petera; 27.09.2023 в 11:42.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #8

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    1 выход, тогда азбукой Морзе
    Захват-01.png

    ЗЫ
    1234 == •−−−− ••−−− •••−− ••••−
    Ну тогда и RS-232 справится. Только скорость передачи как можно меньше. Или светодиод F1 задействовать.
    Или формировать сервосигнал (длительность = значение)

  9. #9

    По умолчанию

    Не самый лучший способ - из Owen Logic через USB в онлайн отладке наблюдать значение переменной.

    Не могу понять из описания - ПР-ИП485 только к ПР200 подходит или к ПР100 тоже?
    Если подходит - установить - и будет RS-485.

  10. #10

    По умолчанию

    Подключить к дискретному выходу ПР счётчик импульсов. На Али их много и дешево
    Последний раз редактировалось IVM; 26.09.2023 в 21:52.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Вывод значений на экран ПЛК 73
    от sanatolich в разделе ПЛК63/73
    Ответов: 18
    Последнее сообщение: 14.06.2021, 20:29
  2. ПР100 в режиме мастер и много сетевых переменных
    от Alex469 в разделе Программируемые реле
    Ответов: 6
    Последнее сообщение: 18.12.2020, 21:00
  3. Ответов: 7
    Последнее сообщение: 20.04.2020, 09:49
  4. Ответов: 4
    Последнее сообщение: 25.06.2018, 13:18
  5. вывод дискретных значений на СП 270
    от Rudi в разделе Эксплуатация
    Ответов: 4
    Последнее сообщение: 10.06.2014, 16:52

Ваши права

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