+5

Кнопка старт-стоп на гибкой логике и программная нейтраль

unstope 1 year ago updated by Zex 5 days ago 42

Подключил к охранному комплексу кнопку и написал на гибкой логике алгоритмы для запуска и остановки двигателя. Все работает идеально. Возникли трудности с программной нейтралью.

Для того, чтобы комплекс засчитал программную нейтраль, необходимо, чтобы он активировал поддержку зажигания. Если настроить ее по выключению зажигания, то не происходит ничего. Поэтому настроил по поднятию ручного тормоза. Тут возникает проблема: каждая активация ручника влечет за собой активацию поддержки зажигания и, соответственно, невозможность продолжить движение, т.к. опускание ручника приведет к остановке двигателя (ключ-то в замке отсутствует).

Первое решение, которое пришло в голову, - по нажатию тормоза или опусканию ручника выполнять действие "завершить автозапуск, не отключая силовые выходы", но такой вариант не работает.

Сейчас остановился на неудобном временном решении: если затягивать ручник с нажатым сцеплением, то через секунду после активации поддержки зажигания выполнится действие "завершить автозапуск, не отключая силовые выходы". Но почему-то такая программа работает через раз. Второй костыль - то же действие по нажатию педали сцепления при активной поддержке зажигания, и он тоже работает через раз. Такое ощущение, что некорректно определяется активность поддержки зажигания.

В идеале я бы хотел иметь действие "активировать поддержку зажигания". Тогда я бы смог запрограммировать его на нажатие все той же кнопки запуска, например. Полагаю, я не единственный, кому это может пригодиться. Прошу рассматривать это как запрос функционала.

Или, может быть, есть уже отработанные решения моей проблемы? Если нет, то я продолжу изыскания и выложу сюда решение, если найду его.

Фокус 2 с кнопкой старт стоп?

С замком зажигания. Кнопка на гибкой логике.

файл настройки сбрости

Вечером после работы до машины доберусь и сброшу.

1.slc
Первые 13 программ - алгоритмы кнопки запуска двигателя.

Две оставшиеся - попытка решить проблему.

Назначения входов и выходов:

XS1-16 - кнопка запуска

XS1-18 - педаль сцепления

XS2-13 - светодиод на кнопке запуска

XS1-3/5/6/9 - свободные выходы, которые я использую как переменные

Такое ощущение, что есть таймаут, в течение которого нельзя повторно выполнить действие "завершить автозапуск, не отключая силовые выходы".

Если на программу 14 повесить, например, сигнал сиреной, то он срабатывает каждый раз. А поддержка зажигания выключается только в первый раз, а если сразу после этого ее включить повторно (опустить и поднять ручник), то потом нужно ждать какое-то время, чтобы была возможность ее отключить.

хорошо завтра посмотрю.

что прям замудрено вот моя разработка умный старт-стоп.slc

Да, у вас значительно проще. Правда, 8 программа лишняя, можно было все сделать в седьмой.

Меня такой простой алгоритм работы кнопки не устраивал, поэтому я разработал более сложный. Например, я могу заглушить двигатель, не отключая аксессуары (если я планирую сидеть в машине и ждать кого-то, например). Я могу в ручном режиме крутить стартер (пока кнопку не отпущу), что может пригодиться в случае, когда двигатель плохо запускается.

Добрый день, вот смотрю вашу программу, есть немного вопросов Серо чёрный провод xs2:6 и

xs1:6 за что отвечают?

вопрос кому адресован?

Тоже проблема с программной нейтралью не могу победить.

Я решил свою проблему в три программы.

