Git Product home page Git Product logo

yaplc's Introduction

YAPLC

YAPLC - это свободная система программирования ПЛК.

YAPLC представляет собой набор программ и библиотек со свободными лицензиями, которые позволяют создавать программное обеспечение ПЛК на базе микроконтроллеров.

Особенности системы программирования:

  • Прозрачность: компоненты системы являются свободным программным обеспечением с открытым исходным кодом.
  • Для программирования используются пять языков стандарта IEC-61131-3, для расширения программ можно использовать Си.
  • В качестве формата обмена данными используется PLCopen XML.
  • Простота расширения:
    • для добавления новой аппаратной платформы достаточно:
      • создать проект среды выполнения,
      • добавить туда общие файлы,
      • написать BSP;
    • для связывания со средой разработки достаточно:
      • скопировать один из наборов целевых файлов,
      • внести изменения в соответствии с возможностями аппаратной платформы (периферия описывается простым декларативным языком);

По состоянию на 4 сентября 2017 г. YAPLC включает следующие компоненты:

  • Beremiz - интегрированная среда разработки программных ПЛК на языках IEC-61131-3;
  • matiec - транслятор языков программирования IEC-61131-3, генерирует программный ПЛК на Си;
  • GNU ARM Embedded Toolchain - легендарный набор инструментов разработчика на Си/Си++.
  • CanFestival - стек CanOpen;
  • libremodbus - стек ModBus, форк FreeModbus с поддержкой нескольких портов и мастера;
  • libopencm3 - библиотека драйверов периферии для микроконтроллеров с ядрами Cortex-Mх;
  • stm32flash - загрузчик для микрконтроллеров STM32;
  • YAPLC/RTE - минималистичная среда выполнения программных ПЛК;
  • YAPLC/IDE - расширения для Beremiz, позволяющие создавать приложения YAPLC/RTE:
  • YaPySerial - динамическая библиотека для замены PySerial (замечено, что PySerial не всегда корректно определяет платформу).

Статус проекта

По состоянию на 4 сентябя 2017 г., проведено открытое тестирование платформы на приборах ООО НПК "Нуклерон". Готовится серийное производство приборов на основе YAPLC, начало продаж запланировано на ноябрь 2017. В октябре 2017 г. запланирован корреутиующий релиз платформы. В ноябре 2017 г. платформа и приборы а ее основе будут представлены на выставке ПТА-017 в г. Москве.

Благодарности

Разработчики платформы выражают благодарность всем, кто принял участие в тестировании.

Отдельное спасибо:

  • Воронину Алексею,
  • Мидюкову Антону,
  • Суркову Сергею,
  • Нежданову Михаилу.

Применение

ООО НПК "Нуклерон" была разработана линейка программируемых реле NUC-24x/251. Линейка обладает следующими особенностями:

  • Отсутствие искусственных ограничений на количество используемых программой ресурсов, таких как функциональные блоки при программировании на языке FBD.
  • Низкое время цикла (от 300 мкc).
  • Питание 24 В либо 220 В.
  • Дискретные входы с внешним питанием на 24 В либо 220 В, либо с внутренним питанием напряжением 24 В.
  • Дискретные выходы типов: контакты реле, транзисторная оптопара, симисторная оптопара.
  • Аналоговые входы с возможностью измерения тока 0-20 мА, напряжения 0-10 В, сопротивления 0-100 Ом или 0-4 кОм.
  • Аналоговые выходы 0-20 мА с внешним или внутренним питанием.
  • Связь по RS-485 по протоколам MODBUS RTU/ASCII.
  • Индивидуальная гальваническая развязка портов питания, RS-485, аналоговых и дискретных выходов, групповая гальваническая развязка дискретных входов.
  • Все программируемые реле линейки имеют часы реального времени.
  • Прочие характеристики изделий линейки:

Скачать

Текущий релиз

yaplc's People

Contributors

nucleron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yaplc's Issues

Проблемы с Beremiz/matiec

Beremiz

При попытке выбрать адрес (размещение) переменной типа DT возникает unhandled exception. Среда разработки завершается с ошибкой.

matiec

Ошибка в iec_std_lib приводит в невозможности скомпилировать проект с глобальной переменной типа DT, и возможно с некоторыми другими типами глобальных переменных.

Данная проблема уже исправлена в репозитории matiec, изменения будут добавлены в YAPLC/IDE в релизе 0.9.11.

Алгоритм установки ПО YAPLC на stm32f4 либо любой другой.

Подскажите, как запустить ПО YAPLC на stm32f4, есть ли более-менее понятный алгоритм, как это сделать, если я знаком только с STM32CubeIDE или Keil uVision5 и с самим IEC-61131-3? Здесь есть ссылки для скачивания различных библиотек и компонентов. С некоторыми я знаком, но есть сложности с пониманием, как это собрать все вместе, какой программой на пк открыть и скомпилировать перед прошивкой в stm32, какую папку во что скопировать?

Отладка

Добрый день! Подскажите пожалуйста, в IDE YAPLC/Beremiz не нашел возможности установки breakpoint и пошаговой отладки, существует ли такой функционал?

Проблемы при установке YAPLC/IDE

Введение

Для корректной работы YAPLC/IDE необходимо, в системе были корректно установлены определенные программные компоненты.

К сожалению в тестовом релизе отсутствует программа GNU make, кроме того могут возникнуть проблемы с установкой GNU Tools fo ARM embedded processors.

В этой инструкции рассказывается, как исправить проблемы с установкой в релизе YAPLC-0.9.9.

Диагностика проблем

