Здравствуйте, коллеги. Думаю, что пришло время начать серию занимательных постов о том, как я принимаю участи в разработке ПЛК, с какими трудностями мы сталкиваемся в процессе и как все это решается.
Для начала немного о ПЛК. 8 DO, 16 универсальных входов, которые определяются будут они аналоговыми или дискретными во время сборки, GSM модем, SD карта. ОС: FreeRTOS, размер памяти для программы 256 кбайт, RETAIN память 4кб, интерфейсных портов 2xRS - 485, 1-Eth.
Из интересных особенностей. Без ППО является удаленным модулем ввода вывода, также может использоваться как преобразователь интерфейсов eth-rs485 и поддерживает такую вещь как ModbusRTU over TCP или ASCII over ModbusTCP. Есть возможность такой страшной функции как CI/CD, работает git так как все файлы текстовые.
А дальше начинается творчество. Так как разработка всего инструментария с нуля - дело долгое, дорогое и ненужное на первых парах, то за основу командой был взят рантайм YAPLC, ну и соответственно средой разработки стала YAPLC-IDE, интерпретатор для проекта matiec, компилятор gcc. Этого набора вполне хватило для начала работы. Первым делом, требовалось запустить RTE под FreeRTOS, так как по мимо RTE там еще много разных задач, которые тоже должны работать, но это вне компетенций среды исполнения. Следующим шагом стала разработка утилиты, которая бы являлась загрузчиком ППО. Для этого системным программистом был написан бутлоадер и разработан протокол загрузки, второй программист разработал саму утилиту, которая представлена в двух вариантах - GUI и CLI. Разумеется упор делается на CLI и в целом работу в консоли, так как это быстрее, легче и кроссплотформенее.
Следующим открытием стало то, что переменная, которая в ППО занимает 1 байт, для СПО занимает чуток по больше, так как при компиляции превращается в структуру, стоит ли говорить, что я скушал память отведенную мне для ППО, очень быстро, после чего ее пришлось расширять, а сейчас в планах заменить МК, чтобы еще немного расширить память для ППО.
Далее в планах подключить блоки расширения, для программирования на ST использовать VSCode, ну и немного расширить стандартную библиотеку
Post #551
1.11K
- 🔥 12
- 👍 6
- ⚡ 2