1. Нажатие тормоза или опускание ручника, если метка в зоне видимости и включена поддержка зажигания - включаем на секунду любой свободный выход (пусть это выход #12 на первом разъеме).

2. Нажатие тормоза или опускание ручника, если метка в зоне видимости и двигатель запущен дистанционно или автоматически - включаем на секунду тот же выход.

3. Выключение зажигания или аксессуаров, если этот выход активен - включаем зажигание и аксессуары.

Таким образом я победил неочевидные задержки между событиями "отключение поддержки зажигания", "выключение зажигания" и "выключение аксессуаров". Теперь я прихожу в запущенную машину и просто еду. Она не глохнет при нажатии тормоза или опускании ручника. Если я поставил машину на ручник, а потом мне снова нужно ехать, она опять же не глохнет. Если же метки в зоне видимости нет (при попытке угона), она заглохнет. Ну и алгоритмы программной нейтрали и охраны с работающим двигателем работают на ура.

Тему можно закрывать.

7 это таймер. нажатие на 10 секунд чтоб заглушить двигатель на не нажатой педали тормоза. Алгоритм взят с камри. надо добавить только кручение если двигатель не пускается. на примере седьмой можно отложить программную нетраль

Да, я не заметил задержку 10 секунд сначала.

У меня глушение происходит при нажатии тормоза и сцепления одновременно (плюс кнопка, само собой). Специально делал так, чтобы было максимально трудно случайно выключить двигатель во время движения.

Не очень понял, как на примере 7 программы отложить программную нейтраль.

Придумал, как реализовать таймер на одной программе.

Делаете действия из 8 программы с задержкой 10 секунд и прерыванием по отпусканию кнопки.

Спасибо было интересно.

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

а хотя зачем её откладывать .. можно например не реагировать на нажатие тормоза. то есть не глушить двигатель. Машины нет для эксперимента, а вот желание такое есть.  

Да я так и сделал. Трудность была в том, что там есть паузы и не срабатывают стандартные действия. У меня получилось так, что музыка не прерывается. Двигатель тоже не начинает глохнуть. Только реле щелкают.

unstope  снимите видио. файл настройки. Антону Ламзину в личку.

А сенсер на ручку не ставили?

Ставил. В фокусе это целая проблема.

Я ставил не один, а с опытным автомехаником и автоэлектриком. Я отвечал за программирование, настройку и поиск информации. А он - за непосредственно подключение.

В фокусе 2 ручка двери полая и неразборная. Поэтому были сделаны два отверстия: маленькое для проводов и большое для удобства установки. Сенсор закрепили на внутренней поверхности так, чтобы было удобно касаться указательным и средним пальцами. Залили силиконом полость в ручке. маленькое отверстие залили термоклеем, а большое - шпатлевкой и краской сверху. Сделали две передних ручки, работает отлично. Выходы датчиков повесил на один вход главного блока, массы - на второй (статусный по метке).

Для того, чтобы протащить провода из дверей, пришлось их разбирать полностью и снимать с петель.

Молодцы. Классная работа. Видосик снимите.

Придумал, как реализовать таймер на одной программе.

Делаете действия из 8 программы с задержкой 10 секунд и прерыванием по отпусканию кнопки.

Тоже вариант не плохой. Что мне нравится в шестой так это можно писать логику. обкатывать и переписывать плохо только что у вас только 15 пунктов. У нас есть 30.

Да, я знаю. И мне не хватает 15 программ... Да я бы и 30 легко заполнил, идей хватает.

Так сдайте на шестое поколение, и будет вам счастье.

А я могу сдать как частное лицо? Я ведь не занимаюсь установкой профессионально. Чисто технически я сдать смогу, думаю.

да. конечно. получите сертификат системы будите брать со скидкой. 

На одном из шагов авторизации требуется отправить фото автосервиса с разных ракурсов. А я могу только тест пройти и задания выполнить.

можно просто своё фото на фоне гаража. фото нужно для того чтоб в скайпе  и на фото человек соответствовал напишите что собираетесь заниматься авторской установкой. что вы в этот раз и сделали.

У меня нет гаража. Я в другой отрасли работаю вообще. Чисто для себя и настройки своей машины нельзя получить авторизацию?

сделайте фото возле любо гаража. ваша фамилия и телефон будут на сайте начнут звонить клиенты вам что лишний рубль в кармане помеха? Я например ещё занимаюсь ремонтом приборов безопасности грузоподъёмных механизмов. Настраиваю частотно импульсные преобразователи. 

Рубль, конечно, не помеха, а вот то, что нет гаража, где можно ставить системы, - помеха. Но за идею спасибо.

У меня на установку моей системы на знакомую мне 6 лет машину ушло три недели (считая все исследования и эксперименты). Какого клиента это устроит? :-) Я могу только настраивать готовые установки.

Отличная работа.

+2

unstope, спасибо за то, что поделились своими наработками!

У меня есть несколько идей, которые помогут сэкономить пару программ и добавить функционал. Возможно кому-нибудь пригодятся.

Условие "Метка: есть" можно убрать из программ, подключив кнопку Start-Stop с использованием статусного выхода при условии наличия метки, а также в сервисном режиме. Тогда первая и вторая программы (из файла 1.slc отсюда) объединяются в одну:


Кстати, в первое действие стоит добавить условия для прерывания "постановка в охрану" и "постановка 'свободными руками'", тогда при постановке на охрану ACC отключится, если вдруг вы забыли это сделать, покидая авто. Сначала сделал и проверил работу, а потом вспомнил, что этот прием увидел в одном из видео Старлайн на Youtube. Неочевидный нюанс, ведь к моменту постановки в охрану программа давно уже прекратила свою работу...


А с включенным зажиганием такой финт уже не пройдет, но можно решить отдельной программой ГЛ по команде с брелка, если надо.

Программы 7 и 8 тоже объединяются:

Глушение двигателя с выключением всех цепей и всех, кроме ACC, я реализовал так (можно пересмотреть условие прерывания, но смысл, думаю, ясен):

Если потом надо ехать дальше, то двигатель просто заводится, состояние ACC не играет роли. Если надо выходить из машины и ставить ее на охрану, тогда цепь ACC должна отключиться первой программой по "прервать, если", но надо проверить. Наверно придется добавить аналогичное условие в программу №9 (Auto start) для ACC на тот случай, когда двигатель заводился сразу из положения OFF.

Программы "Auto start", "Manual start 1" и "Manual start 2" немного изменил, чтобы из режима включенного зажигания можно было заводить двигатель как автоматически, так и вручную, с удержанием кнопки запуска.

-При одиночном нажатии на кнопку с нажатой педалью тормоза двигатель запустится по программе 4. Педаль в этом случае можно не удерживать.

-Если вдруг передумали заводить двигатель, надо отпустить педаль тормоза в момент работы стартера. Можно добавить и нажатие педали тоже. Если такая функция не нужна, можно сэкономить, перенеся событие "Переменная 1:выкл." из пятой программы в четвертую, как это сделано у автора темы.

-При удержании кнопки с удержанием педали тормоза будет крутить стартером, пока не отпустите кнопку или педаль тормоза.

Что касается сброса поддержки зажигания и решения проблемы из этого поста, то в моем случае одной секунды было мало - двигатель глох при опускании ручника или нажатии педали тормоза, но 1050-1100 мс вполне хватило. Кстати, в 14 программе обязательно наличие всех событий. Когда пробовал только по выключению IGN-2, работа осуществлялась некорректно.


Но, в принципе, таймаут по повторному завершению автозапуска через ГЛ там всего около 20 секунд, так что для экономии программ можно обойтись всего двумя. Если канал педали тормоза использовать как "Функция не назначена", тогда двигатель не будет глохнуть при ее нажатии (это тоже было в видео на Youtube):


