kolos450

Модульный программируемый контроллер KPLC

12 повідомлень у цій темі

Привет! Для оживления старого оборудования мне понадобился ПЛК на 64 дискретных входа и 32 выхода, разнесённых в пространстве. Такой, чтобы его можно было программировать на языках общего назначения. На рынке есть подходящие решения, но они имеют высокую стоимость. Поэтому разработал свою платформу. Материал свободный, может использоваться в любых целях.

 

В пилотном комплекте такие компоненты:

  • головной модуль с блоком питания;
  • модуль с 24 оптоизолированными дискретными входами;
  • модуль с 20 оптоизолированными дискретными выходами на 1.85 А;
  • модуль с 24 дискретными входами, 14 выходами и своим блоком питания.

 

Номинальное входное напряжение модулей - 24 VDC.
Головной модуль работает на STM32, остальные - на AVR8.
Модули связаны посредством UAVCAN поверх CAN.
Размер печатных плат составляет 100x100 миллиметров.
Модули могут объединяться стойками в блоки. В этом случае обмен данными и подача питания обеспечиваются через плоскую шину.
Головной модуль содержит разъём DE-9 для подключения удалённых модулей.
Модули ввода и вывода имеют светодиодную индикацию для каждого порта. У всех модулей присутствует светодиод для индикации статуса и ошибок.

 

IMG_3401.JPG

IMG_3403.JPG

 

KPLC Main Module
Из явных недоработок - не хватает реле для разрыва цепи безопасности в случае возникновения ошибок.
IMG_3413.JPG
Схема: http://uavcan.net/static/KPLC/Pub/Main/SCH_KPLC_Main_Module_v1.1.pdf
Печатная плата: http://uavcan.net/static/KPLC/Pub/Main/PCB_KPLC_Main_Module_v1.1.zip
BOM: http://uavcan.net/static/KPLC/Pub/Main/BOM_KPLC_Main_Module_v1.1.csv

 

KPLC DO-OE-24x20 Module
Модуль дискретных выходов для управления потребителями постоянного тока. 24 VDC, 1.85 A, 20 портов. Переключению подвергается положительный потенциал. Порты защищены варисторами и самовосстанавливащимися предохранителями.

DO.png

IMG_3412.JPG

Схема: http://uavcan.net/static/KPLC/Pub/DO-OE-24x20/SCH_KPLC_DO-OE-24x20_Module_v1.0.pdf
Печатная плата: http://uavcan.net/static/KPLC/Pub/DO-OE-24x20/PCB_KPLC_DO-OE-24x20_Module_v1.0.zip
BOM: http://uavcan.net/static/KPLC/Pub/DO-OE-24x20/BOM_KPLC_DO-OE-24x20_Module_v1.0.csv

 

KPLC DI-24x24 Module
Модуль дискретных входов для подключения датчиков с выходом 24 VDC, 24 порта.

DI.png

IMG_3411.JPG

Схема: http://uavcan.net/static/KPLC/Pub/DI-24x24/SCH_KPLC_DI-24x24_Module_v1.0.pdf
Печатная плата: http://uavcan.net/static/KPLC/Pub/DI-24x24/PCB_KPLC_DI-24x24_Module_v1.0.zip
BOM: http://uavcan.net/static/KPLC/Pub/DI-24x24/BOM_KPLC_DI-24x24_Module_v1.0.csv

 

KPLC SW-24/14 Module
Модуль дискретных входов и выходов без гальванической развязки для пультов управления. Имеет 24 входа и 14 выходов типа открытый коллектор на 24 VDC, 500 mA без защиты.

SW.png

IMG_3406.JPG

Схема: http://uavcan.net/static/KPLC/Pub/SW-24-14/SCH_KPLC_SW-24-14_Module_v1.0.pdf
Печатная плата: http://uavcan.net/static/KPLC/Pub/SW-24-14/PCB_KPLC_SW-24-14_Module_v1.0.zip
BOM: http://uavcan.net/static/KPLC/Pub/SW-24-14/BOM_KPLC_SW-24-14_Module_v1.0.csv

