Добрый день! Начинаю осваиваться в программировании контроллеров stm32. В данный момент начинаю проект. Вкратце, Управление нагрузкой (нагревательные элементы) обратная связь по термодатчику и датчику давления (2 канала АЦП), обмен данными с компьютером по USB-HID (протокол обмена modbus), вывод отчета о завершении процесса нагрева на термопринтер по ком порту.
Вот не знаю как подступиться к проекту, пока заказал отладочную плату STM32-P103, с stm32f103. Изучил протокол команд принтера, побаловался с ним через терминал, поотправлял команды, напечатал примерный отчет. Придет плата, буду пробовать отправлять через UART. Больший вопрос возникает с usb и modbus. Открыл почитать про протокол, ужаснулся, в голове полная каша. Может кто-нибудь подсказать, как к этому подступиться? Я так понял, что modbus в основном используют с rs232 и 485, но по сути разницы никакой нет же и это и USB - последовательные интерфейсы или я не прав?
ModBus просто регламентирует набор команд и последовательность байт внутри них. Физически вообще может использоваться любой интерфейс, чаще всего действительно RSxxx.
Я так понимаю, что плата будет подключена к ПК по USB - в этой цепочке использовать ModBus, в принципе, нет смысла. А как плата будет подключена к принтеру - это уже зависит от того, какой интерфейс поддерживает принтер.
А почему нет смысла? Я просто немного путаюсь с интерфейсами и протоколами, то есть, если я буду разрабатывать именно железо, а на ПК обеспечение будет писать уже другой человек, то нам же нужен один протокол, чтобы наши устройства коммутировали? У принтера я уже разобрался с форматом команд и тд и тп, попробовал попечатать уже из под терминала на винде по ком порту.
Я правильно понял, что микроконтроллер будет управлять принтером, получая команды с ПК?
Тогда просто проще сделать свой собственный протокол для передачи данных с ПК на плату, а микроконтроллер уже будет формировать MODBUS посылки.
А с другой стороны, зачем в данной цепи вообще микроконтроллер? Можно просто на ПК сделать приложение, которое будет напрямую на принтер отправлять команды. Если контроллер будет дополнительные измерения проводить, то опять же проще на нем проводить только измерения и отправку значений, а с принтером общаться напрямую с ПК.
Нет вы немного не правильно поняли. Попробую объяснить суть поподробнее: у меня есть плата управления мощной нагрузкой, пускай, к примеру, магнетронами. Она работает автономно, без подключения к ПК. Есть небольшой интерфейс для пользователя, дисплей, и пара кнопок, он может выбрать некую программу работы. К примеру, нагрев до 100 градусов, за 5 минут, либо более медный прогрев за 10 минут либо любая другая. Отслеживание параметров нагрева, происходит с помощью датчиков температуры и давления (2 канала АЦП). По удачному/неудачному завершению программы, МК формирует отчет, который передается по UART->RS232 на этикеточный термопринтер. Для отладки же и модификации новых программ мы используем ПК. То есть с ПК мы можем посмотреть графики температуры/давления от времени, чтобы оценить работу программы. Поменять коэффициенты ПИД регулятора. Закинуть новый формат отчета к примеру стандартный отчет: 1 строка - название организации, 2 строка - время окончания программы, 3 - успешно/не успешно. Время - печатает сам принтер (у него часы реального времени есть). 3 строку определяет МК. А вот первая строка будет меняться. Например мы знаем что устройство будет работать в определенном цеху, подключаемся к ПК, через программу меняем значение переменной в МК на "Цех 1". По ТЗ уточнил, от меня хотят чтобы я сделал uart-usb преобразователь (благо микрух типа СP2102 полно) и организовал протокол модбас, для общения с ПК, на ПК программу писать будет совершенно другой человек.
Теперь все понятно =)