Еще момент по экстренному выключению зажигания по длительному удержанию кнопки. Почему-то даже в заданиях на авторизацию по 6 поколению инструкторы настаивали на реализации этой функции посредством двух программ, хотя достаточно только одной, как уже писал выше автор темы. Я проверил - работает. Если есть какие-либо подводные камни при такой реализации, хотелось бы услышать. Вероятно это было связано с наличием ошибки ("в гибкой логике "прервать, если" переводило аналоговый выход в активное состояние"), которая была исправлена в прошивке 2.16.1 (№10 по ссылке).

Спасибо за содержательный ответ. С момента создания темы я достаточно серьезно переписал гибкую логику, и, что интересно, во многом пришел к тем же выводам и решениям, что и вы.

Я убрал проверку метки там, где это не требуется в целях безопасности (выключение аксессуаров, зажигания, двигателя, а также программы, которые активируются флагами задержки). Достаточно интересная идея с подключением к статусному выходу, но это дает возможность завести двигатель без метки, просто подав массу на канал кнопки. В отличие от этого, проверку метки в логике уже просто так не обойти. Впрочем, весьма сомнительная уязвимость, но если хватает условий, то я предпочитаю использовать их. В моих новых алгоритмах нет случаев, где условие наличия метки не вмещается в лимит 3 условий на программу.

Для включения и выключения ACC у меня написаны отдельные программы. Мне нравится, когда АСС выключается через пару секунд после автозапуска, чтобы магнитола не играла. Соответственно, чтобы включалась, когда я снимаю с охраны, а двигатель работает. А с включенным зажиганием моя машина не встает в охрану.

Автоматический и ручной запуск стартера я реализовал похожим способом. Если нажать кнопку кратковременно (менее 700 мс), то стартер крутится в автоматическом режиме, а если держать дольше, то крутится, пока кнопка нажата. На запуск ушло 3 программы.

Я, также как и вы, опытным путем выяснил, что 1000 мс задержки недостаточно для программы сброса поддержки зажигания. Я поставил 1500 мс, полет нормальный. Использовать стандартное действие совсем не хочется из-за большого таймаута. Все еще надеюсь, что когда-нибудь появится возможность переключать поддержку зажигания через гибкую логику без таймаутов. А педаль тормоза у меня подключена по CAN, поэтому либо я вообще отказываюсь от ее использования в алгоритмах, либо грязный хак с отменой выключения зажигания и АСС.

Что интересно, с экстренным выключением зажигания я пришел к противоположным выводам. У меня на практике не получилось сделать это на одной программе, потому что машина глохла по "прервать, если" при отпускании кнопки. Я, когда писал комментарий о том, что можно сделать это за одну программу, ожидал, что "прервать, если" прервет действие во время задержки и не будет выполнено ничего, а на практике выход зажигания выставлялся в пассивное состояние. Впрочем, я за прошедший год не пробовал изменить эту программу, поэтому не исключаю, что что-то поменялось.

Также я переработал программы, отвечающие за переключение режимов 0-ACC-IGN. Вместо двойных нажатий я использую длительные (700 мс). Мне кажется, что стало удобне пользоваться, да и пару программ сэкономил.

Еще я придумал запускать двигатель по нажатию сервисной кнопки, чтобы можно было делать это, не садять в машину (у меня сервисная кнопка находится возле стойки со стороны водителя и достаточно удобно нажать педаль и кнопку, стоя возле машины).

Также придумал алгоритм постановки на охрану с помощью кнопки багажника. При открытом багажнике удерживаем кнопку в течение 700 мс и захлопываем крышку. Достаточно удобно.

В итоге у меня получилось в идеальном варианте (число - количество программ):

5 - 0-ACC-IGN

4 - Запуск двигателя

2 - Сброс зажигания, чтобы обойти блокировку кручения стартера второй раз за один цикл зажигания (у меня не только механическая блокировка в замке зажигания, но и электронная в ЭБУ)

5 - Остановка двигателя

3 - Мягкая посадка

2 - Контроль АСС

4 - Манипуляции с багажником

