InSAn Опубліковано: 17 жовтня 2018 Автор Поділитись Опубліковано: 17 жовтня 2018 Может тогда master должен "собирать урожай" последовательно, со всех slaves ? Имеено так Модбас и работает circular buffer или можно даже fifo (с фиксированным размером), это такой механизм Я знаю, что такое буфер Но не вижу, как мастер может отловить нажатие кнопки на слейве (а не ее статус). Ведь к тому моменту, как мастер получит сигнал о нажатии - уже может произойти ее отпускание. Именно поэтому слейвы программируются на обработку события, а мастеру лишь передают состояние. 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
svtkachenko Опубліковано: 17 жовтня 2018 Поділитись Опубліковано: 17 жовтня 2018 Хвастаюсь - 8 релейных выходов (6A 250VAC; 6A 30VDC) - сохранение состояния выходов при отключении и последующем включении питания PPS: Вопросы, предложения и критика приветствуются Релейные выходы можно было бы полноценно использовать, если бы с каждого контакта отдельная клемма была, без общего провода. Релейные выходы так и делаются в промышленных контроллерах же. Сохранять состояния выходов... Рано или поздно кого-то шарахнет. Даже не вникая в рассуждения, так нельзя делать. Как юзер может внести коррективы или изменить программу? Какой софт использовать? Один хотя-бы вход сделать счетчиком, опционально. 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 17 жовтня 2018 Автор Поділитись Опубліковано: 17 жовтня 2018 Релейные выходы можно было бы полноценно использовать, если бы с каждого контакта отдельная клемма была, без общего провода. Релейные выходы так и делаются в промышленных контроллерах же. 8 релейных выходов - 16 контактов. Где там общий провод? Сохранять состояния выходов... Рано или поздно кого-то шарахнет. Даже не вникая в рассуждения, так нельзя делать.А стоило бы, наверное, вникнуть. Ведь именно так работают импульсные реле (не электронные!) Eaton, ABB, Hageer и т.д., которые сохраняют свое состояние при исчезновении электричества. Как юзер может внести коррективы или изменить программу? Какой софт использовать? Любой, поддерживающий стандартный протокол Modbus RTU. Один хотя-бы вход сделать счетчиком, опционально. Спасибо, хороший вопрос... Я думал над этим. Но в итоге решил, что счетчик будет более уместен в другом устройстве (например, в "комплекте" с аналоговыми входами). Это же устройство - фактически замена восьми импульсных реле с функцией центрального выключателя и с продвинутыми возможностями контроля и управления. Добавлено через 25 минут Как юзер может внести коррективы или изменить программу? Какой софт использовать? Любой, поддерживающий стандартный протокол Modbus RTU. В сети множество бесплатного и условно-бесплатного ПО. Например, Modbus Poll, TIK Modscan, Termite, Эмулятор Modbus, Modpoll Modbus Master Simulator и множество других. Посилання на коментар Поділитися на інших сайтах More sharing options...
svtkachenko Опубліковано: 17 жовтня 2018 Поділитись Опубліковано: 17 жовтня 2018 Видимо, не вник. Я ж думал, идея приближается к PLC, а в этих реле я не очень понимаю, никогда не применял. Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 17 жовтня 2018 Автор Поділитись Опубліковано: 17 жовтня 2018 Я ж думал, идея приближается к PLC Наоборот - отдаляется от ПЛК: это самодостаточное устройство, которое может взаимодействовать с ПЛК. Посилання на коментар Поділитися на інших сайтах More sharing options...
unreal1975 Опубліковано: 17 жовтня 2018 Поділитись Опубліковано: 17 жовтня 2018 Atmega328 Если собираетесь дальше развивать проект, советую побыстрее уйти от атмела-микрочипа, там целый букет проблем 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 18 жовтня 2018 Автор Поділитись Опубліковано: 18 жовтня 2018 советую побыстрее уйти от атмела-микрочипа, там целый букет проблем А можно подробнее о букете? Добавлено через 4 минуты Прототип беспрерывно работает несколько лет. Никаких проблем не заметил... Посилання на коментар Поділитися на інших сайтах More sharing options...
svtkachenko Опубліковано: 18 жовтня 2018 Поділитись Опубліковано: 18 жовтня 2018 Если собираетесь дальше развивать проект, советую побыстрее уйти от атмела-микрочипа, там целый букет проблем Какие проблемы на микрочипе? Самый предсказуемый контроллер, самая лучшая документация. Какие там проблемы? 3 Посилання на коментар Поділитися на інших сайтах More sharing options...
unreal1975 Опубліковано: 18 жовтня 2018 Поділитись Опубліковано: 18 жовтня 2018 А можно подробнее о букете? Добавлено через 4 минуты Прототип беспрерывно работает несколько лет. Никаких проблем не заметил... Из нерешенного- если использовать внутреннюю епром, при отключении питания пишется мусор. А основная проблема в другом - эта атмега как маленький шкафчик - запихиваешь туда вещи, а они с другой стороны вылазят - то флэшка кончится, то быстродействия мало, то выводов не хватает. Голоснул ногами сюда - www.kosmodrom.com.ua/el.php?name=STM32F030C8T6 Куча периферии, флэшки в 2 раза больше, много выводов (если мало, есть такой же с еще больше выводов) и все это стоит ровно в 2 раза дешевле атмеги. И это самая младшая модель семейства 2 Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 18 жовтня 2018 Автор Поділитись Опубліковано: 18 жовтня 2018 А основная проблема в другом - эта атмега как маленький шкафчик - запихиваешь туда вещи, а они с другой стороны вылазят - то флэшка кончится, то быстродействия мало, то выводов не хватает. Ну так это ведь не проблема железа - а проблема, создаваемая неправильным выбором элементарной базы. Посилання на коментар Поділитися на інших сайтах More sharing options...
unreal1975 Опубліковано: 18 жовтня 2018 Поділитись Опубліковано: 18 жовтня 2018 Ну так это ведь не проблема железа - а проблема, создаваемая неправильным выбором элементарной базы. Проект вырос, вначале помещался в atmega88 ) Посилання на коментар Поділитися на інших сайтах More sharing options...
toksoft Опубліковано: 18 жовтня 2018 Поділитись Опубліковано: 18 жовтня 2018 Проект вырос, вначале помещался в atmega88 ) У atmega есть одна замечательная штука, которой нет у Cortex: fuses. Выжег по финалу - и все. Уже вычитать программу практически нереально. Я так и не сумел на Cortex сделать так, чтобы нельзя было вычитать именно firmware. Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 19 жовтня 2018 Автор Поділитись Опубліковано: 19 жовтня 2018 Из нерешенного- если использовать внутреннюю епром, при отключении питания пишется мусор. Теоретически это решить не сложно - но нужно пожертвовать одним аналоговым входом. Суть идеи: Данные пишем только в оперативку. Отслеживается падение напряжения ниже некоторого порога. Как только упало - сбрасываем в еепром. Посилання на коментар Поділитися на інших сайтах More sharing options...
toksoft Опубліковано: 19 жовтня 2018 Поділитись Опубліковано: 19 жовтня 2018 Теоретически это решить не сложно - но нужно пожертвовать одним аналоговым входом. Суть идеи: Данные пишем только в оперативку. Отслеживается падение напряжения ниже некоторого порога. Как только упало - сбрасываем в еепром. Ага, проходили на STM. Только там можно поставить СR2032. Пробовал сохранять без батарейки. Проблемы следующие: 1. Времянка. Можно успеть, а можно и не успеть, в зависимости скажем от того, замкнуты ли контакты реле или нет (они тоже "тянут" некоторый ток). При худших сценариях - мусор в EEPROM. Я сейчас уже не помню как у atmega, но обычно данные пишутся банками (кусочками). Если "сорвались в штопор" при записи банка - то только перепрошивка 2. Нужно не только свопиться в eeprom, но и предусматривать логику работы всей системы (и, кстати, связанных устройств) типа "по настоящему пропало/восстановилось питание", или "не по настоящему". Запрещать например приемку и обработку внешних events 3. Собьются часы на устройстве. Если устройство представляет из себя "автономный кубик", который работает в том числе по расписанию, то это может оказаться неприятным сюрпризом. При разработке, моделирование этих самых пограничных условий - самая трудоемкая и сложная часть, особенно если устройство не автономно, а часть пусть даже микросети. Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 19 жовтня 2018 Автор Поділитись Опубліковано: 19 жовтня 2018 Проблемы следующие:Решаются просто - значит, не проблемы 1. Времянка. Можно успеть, а можно и не успеть, в зависимости скажем от того, замкнуты ли контакты реле или нет (они тоже "тянут" некоторый ток). При худших сценариях - мусор в EEPROM. Я сейчас уже не помню как у atmega, но обычно данные пишутся банками (кусочками). Если "сорвались в штопор" при записи банка - то только перепрошивка Реле нужно питать отдельно от "камня". Заодно и проблема с помехами от катушки исчезает. 2. Нужно не только свопиться в eeprom, но и предусматривать логику работы всей системы (и, кстати, связанных устройств) типа "по настоящему пропало/восстановилось питание", или "не по настоящему". Запрещать например приемку и обработку внешних eventsНу вот сами же и "решили" это "проблему" 3. Собьются часы на устройстве. Если устройство представляет из себя "автономный кубик", который работает в том числе по расписанию, то это может оказаться неприятным сюрпризом.Если критично время - то нужно ставить внутренний аккумулятор/ионистор. При разработке, моделирование этих самых пограничных условий - самая трудоемкая и сложная часть, особенно если устройство не автономно, а часть пусть даже микросети.Да, конечно - тяжело заранее предусмотреть все нестандарные режимы... Но нужно к этому стремиться 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
unreal1975 Опубліковано: 19 жовтня 2018 Поділитись Опубліковано: 19 жовтня 2018 Теоретически это решить не сложно - Решил по другому- внешняя епром, тем более что у СТМ32 внутреннего и нет. На 2 килобайта стоит 3грн Если у вас много релюшек, гляньте ULN2003, очень удобно 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 19 жовтня 2018 Автор Поділитись Опубліковано: 19 жовтня 2018 Если у вас много релюшек, гляньте ULN2003, очень удобно Лучше, если не нужна гальваническая развязка. Если нужна (например, разное питание процессора и катушек реле) - то существую оптроны Дарлингтона (например, MOCD223). Кстати, вместо ULN2003 удобнее использовать ULN2803 - у нее восемь выходов вместо семи. 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
toksoft Опубліковано: 19 жовтня 2018 Поділитись Опубліковано: 19 жовтня 2018 Решил по другому- внешняя епром, тем более что у СТМ32 внутреннего и нет. На 2 килобайта стоит 3грн Если у вас много релюшек, гляньте ULN2003, очень удобно А чем встроенная flash на STM для хранения данных не устраивает ? С 61 по 63 страницу например. Если конечно ваша прошивка все страницы не занимает. Посилання на коментар Поділитися на інших сайтах More sharing options...
y-dom Опубліковано: 20 жовтня 2018 Поділитись Опубліковано: 20 жовтня 2018 А какая предполагаемая стоимость устройства? Как девайс работает с пускателями? Как решается защита от помехи при размыкании катушки? 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
InSAn Опубліковано: 20 жовтня 2018 Автор Поділитись Опубліковано: 20 жовтня 2018 А какая предполагаемая стоимость устройства?Пока не подсчитывал. Но могу точно сказать, что дешевле, чем 8 импульсных реле, которые заменяет данный девайс Как девайс работает с пускателями? Не понял вопроса... Ток потребления пускателя значительно ниже предельного тока реле, установленных в девайсе. Как решается защита от помехи при размыкании катушки?Помехи фильтруются конденсатором. Питание катушек (24В) отделено от основного питания (5В). Посилання на коментар Поділитися на інших сайтах More sharing options...
toksoft Опубліковано: 20 жовтня 2018 Поділитись Опубліковано: 20 жовтня 2018 Помехи фильтруются конденсатором. Питание катушек (24В) отделено от основного питания (5В). InSAn, наверное мои знания безнадежно устарели, но насколько я знаю, такие помехи фильтруются путем диода, включенного в "обратку", параллельно контактам реле. flyback diode. Добавлено через 7 минут А чем встроенная flash на STM для хранения данных не устраивает ? С 61 по 63 страницу например. Если конечно ваша прошивка все страницы не занимает. unreal1975, не поленитесь изучить документацию под кристалл. Он более чем самодостаточный. Если бы у него был WiFi, то у меня бы и мыслей не возникло использовать что-либо иное. У кристалла есть еще RTC memory (SRAM), которая, при наличии батарейки, сохраняет свое состояние даже при пропадании питания. Я понимаю, что даже без понимания концепта, программу написать можно, но она будет крайне "горбатая". Вас пока спасает то, что никто не делал валидацию кода. На всякий случай, если вы не сможете разобраться самостоятельно (пример): void flash_save ( const uint8_t *data, const uint16_t size, const uint32_t offset, const uint8_t page, const bool bErase ) { uint32_t st_address = FLASH_BASE + page * 1024 + offset ; uint32_t val ; if ( bErase ) FLASH_ErasePage ( st_address ) ; for ( uint16_t i = 0 ; i < size ; i += 4 ) { val = *(data+i) ; if ( i+1 < size ) val |= *(data+i+1)<<8 ; else val &= 0x000000ff ; if ( i+2 < size ) val |= *(data+i+2)<<16 ; else val &= 0x0000ffff ; if ( i+3 < size ) val |= *(data+i+3)<<24 ; else val &= 0x00ffffff ; FLASH_ProgramWord ( st_address + i, val ) ; } } Перед и после, нужно не забыть unlock/lock. Посилання на коментар Поділитися на інших сайтах More sharing options...
whisker Опубліковано: 20 жовтня 2018 Поділитись Опубліковано: 20 жовтня 2018 InSAn, наверное мои знания безнадежно устарели, но насколько я знаю, такие помехи фильтруются путем диода, включенного в "обратку", параллельно контактам реле. flyback diode. . От ЭДС самоиндукции включают диод параллельно катушке реле. Параллельно контактам диод не вижу смысла - а если переменный ток через контакты коммутировать ? 2 Посилання на коментар Поділитися на інших сайтах More sharing options...
toksoft Опубліковано: 20 жовтня 2018 Поділитись Опубліковано: 20 жовтня 2018 От ЭДС самоиндукции включают диод параллельно катушке реле. Параллельно контактам диод не вижу смысла - а если переменный ток через контакты коммутировать ? Да, извиняюсь за неправильную формулировку. Конечно же контактам катушки. Это аксиома, не подлежащая обсуждению. Можно еще добавить варистор нужного номинала именно на контакты реле, которые на замыкание. Я обычно не добавляю. Рисовать лениво, нашел схему в google, публикую, чтобы было понятнее: https://www.stroimdom.com.ua/forum/attachment.php?attachmentid=636440&stc=1&d=1540064764 Внимание !!! Данная схема приведена только для того, чтобы было понятно как включать диод. Остальные компоненты схемы могут (и будут) меняться в зависимости от того, какое аппаратное решение вы выберите. Посилання на коментар Поділитися на інших сайтах More sharing options...
toksoft Опубліковано: 20 жовтня 2018 Поділитись Опубліковано: 20 жовтня 2018 (змінено) Ну и "вишенка на торте" для понимания того, почему перед использованием STM, нужно очень хорошо подумать "а оно мне нужно ?" Пример инициализации таймера: void InitializeTimer () { RCC_APB1PeriphClockCmd ( RCC_APB1Periph_TIM2, ENABLE ) ; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure ; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up ; TIM_TimeBaseStructure.TIM_Prescaler = 83 ; TIM_TimeBaseStructure.TIM_Period = 999 ; TIM_TimeBaseInit ( TIM2, &TIM_TimeBaseStructure ) ; TIM_ITConfig ( TIM2, TIM_IT_Update, ENABLE ) ; TIM_Cmd ( TIM2, ENABLE ) ; NVIC_InitTypeDef NVIC_InitStructure ; NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0 ; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1 ; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE ; NVIC_Init ( &NVIC_InitStructure ) ; } Это вам не заботливо подготовленными и достаточно простыми wrappers имени arduino team пользоваться. Тут придется разбираться и кодить по взрослому. Да, кристалл продолжает хранить некоторые данные, и считать время, пока он на батарейке, но посмотрите пожалуйста на фрагмент кода, при помощи которого "это" реализуется (в качестве примера): ... RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN ; PWR->CR |= PWR_CR_DBP ; flash_restore () ; if ( ( RCC->BDCR & RCC_BDCR_RTCEN ) != RCC_BDCR_RTCEN ) { RCC->BDCR |= RCC_BDCR_BDRST ; RCC->BDCR &= ~RCC_BDCR_BDRST ; RCC->BDCR |= RCC_BDCR_RTCEN | RCC_BDCR_RTCSEL_LSE ; RTC->CRL |= RTC_CRL_CNF ; RTC->PRLH = ( 32767&0x000F0000 ) >> 16 ; RTC->PRLL = ( 32767&0x0000FFFF ) ; RTC->CRH &= ~RTC_CRH_SECIE ; RTC->CRL &= ~RTC_CRL_CNF ; RCC->BDCR |= RCC_BDCR_LSEON ; while ( ( RCC->BDCR & RCC_BDCR_LSEON ) != RCC_BDCR_LSEON ) ; while( ( RCC->BDCR & RCC_BDCR_LSERDY ) == 0 ) ; RTC->CRL &= (uint16_t)~RTC_CRL_RSF ; while ( ( RTC->CRL & RTC_CRL_RSF ) != RTC_CRL_RSF ) ; while ( ( RTC->CRL & RTC_CRL_RTOFF ) == 0 ) ; } else { RTC->CRL |= RTC_CRL_CNF ; RTC->CRH &= ~RTC_CRH_SECIE ; RTC->CRL &= ~RTC_CRL_CNF ; } ... Правда все понятно ? "оно" вам нужно такой ценой ? Разработка какого-либо устройства может потребовать немеряно времени и сил. Как результат, стоимость итоговой разработки, станет сравнимой со стоимостью решений, который продают большие компании. Это на счет советов "atmega плохо, STM лучше". Из того, что я видел на "просторах интернета", большинство копипастит функции, которые кто-то писал для себя, для своих сценариев использования. Скопировали, "засунули" в свой код (иногда даже "не оборачивая"), и радуются пока "оно работает". Как только перестает - фсе ... Змінено 20 жовтня 2018 користувачем toksoft 2 Посилання на коментар Поділитися на інших сайтах More sharing options...
unreal1975 Опубліковано: 20 жовтня 2018 Поділитись Опубліковано: 20 жовтня 2018 unreal1975, не поленитесь изучить документацию под кристалл. Он более чем самодостаточный. Если бы у него был WiFi, то у меня бы и мыслей не возникло использовать что-либо иное. У кристалла есть еще RTC memory (SRAM), которая, при наличии батарейки, сохраняет свое состояние даже при пропадании питания. Я понимаю, что даже без понимания концепта, программу написать можно, но она будет крайне "горбатая". Вас пока спасает то, что никто не делал валидацию кода. На всякий случай, если вы не сможете разобраться самостоятельно (пример): Перед и после, нужно не забыть unlock/lock. В 103 серии есть, в 030 нет (RTC). Код проверять никто не будет, так как у меня коммерческие проекты. Выбор внешней ЕПРОМ был обусловлен наличием готового примера в SPL, отсутсвием времени на отладку, да и в дальнейшем эти килобайты могут пригодиться По поводу нужно или не нужно - на stm32 получаются намного более интересные устройства, а через пару месяцев приведенные выше простыни перестают впечатлять особенно видно разницу если вы попытаетесь на авр застартовать ТФТ экранчик, хоть бы 2.4. Я тут выкладывал ссылку в теме про ардуино Зы если хотите об этом поговорить, давайте запилим отдельной темой 1 Посилання на коментар Поділитися на інших сайтах More sharing options...
Рекомендовані повідомлення
Створіть акаунт або увійдіть у нього для коментування
Ви маєте бути користувачем, щоб залишити коментар
Створити акаунт
Зареєструйтеся для отримання акаунта. Це просто!
Зареєструвати акаунтУвійти
Вже зареєстровані? Увійдіть тут.
Увійти зараз