Встраиваемое ПО для контроллера подачи/отпуска питьевой воды

 

Заказчик

Общество с ограниченной ответственностью "Научно-производственная фирма Сапфир"

 

Проект

Разработка встраиваемого ПО для контроллера управления подачей/отпуском воды на базе 32-разрядного микроконтроллера STM32F103RB

 

Цели и задачи

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

  1. Контроль наличия/отсутствия воды
  2. Непрерывный опрос состояния купюроприёмника и монетоприёмника по протоколу CashCode CCNET
  3. Отпуск воды в соответствии с внесённой клиентом денежной суммой
  4. Сохранение всех транзакций, а также каких-либо вдруг возникших внештатных ситуаций в журнале на SD-карте

 

Решение

Выполнение работы можно условно разделить на два этапа: 

Первый этап: 

В течение периода времени, пока выполнялась разработка печатной платы будущего устройства, разработка ПО осуществлялась с использованием отладочной платы STM32-H103. На данной плате, в первую очередь, была запущена операционная система FreeRTOS 7.0.1, отлажен код для отображения информации на символьном ЖКИ размерами 40 столбцов х 4 строки, добавлена возможность журналирования всех событий в файл на SD-карте через SPI-интерфейс. 
К моменту завершения работы над данными задачами купюроприёмник ещё "не приехал" от заказчиков. Учитывая стоимость подобного класса устройств, было принято решение сымитировать работу купюроприёмника в соответствии со спецификациями CashCode CCNET. В результате, появился кроссплатформенный многопоточный симулятор работы купюроприёмника, написанный на Python + PySide. Отладка симулятора осуществлялась преимущественно в ОС Linux, тем не менее ошибок/странностей в работе под ОС Windows замечено пока не было. 
Отлаженный симулятор CashCode ССNET, в свою очередь, был задействован для создания части ПО для микроконтроллера, ответственной за опрос купюроприёмника. 

Второй этап: 

К моменту завершения сборки печатной платы продукта появился и купюроприёмник CashCode SM. Портирование ПО, разработанного во время первого этапа, на новую плату заняло, с учётом поиска и устранения всех аппаратных ньюансов и ошибок, 3 рабочих дня. Переход с симулятора CashCode на настоящий купюроприёмник потребовал ещё 1 день - ошибки всплыли не в симуляторе, а в прошивке микроконтроллера. 

Разработка ПО для микроконтроллера на всех этапах работы выполнялась с использованием оригинального SEGGER J-LINK, в среде разработки Eclipse с добавленными расширениями CDT + OpenOCD. Компилятор/Ассемблер/Компоновщик - от Mentor Graphics/CodeSourcery. Система контроля версий - subversion. 
 

Результаты

  • Запуск операционной системы реального времени FreeRTOS 7.0.1 на целевой плате.
  • Добавление кода для отображения информации на символьном ЖКИ размерами 40 столбцов х 4 строки.
  • Разработка и отладка кода для управления и считывания информации с купюроприёмников по протоколу CashCode CCNET
  • Добавление кода для поддержки часов реального времени
  • Добавление кода для взаимодействие с SD-картами через SPI-интерфейс
  • Добавление поддержки файловой системы FAT в реализации FatFS
© ООО "Контроль-В" 2012 - 2018