4 - Оповещения (о появлении метки в зоне действия аварийкой и о возможности запуска двигателя светодиодом на кнопке запуска)

Итого - 29 программ. Идеально вписался. Но, т.к. я не являюсь авторизованным установщиком, то ограничен 15 программами. Пришлось жертвовать многими наработками. Оставил только самое необходимое:

5 - 0-ACC-IGN

3 - Запуск двигателя

2 - Сброс зажигания

2 - Остановка двигателя

3 - Мягкая посадка

P.S. К сожалению, не могу выложить свой итоговый .slc файл, а мой способ записи программ - весьма специфический и не всем будет понятен.

Достаточно интересная идея с подключением к статусному выходу, но это дает возможность завести двигатель без метки, просто подав массу на канал кнопки. В отличие от этого, проверку метки в логике уже просто так не обойти. Впрочем, весьма сомнительная уязвимость, но если хватает условий, то я предпочитаю использовать их.

Согласен, тоже думал о возможности обхода подачей массы и так же пришел к выводу, что уязвимость сомнительная. Если система находится в охране/ожидании авторизации/запрете поездки, то при включении зажигания она перейдет в режим тревоги, а если снята с охраны, то там уже должно сработать антиограбление после начала движения, ну и нечего бросать машину открытой в темных переулках :)

А с включенным зажиганием моя машина не встает в охрану.

Моя тоже. Это особенность системы.

А педаль тормоза у меня подключена по CAN, поэтому либо я вообще отказываюсь от ее использования в алгоритмах, либо грязный хак с отменой выключения зажигания и АСС.

Мне кажется, что не важно, по CAN ли подключена педаль или по аналогу. У меня такой же выбор - или убирать ее из всех родных алгоритмов, или применять ваш хак, или сбрасывать поддержку встроенной функцией.

Что интересно, с экстренным выключением зажигания я пришел к противоположным выводам. У меня на практике не получилось сделать это на одной программе, потому что машина глохла по "прервать, если" при отпускании кнопки. Я, когда писал комментарий о том, что можно сделать это за одну программу, ожидал, что "прервать, если" прервет действие во время задержки и не будет выполнено ничего, а на практике выход зажигания выставлялся в пассивное состояние. Впрочем, я за прошедший год не пробовал изменить эту программу, поэтому не исключаю, что что-то поменялось.

Я тестировал на самой последней прошивке 2.16.1, в которой эта проблема заявлена как решенная. Работало как надо. Попробуйте обновиться. С такими ограничениями одна свободная программа не будет лишней.

Также я переработал программы, отвечающие за переключение режимов 0-ACC-IGN. Вместо двойных нажатий я использую длительные (700 мс). Мне кажется, что стало удобне пользоваться, да и пару программ сэкономил.
Интересно, но так ли необходимо? Просто базовая логика кнопки Start-Stop без плюшек вся умещается в 5 программ, ну плюс одна на экстренное глушение, а у вас 5 программ ушло только на 0-ACC-IGN. Я не критикую, а хочу узнать из вашего опыта, насколько часто пользуетесь включением зажигания без запуска двигателя, т.к. моя кнопка всё никак не доедет с Али - пока пользуюсь ключом, а логику обкатываю переназначением одного из концевиков, чтобы работал в качестве кнопки.

Еще я придумал запускать двигатель по нажатию сервисной кнопки, чтобы можно было делать это, не садять в машину (у меня сервисная кнопка находится возле стойки со стороны водителя и достаточно удобно нажать педаль и кнопку, стоя возле машины).
Не совсем мой случай. Пока дотянешься до педали тормоза, там уже и кнопка Start-Stop будет рядом, хотя сервисная тоже стоит около стойки лобового стекла.