15

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Впечатляет. 

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Жаль только что уровень входа в программирование STM32 высок.

 

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

В якому софті робиться прошивка?

Прошивку мк самі писали?

FBD підтримує?

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах
7 минут назад, softm сказал:

 

Я вас умоляю... а куда он не высок.

  

  По сравнению, с средами программирования плк вроде сименс и митсубиси, конечно высок. Но с другой стороны, я с моими 3мя курсами хпи спокойно с этим разбираюсь. И ничего особо сложного не вижу. Но возможности такого устройства мне честно говоря очень нравятся пиши, что хочешь :-)

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

и мне очень понравилось, скоро придется менять автоматику на 24к40сф401.

там стоит логика-м, пора ей на пенсию, так вот подбираю варианты

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах
6 часов назад, doska сказал:

Жаль только что уровень входа в программирование STM32 высок

Посмотрите на STM32CubeMX. Этот инструмент делает процесс конфигурации элементарным.
Первая версия головного модуля была на AVR8, но не хватило ни памяти, ни производительности. Если хотите, у меня остался этот проект, могу вам прислать.

 

Кстати, на головном модуле есть нераспаянная гребёнка для элемента U3. Это место для Banana Pi BPI-M2 Zero на случай, если понадобится ещё больше возможностей. Но конкретно этот одноплатный компьютер я не рекомендую, поддержка производителя в плане софта фактически отсутствует. Linux kernel доступен только версии 3.4, из коробки SPI работает только в режиме bit-banging. Лучше применить Raspberry Pi Zero или даже BeagleBone Black Industrial.

 

6 часов назад, alex_Z сказал:

FBD підтримує?

Сейчас поддержки графических языков программирования нет. Возможно, в будущем прикручу поддержку системы команд Mitsubishi FX2N, OpenPLC или что-нибудь ещё.
Прошивки для ведомых модулей готовы к публикации, а для головного модуля ещё нужно продумать API.

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах
В 10.12.2019 в 15:19, kolos450 сказал:

Посмотрите на STM32CubeMX. Этот инструмент делает процесс конфигурации элементарным.

так, процес дійсно дуже зручний, можна піти ще трохи далі та зразу поставити STM32CubeIDE
там зразу все в одному, ось посилання
 https://www.st.com/en/development-tools/stm32cubeide.html

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Программное обеспечение

 

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

 

DI-24x24
Расположение выводов:
Pinout_DI-24x24.png
Прошивка: http://uavcan.net/static/KPLC/Pub/DI-24x24/firmware_latest

Фьюзы: Low = 0xFF, High = 0xC9.

 

DO-OE-24x20
Расположение выводов:
Pinout_DO-OE-24x20.png
Прошивка: http://uavcan.net/static/KPLC/Pub/DO-OE-24x20/firmware_latest

Фьюзы: Low = 0xFF, High = 0xC9.

 

SW-24/14
Расположение выводов:
Pinout_SW-24-14.png
Прошивка: http://uavcan.net/static/KPLC/Pub/SW-24-14/firmware_latest

Фьюзы: Low = 0xFF, High = 0xC9.

 

Головной модуль

Прошивку для главного модуля нужно сгенерировать.
Генератор: http://uavcan.net/static/KPLC/Pub/SW-24-14/Kplc.MainModule.Builder_latest
Требования для запуска:

Для генерации нужно подготовить файл карты портов и файл с уравнениями.

 

Файл карты портов

Это XML-файл, в котором описаны все устройства, учавствующие в системе, их типы, сетевые идентификаторы и назначение портов.

Пример:

<Kplc.IOMap>
  <Device>
    <Type>SW-24/14</Type>
    <Id>5</Id>
    <Pins>
      <!-- Inputs -->
      <Pin number="01" value="SomeVariableA" />
      ...
      <Pin number="24" value="" />
      <!-- Outputs -->
      <Pin number="25" value="SomeVariableB" />
      ...
      <Pin number="38" value="" />
    </Pins>
  </Device>
  <Device>
    <Type>DI-24x24</Type>
    <Id>3</Id>
    <Pins>
      <Pin number="01" value="SomeVariableB" />
      ...
      <Pin number="23" value="True" />
      <Pin number="24" value="0" />
    </Pins>
  </Device>
