Редактирование кривых УОЗ в реальном врем. (Realtime tables)

Обсуждение программного обеспечения для ПК и БК. Discussion of related computer software.

Moderator: STC

User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Редактирование кривых УОЗ в реальном времени

Post by STC »

Вчера начал дорабатывать прошивку для поддержки редактирования таблиц в реальном времени.
Сделал чтобы блок по команде менеджера посылал имена редектируемых таблиц в дополнение к обычным. В ближайшее время поменяю внутреннюю логику прошивки для работы с ОЗУ при обращении к таблицам.
Для обмена данными меджу менеджером и блоком во время радактирования таблиц предлагаю добавить следующий информационный пакет.

Code: Select all

!{NTAA(data)\r
@{NTAA(data)\r
N - номер набора редактируемых таблиц (0 или 1)
T - код таблицы из набора (ХХ, рабочая и т.д.)
AA - адрес фрагмента в таблице
(data) - данные фрагмента для записи/чтения в таблицу. Размер данных любой но не больше 32 байт.

Алгоритм обмена данными между менеджером и блоком следующий.
Пользователь открывает окно редактировании таблиц (не акцкентируем на этом внимание) на котором есть две кнопки - "прочитать" и "записать". При нажатии на кнопку "прочитать" менеджер посылает блоку команду CHANGEMODE и блок начинает посылать менеджеру содержимое всех таблиц. После получения всех данных менеджер снова посылает команду CHANGEMODE для восстановления режима посылки по умолчанию. После того как пользователь отредактировал таблицы он нажимает кнопку "записать" и менеджер пересылает содержимое только тех фрагментов и тех таблиц которые редактировались.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Serj_K
LQFP144 - On Top Of The Game
Posts: 330
Joined: Thu Dec 09, 2010 12:55 pm
Location: Kyiv, Ukraine

Re: Редактирование кривых УОЗ в реальном времени

Post by Serj_K »

Тогда размер передаваемого фрагмента лучше сделать 16-и байтным. Причём для упрощения можно вообще не использовать код таблицы и адрес фрагмента, а передавать всю таблицу(ы) целиком - нам нужно их затащить в менеджер полностью, а не отдельный фрагмент. Как минимум для переноса в менеджер.
А вот перенос отредактированных в менеджере данных может и усложнить. Нас ведь интересует изменение в реальном времени, то есть конкретной точки. Для этого мы мониторим текущее состояние двигателя - обороты, температуру, состояние концевика карба и расход воздуха. На основании этих данных точно знаем, какая точка таблиц используется. Далее изменяем значение этой текущей точки и передаём только его - 1 байт данных + команда. Новое значение заменяет старое в ОЗУ и сразу применяется. После завершения редактирования посылается команда на сохранение данных в ЕЕПРОМ и они переносятся туда из ОЗУ. Также остаётся копия таблиц в менеджере, которую можно сохранить в файле.

По форме редактирования в менеджере.
Имеем вкладку данных прошивки. Читаем прошивку, читаем таблицы из ЕЕПРОМ секу(реально из ОЗУ). Выбираем работу с редактируемыми таблицами, например ставим флажок. Выбираем таблицу для редактирования. При этом двигатель находится в некотором состоянии, которое мы мониторим. На графике соответствующих таблиц каким-то образом нужно отображить текущее состояние оборотов или температуры. Это может быть вертикльный маркер. На графике рабочей характеристики по считанным данным также изменяется значение расхода воздуха и соответственно переключается таблица. Мы двигаем точку графика, когда обороты находятся непосредственно возле неё. При этом изменённые данные по этой точке сразу передаются в секу. Кроме того, нужно переключать таблицы в соответствии с режимом работы двигателя - пуск, холостой ход, рабочий режим. Температурная коррекция - это отдельная таблица, до которой дойдёт дело уже в конце.
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Редактирование кривых УОЗ в реальном времени

Post by STC »

Полностью согласен. Я просто не хотел акцентировать внимание на деталях реализации пользовательского интерфейса, а хотел акцентировать внимание на протоколе.
Возможность пересылки в блок значения одной точки я не исключал (описанный мной пакет данных это позволяет делать, он универсален).
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Serj_K
LQFP144 - On Top Of The Game
Posts: 330
Joined: Thu Dec 09, 2010 12:55 pm
Location: Kyiv, Ukraine

Re: Редактирование кривых УОЗ в реальном времени

Post by Serj_K »

Пересылать в секу блок данных при редактировании в реальном времени смысла нет, достаточно изменённую текущую точку. Или полные таблицы при начальной инициализации ЕЕПРОМ.
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Редактирование кривых УОЗ в реальном времени

Post by STC »

Так и есть
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
ender11
LQFP112 - Up with the play
Posts: 197
Joined: Sat Dec 11, 2010 4:05 pm

Re: Редактирование кривых УОЗ в реальном времени

Post by ender11 »

может, пусть менеджер и решает, что ему нужно -- всё сразу, или точку?
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Редактирование кривых УОЗ в реальном времени

Post by STC »

Понятное дело что это должен менеджер решать.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Редактирование кривых УОЗ в реальном времени

Post by STC »

Столкнулся с проблемой связанной с возможностью затирания редактируемой таблицы при автоматическом переключении газ/бензин.
Редактируемая таблица размещена в ОЗУ и в момент переключения между газом и бензином мы производим копирование выбранного набора кривых в ОЗУ. При этом если не сохранить отредактированную копию в ОЗУ обратно в EEPROM то мы ее потеряем, но сохрканить ее довольно сложно, так как процесс сохранения довольно долгий и на это время нужно отложить процесс перенесения в ОЗУ новой таблицы...
Как один из вариантов решения этой проблемы это на время редактирования запрещать переключение газ/бензин и использовать только тот набор который мы выбрали для редактирования независимо от того какое сейчас топливо.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Serj_K
LQFP144 - On Top Of The Game
Posts: 330
Joined: Thu Dec 09, 2010 12:55 pm
Location: Kyiv, Ukraine

Re: Редактирование кривых УОЗ в реальном времени

Post by Serj_K »

Можно сделать по другому. Если будет флаг, отвечающий за загрузку в ОЗУ конкретной таблицы и этот флаг изменяется только внешней командой, то при переходе на другое топливо будет работать таблица из флэш и редактирование заблокируется. Тогда можно будет сохранить изменённую таблицу без потери.
User avatar
STC
LQFP144 - On Top Of The Game
Posts: 2420
Joined: Fri Oct 22, 2010 10:47 pm
Location: Ukraine, Kiev
Contact:

Re: Редактирование кривых УОЗ в реальном времени

Post by STC »

Как вариант можно еще использовать 2 таблицы в ОЗУ вместо 1. Это правда жирно будет по памяти, но ее вроде в меге 32 2 кб. Одна для бензина, другая для газа.
Да, скорее всего так и сделаю.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
Post Reply