Также придумал алгоритм постановки на охрану с помощью кнопки багажника. При открытом багажнике удерживаем кнопку в течение 700 мс и захлопываем крышку. Достаточно удобно.
Интересная идея.
Я тестировал на самой последней прошивке 2.16.1, в которой эта проблема заявлена как решенная. Работало как надо. Попробуйте обновиться. С такими ограничениями одна свободная программа не будет лишней

Хоть одна программа мне погоды не сделает, надо будет попробовать. Спасибо за информацию.

Мне кажется, что не важно, по CAN ли подключена педаль или по аналогу.

Это влияет на техническую возможность применять подход из вебинаров. Этот подход, впрочем, тоже в какой-то степени хак. В итоге приходим к тому, что либо терпим двадцатисекундную задержку, либо хак. Любопытно, есть ли разумное объяснение, для чего эта задержка вообще существует.

Интересно, но так ли необходимо? Просто базовая логика кнопки Start-Stop без плюшек вся умещается в 5 программ, ну плюс одна на экстренное глушение, а у вас 5 программ ушло только на 0-ACC-IGN. Я не критикую, а хочу узнать из вашего опыта, насколько часто пользуетесь включением зажигания без запуска двигателя, т.к. моя кнопка всё никак не доедет с Али - пока пользуюсь ключом, а логику обкатываю переназначением одного из концевиков, чтобы работал в качестве кнопки.

Я никогда до прошлого лета не пользовался автомобилем с кнопкой старт-стоп, поэтому мне было важно, чтобы я мог с помощью кнопки совершать те же переключения режимов, что и ключом. На практике я вообще весьма редко пользуюсь кнопкой, потому что в основном езжу на работу и с работы и круглый год пользуюсь дистанционным запуском. Активно пользуюсь кнопкой только в отпуске и изредка по выходным. Часто пригождалось выключение двигателя без выключения аксессуаров, а также включение и выключение аксессуаров.


Включение зажигания без запуска двигателя может пригодиться, когда потребуется запуск с толкача, например. Также может потребоваться при прошивке ЭБУ. Запуск в ручном режиме может пригодиться, если будут проблемы с запуском двигателя, например, в сильный мороз, либо в случае, если в CAN будет некорректная информация об оборотах двигателя. У меня за год использования кнопки не произошло ни одного подобного случая.

Спасибо за информацию. Наконец доехала моя кнопка, уже давно поставил, обкатал и внес необходимые изменения.

Пришел к выводу, что помимо логики основной работы важно не забыть и про другие режимы: сервисный и экстренного снятия с охраны. Правда, для экономии программ, запуск в этих режимах реализован по упрощенной схеме, без автоматического запуска и с необходимостью предварительно включать зажигание отдельным нажатием, но это не проблема. Гораздо хуже было бы оказаться без рабочей кнопки в случае севших батареек/забытой метки и т.п.

Также я переработал программы, отвечающие за переключение режимов 0-ACC-IGN. Вместо двойных нажатий я использую длительные (700 мс). Мне кажется, что стало удобне пользоваться, да и пару программ сэкономил.

Я тоже так сделал. Да, стало удобнее. Особенно то, что могу по отдельности включать IGN1 без необходимости включать IGN2. С замком это тоже было возможно, но чуть сложнее ловить промежуточное положение.

У меня на этом сэкономилась всего одна программа и она же ушла на автоматический запуск двигателя (разделил на две программы), а ручной - наоборот, объединил в одну. Но для включения зажигания в сервисном режиме пришлось использовать еще одну. В общем, как ни крути, количество программ остается примерно тем же, но за счет оптимизации растет функциональность.

Всего на все функции кнопки Start-Stop у меня ушло 13 программ:

3 - управление ACC/IGN1/IGN2 во всех режимах

4 - запуск двигателя (автоматический и ручной)

3 - сброс поддержки зажигания по вашему рецепту

2 - глушение (обычное и экстренное)

1 - управление подсветкой кнопки

При желании можно освободить 1-2. Подсветку использую только при заглушенном двигателе - при езде мешают отражения на стеклах.