</Kplc.IOMap>

В примере должны присутствовать два устройства: SW-24/14 под номером 5 и DI-24x24 под номером 3.
Значения пинов могут быть не указаны, тогда к их состоянию нельзя будет обратиться.
Если двум пинам присвоено одно значение, их состояние будет синхронизировано.

 

Шаблоны для устройств:
DO-OE-24x20: http://uavcan.net/static/KPLC/Pub/DO-OE-24x20/BoolsysTemplate_DO-OE-24x20.xml
DI-24x24: http://uavcan.net/static/KPLC/Pub/DI-24x24/BoolsysTemplate_DI-24x24.xml
SW-24/14: http://uavcan.net/static/KPLC/Pub/SW-24-14/BoolsysTemplate_SW-24-14.xml

 

Файл с уравнениями

Этот файл описывает поведение системы в целом с помощью системы уравнений.
Каждое уравнение должно иметь вид X_i = F(X_1, ..., X_n);
Одна переменная слева от знака присвоения и произвольное выражение справа, заканчивающееся точкой с запятой.
Поддерживаемые операции:

  • & - логическое И;
  • | - логическое ИЛИ;
  • ! - логическое НЕ;
  • Delay(X_i, ms) - задержка положительного значения переменной X_i на указанное количество миллисекунд.

Пример программы "Бегущий огонь" на три вывода (O1, O2, O3):

_O1 = !_F;
_O2 = Delay(_O1, 500);
_O3 = Delay(_O2, 500);
_F = Delay(_O3, 500);
O1 = _O25 & !_O26;
O2 = _O26 & !_O27;
O3 = _O38;

Построение прошивки

После того, как входные файлы готовы, можно сгенерировать прошивку. Для этого нужно запустить скрипт build.cmd.
Стандарные пути для входных файлов:

  • source\IOMap.xml
  • source\Equations.txt

Стандартный путь для файла прошивки:

  • publish\Kplc.MainModule.bin

Также нужные пути можно указать опциями при запуске build.cmd.
Если ошибок при построении не возникнет, будет сгенерирован файл с прошивкой, который уже можно залить в главный модуль.

 

После успешной инициализации система переходит в режим работы, исполняя программу, которая описывается системой уравнений.

При возникновении какой-либо ошибки в любом из модулей все устройства системы переходят в режим ошибки. Светодиод модуля сигнализирует код ошибки, порты вывода переводятся в неактивное состояние.

Змінено користувачем kolos450
3

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

крутяк

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Хмм. Для простих логічних задач використовуючи сіменс лого. За 200 у. О можна отримати 24 вхлди і 16 виходів. І просте, надійне і перевірене середовище програмування.... 

Тут звичайно можливостей більше, десь як у 1200 серії сіменса. Хоча писати тсамомому під регулятори і зчитувати імпльсні входи ще певно та задачка... 

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Есть вот такие монстрики по весьма доступным (как для ПЛК) ценам:

https://www.automationdirect.com/adc/shopping/catalog/programmable_controllers/click_series_plcs_(stackable_micro_brick)/plc_units

Софт бесплатный. 

 

Но автор, конечно, крут! Всегда завидовал таким людям - у меня на такое усидчивости не хватает :(

0

Поділитися повідомленням


Посилання на повідомлення
Поділитися на інших сайтах

Створіть акаунт або увійдіть для коментування

Ви маєте бути користувачем, щоб залишити коментар

Створити акаунт

Зареєструйтеся для отримання акаунта. Це просто!


Зареєструвати акаунт

Увійти

Вже зареєстровані? Увійдіть тут.


Увійти зараз

  • Зараз на сторінці   0 користувачів

    Немає користувачів, які переглядають цю сторінку