Наша цель: Сама эта библиотека Програмный логистический центр PLCОна разработана для того, чтобы вы могли создавать свои собственные устройства. Она предоставляет вам высочайший уровень контроля над оборудованием. Фульматический СОФТ Цель — создать экосистему устройств, которые можно программировать с помощью этой обширной библиотеки. Вы можете использовать эту библиотеку с любым чипом и IDE по вашему желанию. Вы можете самостоятельно определить принципиальную схему и все остальные аппаратные характеристики.
Фулматик СОФТ: Добавьте библиотеку Fulmatic Core в код вашего микросхемы в соответствии с инструкциями, и теперь вы можете запускать свои встраиваемые системы. Фульматический СОФТ с лестница (МЭК 61131-3Программа на языке ( ). Фульматический СОФТ В дополнение ко всем функциям современных ПЛК, он предложит вам гораздо больше, чем просто ПЛК, с командами TCP, UDP, Motion и SD Card. Благодаря 771 блоку (255 DB, 256 PB, 256 FB и 4 OB) и 16384 входам/выходам, Fulmatic SOFT предоставляет вам огромный объем пространства.
Бесплатная прошивка для ПЛК: Програмный логистический центр PLC Вы можете бесплатно использовать библиотеку объемом до 2048 байт (1026 байт используется DB0). При необходимости большего объема памяти потребуется лицензия. (10 USD) Необходимо приобрести лицензию. Без лицензии ПЛК будет работать 60 минут. Наша прозрачная модель лицензирования не предполагает заключения контрактов или сложных процедур. Вам необходимо добавить микросхему TSHA204A-SSHDA в вашу схему. Ключ будет предоставлен вам после приобретения лицензии. Заявление на получение лицензии Этот ключ подключится к нашему серверу и загрузит лицензионный код в чип через последовательный порт или Ethernet. При этом количество лицензий на сервере будет уменьшаться.
Github: Програмный логистический центр PLC Для тестирования библиотеки вы можете загрузить наш пример проекта, подготовленный для STM32F407VGTx и работающий с VS Code, с GitHub. https://github.com/FultekPLC/Plc-Firmware
В этом проекте вы увидите полную прошивку ПЛК, использующую практически все возможности микросхемы, доступную в виде открытого исходного кода. Кубик MX Вы можете изменять аппаратные характеристики микросхемы с помощью программного обеспечения и продолжать работу над тем же проектом. Вы можете изменять аппаратные характеристики и программное обеспечение с помощью VS Code. Вы можете добавлять пользовательские функции в прошивку ПЛК и... Програмный логистический центр PLC Вы можете запускать код изнутри. Вы можете использовать любую марку и модель ARM-чипа, а также указывать количество и типы ввода-вывода. Вкратце, вы можете использовать библиотеку Fulmatic Core без каких-либо ограничений, в соответствии с условиями лицензии.
Обновление прошивки: Ваши клиенты, которые используют ваш продукт Програмный логистический центр PLC Обновление прошивки можно выполнить с помощью Fulmatic SOFT. Код обновления прошивки ПЛК полностью открыт, и вы можете просмотреть и изменить код загрузчика в примере проекта. Помимо предложенного нами кода, вы можете написать свой собственный код загрузчика.



Руководство по коду
256 KB Мы работаем над тем, чтобы сделать пример проекта максимально удобным для вас. 256 КБ кода для микросхемы — это довольно большой проект. Понимание, модификация и реализация проекта такого размера будут непростой задачей. Мы постарались объяснить функции на этой странице и в коде. Мы также работаем над тем, чтобы объяснить их лучше. Мы постараемся ответить на ваши вопросы в разделе обсуждений нашего репозитория на Github. К сожалению, мы не предоставляем бесплатную поддержку для Fulmatic Core. Вы можете запросить у нас коммерческое предложение на выполнение всех процессов от вашего имени, включая проектирование печатных плат.
Вы можете скачать пример проекта по ссылке на нашем Github: https://github.com/FultekPLC/Plc-Firmware В примере проекта вы можете просмотреть и изменить все функции ПЛК, используя код с открытым исходным кодом. Вы можете удалить ненужные функции и добавить новые.
Всю информацию об IDE и инструментах сборки вы найдете в нашем репозитории на GitHub. На этой странице мы расскажем о функциях, используемых для интеграции библиотек с вашим кодом для микроконтроллеров.
FulmaticConfig.h
В этом файле задаются параметры версии прошивки и размера строки.
FulmaticCore.h
Этот файл содержит заголовочные файлы функций библиотеки, которые вы будете вызывать из кода вашего микроконтроллера. В этом файле вы найдете описания всех функций. Библиотека работает со множеством переменных и строк. Вам необходимо создать эти строки и переменные в коде вашего микроконтроллера. Структура `variables_TypeDef` используется для передачи созданных вами переменных в библиотеку. Вы не можете изменять эту структуру.
FulmaticInitЧип необходимо активировать только один раз при первом включении. Если возвращается значение 1, это означает, что лицензионный чип был считан корректно и работает по лицензии.
FulmaticExecute: внутри main.c Лестница ПЛК Это функция, вызываемая для выполнения кода. Она вызывается во время блока запуска (когда ПЛК запускается), основного блока (на каждом цикле), блока завершения (когда ПЛК останавливается), а также при возникновении прерывания от цифрового входа в файле Interrput.c и при возникновении прерывания по времени (таймера) в файле Fulmatic.c.
Фулматик.с
Все функции, необходимые для использования библиотеки в вашем коде, собраны в файле Fulmatic.c. Этот файл содержит разветвления на другие файлы. Мы группируем функции по четырем разделам. Описание функций находится в файле, где расположено тело функции.
- Функции, необходимые для примера проекта, но не используемые библиотекой.
- Функции, используемые библиотекой, которые необходимо включить в ваш код.
- Функции, используемые библиотекой в целях лицензирования. Функции, не требуемые для использования без лицензии.
- Функционал библиотеки зависит от используемых команд ПЛК. Например, если в вашем ПЛК не используются такие операции, как TCP, UDP, SPI, последовательный порт и SD-карта, библиотека будет работать без этих функций.
_DefaultEprom: В Fulmatic SOFT можно выбрать следующие параметры оборудования: PlcSetupEprom[STPMEMORYSIZE] и лестница Код хранится в массивах PlcEprom[PRGMEMORYSIZE]. Функция _DefaultEprom в этом файле содержит настройки ПЛК по умолчанию. Вы можете в определенной степени настроить конфигурацию, используя эти массивы в своем коде.
Каждая миллисекунда: Эта функция, выполняющаяся каждую миллисекунду, запускается из основного файла и библиотеки. В примере проекта флаги устанавливаются с помощью TIM7_IRQHandler в файле Interrupt.c, а не запускаются напрямую. Кроме того, значение TIM7->ARR калибруется с помощью RTC. Пожалуйста, изучите функцию _RtcCalibration в файле Fulmatic.c. Неправильная калибровка приведет к тому, что все операции, основанные на времени, в ПЛК будут выполняться с незначительными ошибками.
_DelayUs: Возможно, потребуется изменить код, чтобы обеспечить его точную калибровку под частоту микросхемы. Следует проводить тестирование и калибровку в течение длительного периода времени. Код откалиброван для частоты 168 МГц.
_SetOutputs: Обычно входные данные считываются, а выходные записываются в файле main.c. Однако при возникновении временных или цифровых входных прерываний срабатывает блок прерываний OB2. Затем это прерывание вызывается из библиотеки для установки выходных значений без задержки.
_GetMsTimerCount: Он используется для измерения времени во многих процессах. Его необходимо включить в ваш код. Вы должны разрешить чтение значения таймера с интервалом в одну миллисекунду.
_CrcCalculate: Он используется для вычисления контрольных сумм с помощью аппаратных средств. Необходимо убедиться, что он работает корректно в зависимости от используемого чипа.
Communication.c
Этот файл содержит необходимый код для использования Ethernet, последовательного порта и SPI в ПЛК. В этом файле принимаются вызовы Modbus и Fulmatic SOFT. Согласованность данных обеспечивается за счет инициирования ответа с задержкой из файла main.c. Кроме того, в этом файле явно прописан код обновления прошивки и работы с SD-картой. Fulmatic SOFT выполняет обновления прошивки и операции с SD-картой, используя этот код. Вы можете модифицировать этот код для выполнения аналогичных операций с вашим собственным программным обеспечением вместо Fulmatic SOFT. Другие операции Fulmatic SOFT и Modbus отправляются в библиотеку и обрабатываются ею через этот код. Модифицировав код, вы также можете отвечать на вызовы Modbus, не отправляя их в библиотеку.
Flash.c
При выключении ПЛК код ПЛК и информация о постоянном таймере-счетчике сохраняются во флэш-памяти. При повторном включении ПЛК считывается последний сохраненный код из файла flash.h. Не забудьте установить информацию о секторах используемой микросхемы. Для определения момента выключения ПЛК можно использовать следующую схему.

Эта схема установит низкий уровень на выводе Shutdown Detect, когда напряжение упадет с 24 вольт до приблизительно 19 вольт. Конденсатор C1 позволяет микросхеме продолжать работу в течение короткого времени. В течение этого длительного периода стирание и перезапись флэш-памяти сопряжены с риском. Поэтому необходимо выполнить следующие шаги.
- При первом включении ПЛК мы копируем данные из сектора 10 в сектор 11. Если питание прерывается во время запуска, неповрежденные данные сохраняются в секторе 11.
- Для сохранения новых данных во флэш-память сначала необходимо её удалить. Удаление занимает гораздо больше времени, чем сохранение. Поэтому мы удаляем сектор 10 при запуске и ждём завершения работы.
- Схема обнаружения отключения дает нам чуть более 1 секунды времени. При обнаружении отключения данные сохраняются в сектор 10 в течение 100-200 мс. Поскольку блок отключения OB 1 будет выполняться до отключения, и в ПЛК может содержаться большой лестничный код, емкость конденсатора C1 должна составлять не менее 2200 мкФ. Для предотвращения скачков напряжения в цепи из-за большой емкости используется токоограничивающий резистор сопротивлением 100 Ом.
- При запуске ПЛК считывает все данные из сектора 10 и выполняет проверку контрольной суммы. Если во время запуска ПЛК произойдет прерывание питания, проверка контрольной суммы завершится неудачей. Не паникуйте, надежные данные всегда доступны в секторе 11. Запуск осуществляется автоматически из сектора 11.
Прерывание.c
В этом файле находятся прерывания для цифрового входа, АЦП, таймера и UART. Они включаются и выключаются в зависимости от режима работы ПЛК в функции _INTSetup внутри файла Fulmatic.c. Не забудьте адаптировать код _INTSetup к вашему оборудованию. Функции в этом файле должны выполняться быстро. В нашем примере кода мы использовали команду switch для повышения читаемости кода. Однако есть способы ускорить его выполнение. Например, операции внутри команды switch можно вывести в виде отдельных функций.
- void Handle_Encoder(void)
- void (*EXTI0_Handler_Ptr)(void);
- В зависимости от выбора, сделанного с помощью Fulmatic SOFT в INTSetup: EXTI0_Handler_Ptr = Handle_Encoder;
- При возникновении прерывания: запустите функцию EXTI0_Handler_Ptr() внутри функции EXTI0_IRQHandler.
Ещё один метод ускорения — преобразование байтов в 32-битные. Для серии STM можно использовать следующий код: *(int32_t *)&PlcIO[EncIAdr[0]] = __rev(ValueS32);
Не следует использовать библиотеку HAL для сброса флагов прерываний. Вместо этого следует предпочесть более быстрый метод прямого изменения значения регистра. TIM3->SR = 0; //__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
Цифровые входные прерывания: Он используется в высокоскоростных счетчиках, энкодерах и аналогичных устройствах.
АЦП: Мы не используем DMA; операции чтения с АЦП выполняются внутри прерывания. Это позволяет нам выполнять операции фильтрации.
Таймер: Мы используем его для миллисекундного таймера и выходов PTO. Недостаточно, чтобы таймер просто прерывал работу каждую миллисекунду; он также должен считать от 0 до 999.
УСАРТ: Прерывания последовательного порта используются для передачи и приема данных. Кроме того, в файле Fulmatic.c -> _EachMilliSecond описаны операции с выводом разрешения RS485.
SD-карта.c
В этом файле выполняются операции с SD-картой. Вы также можете сделать это иначе, чем в нашем примере проекта. Коды связи для загрузки или скачивания файлов на ПЛК написаны в открытом доступе в файле Communication.c. Вы можете загружать и скачивать файлы с помощью Fulmatic SOFT. Если в вашем проекте нет SD-карты, вы можете удалить все функции.
main.c
Этот файл будет изменяться каждый раз, когда вы сохраняете проект в Cube MX. Чтобы ваши команды оставались неизменными, необходимо писать код в областях, зарезервированных для вашего кода в Cube MX. /* НАЧАЛО ПОЛЬЗОВАТЕЛЬСКОГО КОДА 2 */ Напишите свой код здесь. /* КОНЕЦ ПОЛЬЗОВАТЕЛЬСКОГО КОДА 2 */
В этом файле можно создать все необходимые для библиотеки переменные. Возможно, вам потребуется создать большие массивы по определенному адресу. `uint8_t PlcEprom[PRGMEMORYSIZE] __attribute__((section(“.ccmram”))));`
Внимательно изучите операции внутри цикла while. Любые внесенные вами изменения не должны нарушать общую структуру. Код, написанный в других частях вашей программы, не должен замедлять этот цикл.
