Easyelectronics.ru

Электроника для всех
Текущее время: 22 сен 2019, 19:30

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Обманул судьбу :) или свой модбас с приколюхами...
СообщениеДобавлено: 31 янв 2018, 19:40 
Старожил

Зарегистрирован: 16 окт 2013, 01:27
Сообщения: 1089
Привет!

Итак дано контроллер STM8S003 + MAX485 .
Надо было решить вопрос с просыпанием устройства для приема данных, устройств таких на линии может быть до 16 штук, ну и основной прикол в том, что некоторые из них с батарейным питанием

Долго думал как же выйти из положения, так как 99,9% времени все это должно спать и передавать показания один раз в час, а у STM8S003 - RTC нет, да и один черт синхронизация была нужна.
В общем выход из положения был найден изменением протокола обмена и смещением временных характеристик AWU.

В режиме HALT прерывания по приему данных UART невозможны так как нет тактирования и вообще он мертв когда контроллер спит, был выдуман костыль :)

Сервер перед началом "раздачи пирожков\получением денег за пирожки" давит линию на землю в течении 2х секунд (это своего рода преамбула для всех устройств на линии - "рота подьем".

На устройствах:
Время AWU было уменьшено с 30 сек до 1 сек, прерывания на выводе RX (PD6) было отключено за ненадобностью (раньше когда был обмен чисто по UART это работало нормально но тогда на линии было всего одно устройство)

Итак выходим из HALT только для того чтобы дернуть вывод RE MAX485 и посмотреть что у нас там на выводе RO и PD6 - если есть сигнал это говорит о том, что сервак шлет преамбулу и надо готовиться к приему данных, ждем 30 секунд если данных нема - уходим опять в спячку.

Прием и адресация устройсв:
Сам протокол обмена - обрубок MODBUS ASCII, та же самая последовательность 0x3A - Старт, 0x0D,0x0A - окончание передачи

Сбор данных серваком:
Шлем: START + ххх +YYY +ZZZ +END
где xxx - адрес устройства.
yyy - команда
ZZZ - CRC

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

Ответ устройства: START - xxx - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ZZZ +END
XXX - адрес устройства
ZZZ - СRC
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - данные (от 60 до 128 байт)


Устройство которое уже ответило уходит в HALT на 30 сек (отмучился уступи место другому)

Присвоение номеров устройствам - это отдельная песня :) так как они монтируются без настройки и их нужно перед вводом сети в эксплуатацию все сбросить и пронумеровать.

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

Т.е. сервак дает команнду счет - кто первый ?
На первом устройстве снимаем перемычку, устройство кричит серваку я номер один, сервак отвечает принято, кто второй и т.д.

P\S пока собрал одну платку вроде общаются они с серваком без потерь данных, жду с нетерпением когда можно будет остальных зацепить на линию, думаю тогда то и начнут вылазить косяки...
Попутно думаю что туда еще прикрутить, свободной памяти в контроллере осталось 2 кб.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обманул судьбу :) или свой модбас с приколюхами...
СообщениеДобавлено: 10 фев 2018, 20:10 
Старожил

Зарегистрирован: 15 янв 2018, 18:52
Сообщения: 854
а причем здесь модбас?)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB