Страница 2 из 3
Управление через UART
Добавлено: 14.03.2018{, 10:09}
RW9UU
rw6cm писал(а): ↑14.03.2018{, 09:15}
Что это вообще такое, стенд для поверок реле времени?
точно в точечку
первые две платы образуют 2 шины , фактически этими шинами задаются временные режимы, в которых будет работать это реле времени. Всего режимов шесть. от нескольких секунд, до более чем 300 секунд..
третья плата формирователь сигнала начала измерения;
четвертая плата включает -выключает +12в или 24 В. Просто питание такое может питаться так и сяк, проверять надо и так и так, начало измерения начинается с подачи переменной "начало_измерения", при этом срабатывает либо +12 либо +24В;
пятая плата это формирователь номера измеряемой длительности , необходимо для седьмой платы;
шестая плата сам измеритель длительности на основе скоростного счетчика;
седьмая плата это формирователь строки которая поступает в UART. Причем в зависимости выбранного номера длительности выдается своя строка. Это необходимо для терминальной программы.
И последняя плата. Формирует короткое замыкание выходных контактов реле после измерения. Необходимо для разрядки внутренней RC -цепи
терминальная программа тоже написана, но на форум я выкладывать не буду, по запросу пожалуйста .Если надо. Написана в HIASM. Я тоже там учусь . всё собрано в железе и работает, за редким исключением. Просьба помочь "допилить"
Отправлено спустя 3 минуты :
я повторюсь. всё работает за исключением см мессагу #14
Не получается закинуть строку
Добавлено: 14.03.2018{, 10:49}
Sancho
RW9UU, А так должно! У вас ведь переменная "Начало измерения" не только начало, она в 1 пока идёт процесс.
Немного переделал плату 6, и добавил переменную от входа окончание, что-бы вход опрашивался только один раз в цикле.
Отображение будет работать до начала нового отсчёта. Расчёт по милисекундам, потом / 1000.0
Отправлено спустя 29 минут :
Блочок "Calc_time_mc" имеет встроенный тригер - при подаче 1 выход сначала обнуляется, потом время в мс от начала 1.
При 0 счёт останавливается.
Не получается закинуть строку
Добавлено: 14.03.2018{, 11:29}
RW9UU
Sancho, в скоростном счетчике был задействован порт D2 . Этот порт физически должен был соединен с DA3 ( см. плату 1) На плате 1 формирователь измеряемого импульса. Таким образом мне непонятно как будет сформировано окончание измерения. Или это все есть в новом блоке????
Отправлено спустя 31 секунду:
понял сейчас попробую
Не получается закинуть строку
Добавлено: 14.03.2018{, 11:33}
Sancho
RW9UU, Сори не тот проект выложил, сейчас обновлю!
Отправлено спустя 11 минут 34 секунды:
Лишнее потом из своего проекта сами уберёте, Вам виднее...
Не получается закинуть строку
Добавлено: 14.03.2018{, 12:02}
RW9UU
Прикольный блочок
но проблема указанная в мессаге #14 решена частично. А именно я произвел первое измерение. потом выбираю следующий режим. число все равно остается в переменной, но новое ( от этого блока переменная стирается и заново начинает считать). В принципе это устраивает!!!! Большое спасибо
Sancho,
Отправлено спустя 20 минут 11 секунд:
К сожалению блок пересчитывает несколько секунд. Это заметно на длинных интервалах. т.е. проходит команда на окончание измерения напряжение питания снимается, а циферки еще кое какое время еще бегут
, что-то не так :devil:
Отправлено спустя 30 минут 10 секунд:
поставил перед блоком RS триггер. все нормально стало. Видать если команду кидать в переменную UART происходит задержка. Еще раз спасибо
Sancho,
Отправлено спустя 4 минуты 19 секунд:
Нормально только на коротких интервалах. Ничего не пойму......., пойду еще покопаюсь
Не получается закинуть строку
Добавлено: 14.03.2018{, 13:13}
rw6cm
Не получается закинуть строку
Добавлено: 14.03.2018{, 15:00}
Sancho
И слегка прибрался, но не всё...
rw6cm, Володя, мне кажется в данном проекте это излишне.
Не получается закинуть строку
Добавлено: 14.03.2018{, 15:29}
rw6cm
Sancho писал(а): ↑14.03.2018{, 15:00}
Володя, мне кажется в данном проекте это излишне.
У него во время замера данные с точность до десятых постоянно передаются в терминал.
uart жрет проц по полной. при таком раскладе точность даже в секунды не уложится.
Не получается закинуть строку
Добавлено: 14.03.2018{, 16:06}
RW9UU
Спасибо
Sancho,
rw6cm, завтра ваши два варианта попробую. Обязательно отпишусь.
Sancho, вообще мой проект переделал
Кстати весьма поучительно.. в первой плате написали "возможно лишнее" - я пока оставлю это для контроля длительности . выход на частотомер..Пока оставлю.
Отправлено спустя 2 минуты 31 секунду:
rw6cm писал(а): ↑14.03.2018{, 15:29}
uart жрет проц по полной. при таком раскладе точность даже в секунды не уложится
завтра посмотрю загрузку проца
Не получается закинуть строку
Добавлено: 14.03.2018{, 16:37}
Sancho
rw6cm писал(а): ↑14.03.2018{, 15:29}
У него во время замера данные с точность до десятых постоянно передаются в терминал.
uart жрет проц по полной. при таком раскладе точность даже в секунды не уложится.
Возражу - он отправляет данные один раз в цикле, поэтому полюбасу в следующем цикле отработает измерение времени, и останов счётчика с выводом тоже. Учитывая скорость uart, как минимум в одну десятую уложится.
Не получается закинуть строку
Добавлено: 14.03.2018{, 19:08}
rw6cm
Sancho писал(а): ↑14.03.2018{, 16:37}
Возражу - он отправляет данные один раз в цикле, поэтому полюбасу в следующем цикле отработает измерение времени, и останов счётчика с выводом тоже. Учитывая скорость uart, как минимум в одну десятую уложится.
Соглашусь здесь действительно разницы не будет, (после ночной голова не варит))).
здесь ТС нужно учесть, что сам внутренний таймер точностью не блещет. У меня из 4 разных ардуин только одна отстает за 10мин на 4сек.
остальные больше, а это на каждую секунду погрешность ~7мс. и это еще зависит от окружающей температуры.
Не получается закинуть строку
Добавлено: 14.03.2018{, 19:22}
Sancho
Володя - это уже вопросы к кварцу, и к обвязке его.
При нормальном кварце в большОм корпусе, как на некоторых про-мини, у меня получалось делать частотомер на PCF8583 до 3,6 мГц с точностью +-50Гц на максимуме, при 1 мГц - 10Гц. По I2C....
Не получается закинуть строку
Добавлено: 15.03.2018{, 06:21}
RW9UU
Приветствую! Попробовал 2 варианта. Что сказать. Sancho, не работает следующие. Формирование строки которая отдаётся в UART- не работает (плата №7). Если честно идет формирование вроде правильно, но в терминальной программе " выборки" нет. Возможно это из-за переменной Est_izmerenie.
rw6cm, Вставил плату в свой проект. Работает. Разбрался с пересчетом о котором писал выше. Ничего он не пересчитывать. Просто медленно считает. За 1 минуту измерения отставание примерно 5 сек, но результат выдается точный.
Не получается закинуть строку
Добавлено: 15.03.2018{, 08:44}
Sancho
RW9UU писал(а): ↑15.03.2018{, 06:21}
Что сказать. Sancho, не работает следующие. Формирование строки которая отдаётся в UART- не работает (плата №7). Если честно идет формирование вроде правильно, но в терминальной программе " выборки" нет. Возможно это из-за переменной Est_izmerenie.
Теперь у Вас посылки идут 10 раз в секунду при измерении однозначно, т.к. "ненужный код" не обрабатывается.
Включите отправлять каждые...
Посмотрите через терминал.
Est_izmerenie - такого сигнала нет, "возможно" анализируйте работу схемы.
Пробуйте, и приводите проект к компактному, не размазанному, упорядоченному виду.
Удачи!
Не получается закинуть строку
Добавлено: 15.03.2018{, 09:36}
RW9UU
Да я ошибся в имени переменной. Как я понял проблемы с платой №7 вызваны с отсутствием формирования переменной "номер длительности". Она формируется в плате №5, там стоит блок Freelog ( содержимое проверил, всё нормально). На входа которого поступают переменные D4-D12. Похоже они не формируется. А они формируются в плате №2, которая в свою очередь (плата) задействована по переменной Est signal, если TRUE. Который формируется в плате №1. Козява именно как мне кажется с этой переменной, может блок String Change не работает??? я просто с таким , блоком не работал еще....
Отправлено спустя 32 минуты 1 секунду:
За был написать то в чем дело. Все измерения болтаются только в строке Q=...mS. переключения нет на другие режимы
Не получается закинуть строку
Добавлено: 15.03.2018{, 11:31}
Sancho
RW9UU писал(а): ↑15.03.2018{, 10:08}
Как я понял проблемы с платой №7 вызваны с отсутствием формирования переменной "номер длительности". Она формируется в плате №5, там стоит блок Freelog ( содержимое проверил, всё нормально). На входа которого поступают переменные D4-D12. Похоже они не формируется. А они формируются в плате №2, которая в свою очередь (плата) задействована по переменной Est signal, если TRUE. Который формируется в плате №1. Козява именно как мне кажется с этой переменной, может блок String Change не работает??? я просто с таким , блоком не работал еще....
Блок детектор изменения строки выдаёт 1, если строка в текущем цикле не равна строке из предыдущего цикла.
Соответственно, если значение переменной UART изменилось, получаем 1 и плата 2 начинает исполняться.
Все переменные, полученные при работе пл.2 остаются доступны и не меняются при Est signal=0, посему блок пл.5 имеет все данные для корректной работы.
Плате 7 вообще фиолетово, она должна выплёвывать значения в uart при меняющихся данных "измерение".
Удалите условие с платы 2.
Отправлено спустя 2 минуты 10 секунд:
Или измените в условии на переменную ole1
Отправлено спустя 7 минут 28 секунд:
Ещё момент - я честно не понял, как у Вас формируется "номер длительности" из упрвл. софта в мк.
Задействовано 9 пинов и команд, а "номеров" всего шесть?
Не проще-ли отправлять номер из софта, а в мк уже декодировать на нужные выходы - по моему однозначно проще - команда буде содержать перефикс "номера" и сам номер, цифру.
Такие мысли...
Отправлено спустя 3 минуты 36 секунд:
Твою дивизию!!!
На плате 2 нет связей к uart от GetChar.., прое лись при переносе... Зелёные линии, одел вторые глаза - заметил...Сори...
Дорисуйте, будет ок.
Не получается закинуть строку
Добавлено: 15.03.2018{, 12:40}
rw6cm
RW9UU писал(а): ↑15.03.2018{, 10:08}
проблемы с платой №7 вызваны с отсутствием формирования переменной "номер длительности".
Мне не понятно почему триггер SR а не RS
Старт-стоп замудрен как то...
И зачем в порт гнать данные каждую мс, может достаточно секунды?
Не получается закинуть строку
Добавлено: 15.03.2018{, 12:52}
RW9UU
Ну я тоже хорош
Я же тоже окуляры одел и увидел
Сейчас проверил ваши 2блока примерно считают одинаково. Так что особой разницы нет. Все хорошо. TRUE убрал со второй платы. Формирование сигнала с софта, пока оставлю в "уме", но идея хорошая. Большое спасибо
Отправлено спустя 35 секунд:
rw6cm, у меня рабочий день закончился прийду домой посмотрю файл
Отправлено спустя 1 час 51 минуту 16 секунд:
посмотрел вариант от
rw6cm, да весьма поучительно. Завтра попробую его зашить в контроллер. Правда время будет мало, по работе завтра уезжаю. По поводу платы №2 в вашем варианте. Физически я просто разбил на две платы, потому, что каждая группа реле работает на свою шину. Хотя моё решение плохое наверное для скомпилированного проекта. Завтра отпишусь.
Не получается закинуть строку
Добавлено: 15.03.2018{, 15:22}
Sancho
rw6cm писал(а): ↑15.03.2018{, 12:40}
Мне не понятно почему триггер SR а не RS
Володя, а если на выходе блок реле с оптронами с общим анодом?
Мне вообще не понятно, что и как там коммутируется, ну да ладно.
Но формат управления я бы переделал. Даже без С++. например так...
Не получается закинуть строку
Добавлено: 15.03.2018{, 16:53}
rw6cm
Sancho писал(а): ↑15.03.2018{, 15:22}
Володя, а если на выходе блок реле с оптронами с общим анодом?
да вот если бы знать )))
но я бы строил логику на приоритете сброса (т.е RS) привязал бы еще например к da4.
хотя во многие моменты тоже въехать не могу ))