Откройте командную сроку Windows, и наберите по очереди команды.

make -v
arm-none-eabi-gcc -v

На рисунке ниже приведен пример, когда в операционной системе не установлены/установлены с ошибками вышеозначенные компоненты.
Рис. 1

Установка недостающих компонентов

С помощью панели управления Windows(R) проверьте установлен ли пакет GNU Tools fo ARM embedded processors.

Если установлен, но операционная система выдает ошибку при попытке вызвать

arm-none-eabi-gcc -v

,то тогда удалите его через панель управления.

GNU Tools fo ARM embedded processors

GNU Tools fo ARM embedded processors можно установить из каталога YAPLC, см. рисунок ниже
Рис. 2

При установке выберите английский язык:
Рис. 3

В конце установки нужно поставить отметки в чекбоксах, как показано на рисунке:
4
после чего можно нажать Finish.

После установки результат вызова

arm-none-eabi-gcc -v

должен выглядеть так:
5

GNU make

Утилиту GNU make нужно скачать со страницы проекта: http://gnuwin32.sourceforge.net/downlinks/make.php.

Дальше нужно прописать путь к make, как это показано на рисунке:
6

Если всё получилось, то результат вызова

make -v

должен выглядеть так:
7

Сборка тестового проекта

Тестовый проект можно скачать здесь:
StartProject.zip

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

Порядок загрузки проекта на stm32f4-discovery.

Здравствуте!
Пытаюсь загрузить тестовый проект на отладочную плату stm32f4-discovery. Выбираю в свойствах проекта целевую платформу выбираю yaplc. Заливаю hex на плату, и ничего не происходит. Что я не так делаю?

About the trace variable!

This problems is about the BEREMIZ runtime debug functions.
If there are many vairables in a PLC program. such as 1000 DINT datas.
each cycle the PLC must make 4000 bytes debug-buffer and each get-variable command will
send 4000 bytes.
Is it right?

Некорректная работа ФБ, использующих RTC.

Проблема

Прошивка, выпущенная с пилотной партией NUC-243, имеет недостаток: драйвер RTC использует только аппаратные регистры времени и даты, доступные в RTC микроконтроллера.

При этом в микроконтроллере отсутствует регистр, отвечающий за доли секунды.

Соответственно, переменная, отвечающая за текущее время, изменяется раз в секунду, что приводит к некорректной работе ФБ, использующих текущее время, при задании и измерении интервалов времени <1 c.

Решение

Необходимо обновить прошивку прибора, для этого нужно выполнить следующие шаги:

  • скачать исправленную прошивку со страницы релиза;
  • выключить прибор, отсоединить датчики и исполнительные устройства от прибора;
  • установить перемычку "обновление" (обведена красным) по рисунку
    firmware-upgrade
  • подключить адаптер NUC-246 к разъему программирования и компьютеру с установленной YAPLC/IDE;
  • вкючить прибор;
  • открыть консоль (cmd.exe) и ввести команду:
""путь к каталогуYAPLC"\stm32flash\stm32flash.exe" -b 57600 -w "путь к файлу прошивки" -v -g 0x0 "ком-порт-адаптера"

например:

"C:\Program Files\YAPLC\stm32flash\stm32flash.exe" -b 57600 -w "C:\Temp\nuc-243-rte-18052017-1000.elf.hex" -v -g 0x0 "COM28"

все пути и имя ком-порта должны быть в кавычках;

  • после обновления прошивки выключить прибор;
  • снять перемычку "обновление";
  • включить прибор;
  • убедиться, что в прибор загружена правильная пользовательская программа;

Universal serial connector for Beremiz proposal

Architecture

The connector consists of two parts:

  • A dynamic library with standartized API/ABI;
  • Beremiz connector which loads a dynamic lib and use it as a transport to PLC.

Dynamic lib

Dynamic lib gives us a serial transport with standart API/ABI. Libs internals may use sockets/pipes/files/devices/etc.
It can implement any transport that PLC vendor like, the only requirement, is standart API/ABI.
The proposed API/ABI is:

int handle_open (void ** handle, char * uri, uint32_t uri_len); //Returns zero on successfull connection creation
int handle_close (void ** handle); //Returns zero on success
int handle_read  (void ** handle, void *buf, size_t nbyte); //Returns numer of bytes red
int handle_write (void ** handle, void *buf, size_t nbyte); //Returns number of bytes written

Where:

  • handle - an opaque pointer for transport control entity.
  • uri - a pointer to sockets/pipes/files/devices/etc name.
  • uri_len - URI length (yes we will try address possible buffer overflow).
  • buf - a pointer to data buffer used for communication.
  • nbyte - a number of byte to transmit/receive.

Beremiz connector

The connector itself implements serial connection protocol, we propose LPCManager or YAPLC/IDE protocols as a base.

It also should have standart Beremiz side connector API, if someone adds data buffering to connector it would be very cool.

We propose the following URI format for connector:

UNIDBG://Path_to_dynamic_lib//Transport_uri

Where:

  • Path_to_dynamic_lib - A path to dynamic lib file (I beleive it should be relative to some base dir).
  • Transport_uri - a string that will be passed to handle_open as uri.
    So PLC vendors can implement any transport layer they like and they can use the same connector for different transports.

Issues

  • 32/64 bit: 32bit python wants 32bit dll, 64bit python wants 64bit lib at least on Windowr(R).
  • Boot protocol: different vendors use different boot protocols (e.g. we use STMicros-bootloader for program boot) and different file types to boot their PLCs, we must design some common way to handle these differences.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.