├── .gitignore ├── BuildOnLinux.md ├── Makefile ├── README.md ├── distfiles ├── 034d891cc947.zip.md5 ├── Nevow-0.10.0.tar.gz.md5 ├── Pyro-3.9.1.tar.gz.md5 ├── Twisted-11.0.0.winxp32-py2.7.msi.md5 ├── bash-3.1.17-3-msys-1.0.13-bin.tar.lzma.md5 ├── binutils-2.28-1-mingw32-bin.tar.xz.md5 ├── coreutils-5.97-3-msys-1.0.13-bin.tar.lzma.md5 ├── enum34-1.1.6-py2-none-any.whl.md5 ├── gcc-arm-none-eabi-4_8-2014q2-20140609-win32.zip.md5 ├── gcc-core-4.6.1-2-mingw32-bin.tar.lzma.md5 ├── innounp036.rar.md5 ├── libgettextpo-0.17-1-mingw32-dll-0.tar.lzma.md5 ├── libgmp-5.0.1-1-mingw32-dll-10.tar.lzma.md5 ├── libiconv-1.13.1-1-mingw32-dll-2.tar.lzma.md5 ├── libiconv-1.13.1-2-msys-1.0.13-bin.tar.lzma.md5 ├── libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma.md5 ├── libintl-0.17-1-mingw32-dll-8.tar.lzma.md5 ├── libintl-0.17-2-msys-dll-8.tar.lzma.md5 ├── libmpc-0.8.1-1-mingw32-dll-2.tar.lzma.md5 ├── libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma.md5 ├── libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma.md5 ├── libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma.md5 ├── lxml-3.2.3.win32-py2.7.exe.md5 ├── make-3.81-3-msys-1.0.13-bin.tar.lzma.md5 ├── matplotlib-1.2.0.win32-py2.7.exe.md5 ├── mingwrt-3.20-2-mingw32-dev.tar.lzma.md5 ├── mingwrt-3.20-2-mingw32-dll.tar.lzma.md5 ├── mingwrt-3.20-mingw32-dev.tar.gz.md5 ├── mingwrt-3.20-mingw32-dll.tar.gz.md5 ├── msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma.md5 ├── netifaces-0.10.6-py2.7-win32.egg.md5 ├── numpy-1.6.1.win32-py2.7.exe.md5 ├── python-2.7.2.msi.md5 ├── pywin32-216.win32-py2.7.exe.md5 ├── simplejson-2.2.1.tar.gz.md5 ├── six-1.11.0-py2.py3-none-any.whl.md5 ├── vcredist_x86.exe.md5 ├── w32api-3.17-2-mingw32-dev.tar.lzma.md5 ├── wxPython2.8-win32-unicode-2.8.12.1-py27.exe.md5 ├── zeroconf-0.19.1-py2.py3-none-any.whl.md5 └── zope.interface-4.3.2-py2.7-win32.egg.md5 ├── install.nsi ├── license.txt └── public.mk /.gitignore: -------------------------------------------------------------------------------- 1 | # Backup files # 2 | ################ 3 | *~ 4 | *.orig 5 | *.swp 6 | 7 | # Executable # 8 | *.exe 9 | 10 | # Directory files # 11 | ################### 12 | *directory 13 | 14 | # Build generated files # 15 | ######################### 16 | examples* 17 | build* 18 | beremiz 19 | canfestival 20 | matiec 21 | mingw 22 | python 23 | IDE 24 | arm_tools 25 | dynlib 26 | firmware 27 | stm32flash 28 | 29 | # Archives in distfiles # 30 | distfiles/* 31 | !*.md5 32 | -------------------------------------------------------------------------------- /BuildOnLinux.md: -------------------------------------------------------------------------------- 1 | # Build YAPLC on GNU/Linux 2 | ## Install dependencies: 3 | ```bash 4 | sudo apt-get install codeblocks 5 | sudo apt-get install build-essential bison flex autoconf 6 | sudo apt-get install python-wxgtk2.8 pyro mercurial 7 | sudo apt-get install python-numpy python-nevow python-matplotlib python-lxml 8 | ``` 9 | You should also install 10 | https://launchpad.net/gcc-arm-embedded 11 | 12 | Add arm-none-eabi-gcc toolchain to Code::Blocks IDE 13 | 14 | ## Preparations 15 | ```bash 16 | mkdir ~/YAPLC 17 | cd ~/YAPLC 18 | ``` 19 | Clone these repos: 20 | 21 | ```bash 22 | hg clone https://bitbucket.org/skvorl/beremiz/ 23 | hg clone https://bitbucket.org/skvorl/matiec 24 | 25 | git clone https://github.com/nucleron/RTE.git 26 | git clone https://github.com/nucleron/IDE.git 27 | git clone https://github.com/nucleron/freemodbus-v1.5.0.git 28 | git clone https://github.com/nucleron/stm32flash.git 29 | git clone https://github.com/nucleron/libopencm3.git 30 | git clone https://github.com/nucleron/YaPySerial.git 31 | ``` 32 | 33 | ## Build 34 | 35 | Build matiec: 36 | ```bash 37 | cd ~/YAPLC/matiec 38 | autoreconf -i 39 | ./configure 40 | make 41 | ``` 42 | 43 | Build libopencm3: 44 | 45 | ```bash 46 | cd ~/YAPLC/libopencm3 47 | make 48 | ``` 49 | 50 | Build stm32flash 51 | 52 | ```bash 53 | cd ~/YAPLC/stm32flash 54 | make 55 | ``` 56 | 57 | To build YaPySerial use Code::Blocks, the target is POSIX. 58 | To build device runtime systems use Code::Blocks with Debug targets. 59 | 60 | ## Optional 61 | Get and build CanFestival-3: 62 | ```bash 63 | hg clone http://dev.automforge.net/CanFestival-3 64 | cd ~/YAPLC/CanFestival-3 65 | ./configure --can=virtual 66 | make 67 | ``` 68 | ## Runing YAPLC/IDE 69 | ```bash 70 | cd ~/YAPLC/IDE 71 | python yaplcide.py 72 | ``` 73 | 74 | # Cross build Win setup 75 | Install dependencies as described above 76 | ## Preparations 77 | Clone this repo 78 | ```bash 79 | mkdir ~/Build 80 | cd ~/Build 81 | git clone https://github.com/nucleron/YAPLC.git 82 | ``` 83 | ## Make it 84 | ```bash 85 | cd YAPLC 86 | make 87 | ``` 88 | 89 | ## Clean installer 90 | ```bash 91 | make clean_installer 92 | ``` 93 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | #! gmake 2 | 3 | # This is Makefile for YAPLC installer 4 | # 5 | # Invoke with "make -f path/to/Makefile" on a linux box 6 | # in directory where build should happen. 7 | # 8 | # All those dependencies have to be installed : 9 | # 10 | # Windows installer : 11 | # - wine (tested with 1.2 and 1.6. Fail with 1.4) 12 | # - mingw32 13 | # - flex 14 | # - bison 15 | # - tar 16 | # - unrar 17 | # - unzip 18 | # - wget 19 | # - nsis 20 | # - libtool 21 | # - xmlstarlet 22 | # - xsltproc 23 | # - python-lxml 24 | # - Code::Blocks 25 | # - GNU ARM embedded toolchain 26 | # 27 | # WARNING : DISPLAY variable have to be defined to a valid X server 28 | # in case it would be a problem, run : 29 | # xvfb-run make -f /path/to/this/Makefile 30 | 31 | version = 1.1.3 32 | 33 | HGROOT := ~/src 34 | GITROOT := $(HGROOT) 35 | HGPULL = 0 36 | DIST = 37 | CPUS = 2 38 | BLKDEV=/dev/null 39 | 40 | 41 | CROSS_COMPILE=i686-w64-mingw32 42 | CROSS_COMPILE_LIBS_DIR=$(shell dirname $(shell $(CROSS_COMPILE)-gcc -print-libgcc-file-name)) 43 | CC=$(CROSS_COMPILE)-gcc 44 | CXX=$(CROSS_COMPILE)-g++ 45 | 46 | define get_runtime_libs 47 | cp $(CROSS_COMPILE_LIBS_DIR)/libgcc_s_sjlj-1.dll $(1) 48 | cp $(CROSS_COMPILE_LIBS_DIR)/libstdc++-6.dll $(1) 49 | endef 50 | 51 | src := $(shell dirname $(lastword $(MAKEFILE_LIST))) 52 | distfiles = $(src)/distfiles 53 | sfmirror = downloads 54 | tmp := $(shell mktemp -d) 55 | 56 | ifeq ("$(HGPULL)","1") 57 | define hg_get_archive 58 | hg -R $(HGROOT)/`basename $(1)` pull 59 | hg -R $(HGROOT)/`basename $(1)` update $(2) 60 | hg -R $(HGROOT)/`basename $(1)` archive $(1) 61 | endef 62 | else 63 | define hg_get_archive 64 | hg -R $(HGROOT)/$(shell basename $(1)) archive $(2) $(1) 65 | endef 66 | endif 67 | 68 | define hg_get_rev_num 69 | hg -R $(HGROOT)/`basename $(1)` id -i | sed 's/\+//' > $(2) 70 | endef 71 | 72 | define get_src_hg 73 | rm -rf $(1) 74 | $(call hg_get_archive, $(1), $(2)) 75 | endef 76 | 77 | define git_get_rev_num 78 | git -C $(HGROOT)/`basename $(1)` rev-list --full-history --all --abbrev-commit | head -1 > $(2) 79 | endef 80 | 81 | define get_src_git 82 | rm -rf $(1) 83 | mkdir $(1) 84 | (cd $(GITROOT)/$(shell basename $(1)); git archive master --format=tar) | tar -C $(1) -x 85 | # (cd $(GITROOT)/$(shell basename $(1)); git archive --format=tar $(2)) | tar -C $(1) -x 86 | endef 87 | 88 | define get_src_http 89 | dld=$(distfiles)/`echo $(2) | tr ' ()' '___'`;( ( [ -f $$dld ] || wget $(1)/$(2) -O $$dld ) && ( [ ! -f $$dld.md5 ] && (cd $(distfiles);md5sum `basename $$dld`) > $$dld.md5 || (cd $(distfiles);md5sum -c `basename $$dld.md5`) ) ) && 90 | endef 91 | 92 | define get_src_pypi 93 | $(call get_src_http,https://pypi.python.org/packages/$(1),$(2)) 94 | endef 95 | 96 | define get_src_sf 97 | $(call get_src_http,http://$(sfmirror).sourceforge.net/project/$(1),$(2)) 98 | endef 99 | 100 | define get_src_lp 101 | $(call get_src_http,http://launchpad.net/$(1),$(2)) 102 | endef 103 | 104 | define get_src_matiec 105 | if [ ! -d $(GITROOT)/matiec ]; then \ 106 | git clone https://github.com/nucleron/matiec.git $(GITROOT)/matiec; \ 107 | fi 108 | endef 109 | 110 | define get_src_nucleron 111 | if [ ! -d $(GITROOT)/beremiz ]; then \ 112 | git clone https://github.com/nucleron/beremiz.git $(GITROOT)/beremiz; \ 113 | fi 114 | if [ ! -d $(GITROOT)/CanFestival-3 ]; then \ 115 | git clone https://github.com/nucleron/CanFestival-3.git $(GITROOT)/CanFestival-3; \ 116 | fi 117 | if [ ! -d $(GITROOT)/IDE ]; then \ 118 | git clone https://github.com/nucleron/IDE.git $(GITROOT)/IDE; \ 119 | fi 120 | if [ ! -d $(GITROOT)/RTE ]; then \ 121 | git clone https://github.com/nucleron/RTE.git $(GITROOT)/RTE; \ 122 | fi 123 | if [ ! -d $(GITROOT)/libremodbus ]; then \ 124 | git clone https://github.com/nucleron/libremodbus.git $(GITROOT)/libremodbus; \ 125 | fi 126 | if [ ! -d $(GITROOT)/YaPySerial ]; then \ 127 | git clone https://github.com/nucleron/YaPySerial.git $(GITROOT)/YaPySerial; \ 128 | fi 129 | if [ ! -d $(GITROOT)/stm32flash ]; then \ 130 | git clone https://github.com/nucleron/stm32flash.git $(GITROOT)/stm32flash; \ 131 | fi 132 | if [ ! -d $(GITROOT)/libopencm3 ]; then \ 133 | git clone https://github.com/nucleron/libopencm3.git $(GITROOT)/libopencm3; \ 134 | fi 135 | endef 136 | 137 | all: YAPLC-$(version).exe $(targets_add) 138 | 139 | 140 | ifneq ("$(DIST)","") 141 | include $(src)/$(DIST).mk 142 | endif 143 | 144 | CUSTOM := public 145 | CUSTOM_DIR := $(src) 146 | 147 | include $(CUSTOM_DIR)/$(CUSTOM).mk 148 | 149 | build: 150 | rm -rf build 151 | mkdir -p build 152 | 153 | # native toolchain, pre-built 154 | mingwdir=build/mingw 155 | 156 | define get_mingw 157 | $(call get_src_sf,mingw/MinGW/Base/$(1),$(2)) tar -C $(mingwdir) --lzma -xf $$dld 158 | endef 159 | define get_msys 160 | $(call get_src_sf,mingw/MSYS/Base/$(1),$(2)) tar -C $(mingwdir) --lzma -xf $$dld 161 | endef 162 | mingw: |build 163 | rm -rf $(mingwdir) 164 | mkdir -p $(mingwdir) 165 | # windows.h 166 | $(call get_mingw,w32api/w32api-3.17,w32api-3.17-2-mingw32-dev.tar.lzma) 167 | # mingw runtime 168 | $(call get_mingw,mingwrt/mingwrt-3.20,mingwrt-3.20-2-mingw32-dll.tar.lzma) 169 | # mingw headers and lib 170 | $(call get_mingw,mingwrt/mingwrt-3.20,mingwrt-3.20-2-mingw32-dev.tar.lzma) 171 | # binutils 172 | $(call get_mingw,binutils/binutils-2.28,binutils-2.28-1-mingw32-bin.tar.xz) 173 | # C compiler 174 | $(call get_mingw,gcc/Version4/gcc-4.6.1-2,gcc-core-4.6.1-2-mingw32-bin.tar.lzma) 175 | # dependencies 176 | $(call get_mingw,gmp/gmp-5.0.1-1,libgmp-5.0.1-1-mingw32-dll-10.tar.lzma) 177 | $(call get_mingw,mpc/mpc-0.8.1-1,libmpc-0.8.1-1-mingw32-dll-2.tar.lzma) 178 | $(call get_mingw,mpfr/mpfr-2.4.1-1,libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma) 179 | $(call get_mingw,gettext/gettext-0.17-1,libintl-0.17-1-mingw32-dll-8.tar.lzma) 180 | $(call get_mingw,gettext/gettext-0.17-1,libgettextpo-0.17-1-mingw32-dll-0.tar.lzma) 181 | $(call get_mingw,libiconv/libiconv-1.13.1-1,libiconv-1.13.1-1-mingw32-dll-2.tar.lzma) 182 | # make, bash, and dependencies 183 | $(call get_msys,bash/bash-3.1.17-3,bash-3.1.17-3-msys-1.0.13-bin.tar.lzma) 184 | $(call get_msys,coreutils/coreutils-5.97-3,coreutils-5.97-3-msys-1.0.13-bin.tar.lzma) 185 | $(call get_msys,libiconv/libiconv-1.13.1-2,libiconv-1.13.1-2-msys-1.0.13-bin.tar.lzma) 186 | $(call get_msys,libiconv/libiconv-1.13.1-2,libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma) 187 | $(call get_msys,gettext/gettext-0.17-2,libintl-0.17-2-msys-dll-8.tar.lzma) 188 | $(call get_msys,regex/regex-1.20090805-2,libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma) 189 | $(call get_msys,termcap/termcap-0.20050421_1-2,libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma) 190 | $(call get_msys,make/make-3.81-3,make-3.81-3-msys-1.0.13-bin.tar.lzma) 191 | $(call get_msys,msys-core/msys-1.0.13-2,msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma) 192 | $(call get_msys,termcap/termcap-0.20050421_1-2,libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma) 193 | touch $@ 194 | 195 | msiexec = WINEPREFIX=$(tmp) msiexec 196 | wine = WINEPREFIX=$(tmp) wine 197 | pydir = build/python 198 | pysite = $(pydir)/Lib/site-packages 199 | 200 | python: |build 201 | rm -rf $(pydir) 202 | mkdir -p $(pydir) 203 | 204 | # Python 205 | $(call get_src_http,http://www.python.org/ftp/python/2.7.2,python-2.7.2.msi)\ 206 | $(msiexec) /qn /a $$dld TARGETDIR=.\\$(pydir) 207 | 208 | # WxPython (needs running inno unpacker in wine) 209 | $(call get_src_sf,innounp/innounp/innounp%200.36,innounp036.rar)\ 210 | unrar e $$dld innounp.exe $(tmp) 211 | $(call get_src_sf,wxpython/wxPython/2.8.12.1,wxPython2.8-win32-unicode-2.8.12.1-py27.exe)\ 212 | $(wine) $(tmp)/innounp.exe -d$(tmp) -x $$dld 213 | cp -R $(tmp)/\{code_GetPythonDir\}/* $(pydir) 214 | cp -R $(tmp)/\{app\}/* $(pysite) 215 | 216 | # wxPython fails if VC9.0 bullshit is not fully here. 217 | $(call get_src_http,http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140,vcredist_x86.exe)\ 218 | cp $$dld $(tmp) 219 | $(wine) $(tmp)/vcredist_x86.exe /qn /a 220 | cp $(tmp)/drive_c/windows/winsxs/x86_Microsoft.VC90.CRT*/* $(pydir) 221 | 222 | # MathPlotLib 223 | $(call get_src_http,https://github.com/downloads/matplotlib/matplotlib,matplotlib-1.2.0.win32-py2.7.exe)\ 224 | unzip -d $(tmp)/mathplotlib $$dld ; [ $$? -eq 1 ] #silence error unziping .exe 225 | cp -R $(tmp)/mathplotlib/PLATLIB/* $(pysite) 226 | 227 | # pywin32 228 | $(call get_src_sf,pywin32/pywin32/Build216,pywin32-216.win32-py2.7.exe)\ 229 | unzip -d $(tmp)/pw32 $$dld ; [ $$? -eq 1 ] #silence error unziping .exe 230 | cp -R $(tmp)/pw32/PLATLIB/* $(pysite) 231 | 232 | # zope.interface 233 | $(call get_src_pypi,9d/2d/beb32519c0bd19bda4ac38c34db417d563ee698518e582f951d0b9e5898b,zope.interface-4.3.2-py2.7-win32.egg)\ 234 | unzip -d $(tmp) $$dld 235 | cp -R $(tmp)/zope $(pysite) 236 | 237 | # Twisted 238 | $(call get_src_pypi,2.7/T/Twisted,Twisted-11.0.0.winxp32-py2.7.msi)\ 239 | $(msiexec) /qn /a $$dld TARGETDIR=.\\$(pydir) 240 | 241 | # Nevow 242 | $(call get_src_pypi,source/N/Nevow,Nevow-0.10.0.tar.gz)\ 243 | tar -C $(tmp) -xzf $$dld 244 | for i in nevow formless twisted; do cp -R $(tmp)/Nevow-0.10.0/$$i $(pysite); done 245 | 246 | # Numpy 247 | $(call get_src_pypi,2.7/n/numpy,numpy-1.6.1.win32-py2.7.exe)\ 248 | unzip -d $(tmp)/np $$dld ; [ $$? -eq 1 ] #silence error unziping .exe 249 | cp -R $(tmp)/np/PLATLIB/* $(pysite) 250 | 251 | # SimpleJson 252 | $(call get_src_pypi,source/s/simplejson,simplejson-2.2.1.tar.gz)\ 253 | tar -C $(tmp) -xzf $$dld 254 | cp -R $(tmp)/simplejson-2.2.1/simplejson/ $(pysite) 255 | 256 | # Zeroconf 257 | $(call get_src_pypi,6b/88/48dbe88b10098f98acef33218763c5630b0081c7fd0849ab4793b1e9b6d3,zeroconf-0.19.1-py2.py3-none-any.whl)\ 258 | unzip -d $(tmp)/zeroconf $$dld 259 | cp -R $(tmp)/zeroconf/* $(pysite) 260 | 261 | # Enum34 262 | $(call get_src_pypi,c5/db/e56e6b4bbac7c4a06de1c50de6fe1ef3810018ae11732a50f15f62c7d050,enum34-1.1.6-py2-none-any.whl)\ 263 | unzip -d $(tmp)/enum34 $$dld 264 | cp -R $(tmp)/enum34/* $(pysite) 265 | 266 | # netifaces 267 | $(call get_src_pypi,05/00/c719457bcb8f14f9a7b9244c3c5e203c40d041a364cf784cf554aaef8129,netifaces-0.10.6-py2.7-win32.egg)\ 268 | unzip -d $(tmp)/netifaces $$dld 269 | cp -R $(tmp)/netifaces/* $(pysite) 270 | 271 | # Six 272 | $(call get_src_pypi,67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a,six-1.11.0-py2.py3-none-any.whl)\ 273 | unzip -d $(tmp)/six $$dld 274 | cp -R $(tmp)/six/* $(pysite) 275 | 276 | 277 | # WxGlade 278 | $(call get_src_http,https://bitbucket.org/wxglade/wxglade/get,034d891cc947.zip)\ 279 | unzip -d $(tmp) $$dld 280 | mv $(tmp)/wxglade-wxglade-034d891cc947 $(pysite)/wxglade 281 | 282 | # Pyro 283 | $(call get_src_pypi,source/P/Pyro,Pyro-3.9.1.tar.gz)\ 284 | tar -C $(tmp) -xzf $$dld 285 | mv $(tmp)/Pyro-3.9.1/Pyro $(pysite) 286 | 287 | # Lxml 288 | $(call get_src_pypi,2.7/l/lxml,lxml-3.2.3.win32-py2.7.exe)\ 289 | unzip -d $(tmp)/lxml $$dld ; [ $$? -eq 1 ] #silence error unziping .exe 290 | cp -R $(tmp)/lxml/PLATLIB/* $(pysite) 291 | 292 | touch $@ 293 | 294 | matiecdir = build/matiec 295 | matiec: |build 296 | $(call get_src_matiec) 297 | $(call get_src_git,$(tmp)/matiec) 298 | cd $(tmp)/matiec ;\ 299 | autoreconf -i;\ 300 | automake --add-missing;\ 301 | ./configure --host=$(CROSS_COMPILE);\ 302 | make -j$(CPUS); 303 | rm -rf $(matiecdir) 304 | mkdir -p $(matiecdir) 305 | mv $(tmp)/matiec/*.exe $(matiecdir) 306 | 307 | # install necessary shared libraries from local cross-compiler 308 | $(call get_runtime_libs,$(matiecdir)) 309 | 310 | cp -R $(tmp)/matiec/lib $(matiecdir) 311 | touch $@ 312 | 313 | examples: |build 314 | rm -rf examples 315 | mkdir -p examples 316 | 317 | beremiz: | build examples 318 | $(call get_src_nucleron) 319 | $(call get_src_git,build/beremiz) 320 | $(call git_get_rev_num,beremiz,build/beremiz/revision) 321 | $(call tweak_beremiz_targets) 322 | rm -rf examples/canopen_tests 323 | mkdir -p examples/canopen_tests 324 | mv build/beremiz/tests/canopen_* examples/canopen_tests 325 | rm -rf examples/base_tests 326 | mkdir -p examples/base_tests 327 | mv build/beremiz/tests/* examples/base_tests 328 | touch $@ 329 | 330 | arm_tools_dir = build/gnu-arm-embedded 331 | 332 | define get_arm_tools 333 | $(call get_src_lp,gcc-arm-embedded/$(1),$(2)) unzip -d $(arm_tools_dir) $$dld 334 | endef 335 | 336 | arm_tools: | build 337 | rm -rf $(arm_tools_dir) 338 | mkdir -p $(arm_tools_dir) 339 | $(call get_arm_tools,4.8/4.8-2014-q2-update/+download,gcc-arm-none-eabi-4_8-2014q2-20140609-win32.zip) 340 | touch $@ 341 | 342 | IDE: | build 343 | $(call get_src_nucleron) 344 | $(call get_src_git,build/IDE) 345 | touch $@ 346 | 347 | stm32flashdir = build/stm32flash 348 | stm32flash: | build 349 | $(call get_src_nucleron) 350 | $(call get_src_git,$(tmp)/stm32flash) 351 | cd $(tmp)/stm32flash ;\ 352 | make CC=$(CROSS_COMPILE)-gcc ;\ 353 | find . -name "*.[oa]" -exec rm {} ';' 354 | rm -rf $(stm32flashdir) 355 | mkdir -p $(stm32flashdir) 356 | mv $(tmp)/stm32flash/* $(stm32flashdir) 357 | mv $(stm32flashdir)/stm32flash $(stm32flashdir)/stm32flash.exe 358 | touch $@ 359 | 360 | dynlibdir = build/YaPySerial 361 | dynlib: | build 362 | $(call get_src_nucleron) 363 | $(call get_src_git,$(tmp)/YaPySerial) 364 | cd $(tmp)/YaPySerial ;\ 365 | make win ;\ 366 | find . -name "*.o" -exec rm {} ';' 367 | rm -rf $(dynlibdir) 368 | mkdir -p $(dynlibdir) 369 | mv $(tmp)/YaPySerial/* $(dynlibdir) 370 | touch $@ 371 | 372 | fmbdir = build/libremodbus 373 | libopencm3dir = build/libopencm3 374 | rtedir = build/RTE 375 | firmware: | build 376 | $(call get_src_nucleron) 377 | $(call get_src_git,$(tmp)/libremodbus) 378 | $(call get_src_git,$(tmp)/libopencm3) 379 | $(call get_src_git,$(tmp)/RTE) 380 | cd $(tmp)/libopencm3 ;\ 381 | make ;\ 382 | find . -name "*.[od]" -exec rm {} ';' 383 | cd $(tmp)/RTE/projects ;\ 384 | codeblocks /na /nd /ns --rebuild yaplc.workspace --target="Debug" ;\ 385 | find . -name "*.[oda]" -exec rm {} ';' 386 | rm -rf $(fmbdir) 387 | mkdir -p $(fmbdir) 388 | mv $(tmp)/libremodbus/* $(fmbdir) 389 | rm -rf $(libopencm3dir) 390 | mkdir -p $(libopencm3dir) 391 | mv $(tmp)/libopencm3/* $(libopencm3dir) 392 | rm -rf $(rtedir) 393 | mkdir -p $(rtedir) 394 | mv $(tmp)/RTE/* $(rtedir) 395 | touch $@ 396 | 397 | CFbuild = build/CanFestival-3 398 | CFconfig = $(CFbuild)/objdictgen/canfestival_config.py 399 | canfestival: mingw 400 | rm -rf $(CFbuild) 401 | $(call get_src_nucleron) 402 | $(call get_src_git,$(CFbuild)) 403 | cd $(CFbuild); \ 404 | ./configure --can=tcp_win32 \ 405 | --cc=$(CC) \ 406 | --cxx=$(CXX) \ 407 | --target=win32 \ 408 | --wx=0 409 | $(MAKE) -C $(CFbuild) 410 | cd $(CFbuild); find . -name "*.o" -exec rm {} ';' #remove object files only 411 | touch $@ 412 | 413 | targets=python mingw matiec beremiz IDE stm32flash dynlib firmware arm_tools 414 | 415 | YAPLC-$(version).exe: $(targets) $(src)/license.txt $(src)/install.nsi $(targets_ex) 416 | sed -e 's/\$$BVERSION/$(version)/g' $(src)/license.txt > build/license.txt 417 | sed -e 's/\$$BVERSION/$(version)/g' $(src)/install.nsi |\ 418 | sed -e 's/\$$BEXTENSIONS/$(extensions)/g' |\ 419 | makensis - 420 | 421 | clean_installer: 422 | rm -rf build examples YAPLC-$(version).exe $(targets) $(targets_ex) 423 | 424 | 425 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # YAPLC 2 | 3 | YAPLC - это свободная система программирования [ПЛК](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B9_%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80). 4 | 5 | YAPLC представляет собой набор программ и библиотек со свободными лицензиями, 6 | которые позволяют создавать программное обеспечение ПЛК на базе микроконтроллеров. 7 | 8 | Особенности системы программирования: 9 | * Прозрачность: компоненты системы являются свободным программным обеспечением с открытым исходным кодом. 10 | * Для программирования используются пять языков стандарта IEC-61131-3, для расширения программ можно использовать Си. 11 | * В качестве формата обмена данными используется [PLCopen XML](http://www.plcopen.org/pages/tc6_xml/). 12 | * Простота расширения: 13 | * для добавления новой аппаратной платформы достаточно: 14 | * создать проект среды выполнения, 15 | * добавить туда общие файлы, 16 | * написать [BSP](https://ru.wikipedia.org/wiki/Board_Support_Package); 17 | * для связывания со средой разработки достаточно: 18 | * скопировать один из наборов целевых файлов, 19 | * внести изменения в соответствии с возможностями аппаратной платформы (периферия описывается простым декларативным языком); 20 | 21 | По состоянию на 4 сентября 2017 г. YAPLC включает следующие компоненты: 22 | * [Beremiz](https://bitbucket.org/skvorl/beremiz) - интегрированная среда разработки программных ПЛК на языках IEC-61131-3; 23 | * [matiec](https://bitbucket.org/mjsousa/matiec) - транслятор языков программирования IEC-61131-3, генерирует программный ПЛК на Си; 24 | * [GNU ARM Embedded Toolchain](https://launchpad.net/gcc-arm-embedded) - легендарный набор инструментов разработчика на Си/Си++. 25 | * [CanFestival](https://github.com/nucleron/CanFestival-3) - стек CanOpen; 26 | * [libremodbus](https://github.com/nucleron/libremodbus) - стек ModBus, форк FreeModbus с поддержкой нескольких портов и мастера; 27 | * [libopencm3](https://github.com/libopencm3/libopencm3) - библиотека драйверов периферии для микроконтроллеров с ядрами Cortex-Mх; 28 | * [stm32flash](https://github.com/nucleron/stm32flash) - загрузчик для микрконтроллеров STM32; 29 | * [YAPLC/RTE](https://github.com/nucleron/RTE) - минималистичная среда выполнения программных ПЛК; 30 | * [YAPLC/IDE](https://github.com/nucleron/IDE) - расширения для Beremiz, позволяющие создавать приложения YAPLC/RTE: 31 | * [YaPySerial](https://github.com/nucleron/YaPySerial) - динамическая библиотека для замены PySerial (замечено, что PySerial не всегда корректно определяет платформу). 32 | 33 | 34 | # Статус проекта 35 | По состоянию на 4 сентябя 2017 г., проведено открытое тестирование платформы на приборах ООО НПК "Нуклерон". 36 | Готовится серийное производство приборов на основе YAPLC, начало продаж запланировано на ноябрь 2017. 37 | В октябре 2017 г. запланирован корреутиующий релиз платформы. 38 | В ноябре 2017 г. платформа и приборы а ее основе будут представлены на выставке [ПТА-017](https://www.pta-expo.ru/moscow/) в г. Москве. 39 | 40 | 41 | # Благодарности 42 | Разработчики платформы выражают благодарность всем, кто принял участие в тестировании. 43 | 44 | Отдельное спасибо: 45 | * Воронину Алексею, 46 | * Мидюкову Антону, 47 | * Суркову Сергею, 48 | * Нежданову Михаилу. 49 | 50 | 51 | # Применение 52 | ООО НПК "Нуклерон" была разработана линейка программируемых реле NUC-24x/251. Линейка обладает следующими особенностями: 53 | * Отсутствие искусственных ограничений на количество используемых программой ресурсов, таких как функциональные блоки при программировании на языке FBD. 54 | * Низкое время цикла (от 300 мкc). 55 | * Питание 24 В либо 220 В. 56 | * Дискретные входы с внешним питанием на 24 В либо 220 В, либо с внутренним питанием напряжением 24 В. 57 | * Дискретные выходы типов: контакты реле, транзисторная оптопара, симисторная оптопара. 58 | * Аналоговые входы с возможностью измерения тока 0-20 мА, напряжения 0-10 В, сопротивления 0-100 Ом или 0-4 кОм. 59 | * Аналоговые выходы 0-20 мА с внешним или внутренним питанием. 60 | * Связь по RS-485 по протоколам MODBUS RTU/ASCII. 61 | * Индивидуальная гальваническая развязка портов питания, RS-485, аналоговых и дискретных выходов, групповая гальваническая развязка дискретных входов. 62 | * Все программируемые реле линейки имеют часы реального времени. 63 | * Прочие характеристики изделий линейки: 64 | ![](https://cloud.githubusercontent.com/assets/16999214/24648364/d1fcf818-193c-11e7-903c-ce661a768e57.png) 65 | 66 | 67 | # Скачать 68 | [Текущий релиз](https://github.com/nucleron/YAPLC/releases/tag/v1.1.0) 69 | -------------------------------------------------------------------------------- /distfiles/034d891cc947.zip.md5: -------------------------------------------------------------------------------- 1 | 46fac34fd7a93b46aafb08fd37590aa8 034d891cc947.zip 2 | -------------------------------------------------------------------------------- /distfiles/Nevow-0.10.0.tar.gz.md5: -------------------------------------------------------------------------------- 1 | 66dda2ad88f42dea05911add15f4d1b2 Nevow-0.10.0.tar.gz 2 | -------------------------------------------------------------------------------- /distfiles/Pyro-3.9.1.tar.gz.md5: -------------------------------------------------------------------------------- 1 | fd2fb19d5690825690e1b962a50afdc9 Pyro-3.9.1.tar.gz 2 | -------------------------------------------------------------------------------- /distfiles/Twisted-11.0.0.winxp32-py2.7.msi.md5: -------------------------------------------------------------------------------- 1 | edc63d41222fdb9ef4545ee33931eca0 Twisted-11.0.0.winxp32-py2.7.msi 2 | -------------------------------------------------------------------------------- /distfiles/bash-3.1.17-3-msys-1.0.13-bin.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 8872b0b88a0626c24a9dc65983b1a7e2 bash-3.1.17-3-msys-1.0.13-bin.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/binutils-2.28-1-mingw32-bin.tar.xz.md5: -------------------------------------------------------------------------------- 1 | d9ede5b43ac380c342a95e68434d9957 binutils-2.28-1-mingw32-bin.tar.xz 2 | -------------------------------------------------------------------------------- /distfiles/coreutils-5.97-3-msys-1.0.13-bin.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 1fdbbeba10b5c17222f98d867814e9cd coreutils-5.97-3-msys-1.0.13-bin.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/enum34-1.1.6-py2-none-any.whl.md5: -------------------------------------------------------------------------------- 1 | 68f6982cc07dde78f4b500db829860bd enum34-1.1.6-py2-none-any.whl 2 | -------------------------------------------------------------------------------- /distfiles/gcc-arm-none-eabi-4_8-2014q2-20140609-win32.zip.md5: -------------------------------------------------------------------------------- 1 | d6e29ea8b587f871ec308214703383bf gcc-arm-none-eabi-4_8-2014q2-20140609-win32.zip 2 | -------------------------------------------------------------------------------- /distfiles/gcc-core-4.6.1-2-mingw32-bin.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 4c32ce090586e4fd3ca85028a8f8309b gcc-core-4.6.1-2-mingw32-bin.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/innounp036.rar.md5: -------------------------------------------------------------------------------- 1 | 414fde4c67f5fd86941d2fab50becf32 innounp036.rar 2 | -------------------------------------------------------------------------------- /distfiles/libgettextpo-0.17-1-mingw32-dll-0.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | ddcd7c17ddfe6f2fe8cb4bb244fed197 libgettextpo-0.17-1-mingw32-dll-0.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libgmp-5.0.1-1-mingw32-dll-10.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 5429715e4788eab934229d3941efc2dc libgmp-5.0.1-1-mingw32-dll-10.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libiconv-1.13.1-1-mingw32-dll-2.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | df315275e770cc6c232ee5de6bfa5d85 libiconv-1.13.1-1-mingw32-dll-2.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libiconv-1.13.1-2-msys-1.0.13-bin.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 8fa36ac50edeae7f1ebb5ef820b6a3e4 libiconv-1.13.1-2-msys-1.0.13-bin.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 576a7971950f256f51558fa465ae364b libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libintl-0.17-1-mingw32-dll-8.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 3eb8590e4caddc037f21f6148aa42a09 libintl-0.17-1-mingw32-dll-8.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libintl-0.17-2-msys-dll-8.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 236dd344ed4a671707e8fe40bd8ec944 libintl-0.17-2-msys-dll-8.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libmpc-0.8.1-1-mingw32-dll-2.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | a4e341b0cd1d407d8c03cacc715088f7 libmpc-0.8.1-1-mingw32-dll-2.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | f7341132ca48b4cfa01446b8a561342f libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | b928aed6d689cb57283b2520607e5eca libregex-1.20090805-2-msys-1.0.13-dll-1.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 9ba68b4ccdcb751f4f60f9d289ebd2f8 libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/lxml-3.2.3.win32-py2.7.exe.md5: -------------------------------------------------------------------------------- 1 | 14ab978b7f0a3382719b65a1ca938d33 lxml-3.2.3.win32-py2.7.exe 2 | -------------------------------------------------------------------------------- /distfiles/make-3.81-3-msys-1.0.13-bin.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 4fe6fe4dd974c73803413a44bbd9bb1d make-3.81-3-msys-1.0.13-bin.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/matplotlib-1.2.0.win32-py2.7.exe.md5: -------------------------------------------------------------------------------- 1 | d8ad635cf5e4b54986be61180955c62e matplotlib-1.2.0.win32-py2.7.exe 2 | -------------------------------------------------------------------------------- /distfiles/mingwrt-3.20-2-mingw32-dev.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 1da321aa03a810616de1c59c516b9f9c mingwrt-3.20-2-mingw32-dev.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/mingwrt-3.20-2-mingw32-dll.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | dd3fdb516bc191a6afcbb60c41f2f3fb mingwrt-3.20-2-mingw32-dll.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/mingwrt-3.20-mingw32-dev.tar.gz.md5: -------------------------------------------------------------------------------- 1 | 2d2f5c8165ff9c29661a5be96336a4f7 mingwrt-3.20-mingw32-dev.tar.gz 2 | -------------------------------------------------------------------------------- /distfiles/mingwrt-3.20-mingw32-dll.tar.gz.md5: -------------------------------------------------------------------------------- 1 | 9115617aad0cab7fdfa124d2a9c59552 mingwrt-3.20-mingw32-dll.tar.gz 2 | -------------------------------------------------------------------------------- /distfiles/msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | 5fed039c5982bab48cf658b992755368 msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/netifaces-0.10.6-py2.7-win32.egg.md5: -------------------------------------------------------------------------------- 1 | adcc1bfae02e1373a7539c16ba4aeed2 netifaces-0.10.6-py2.7-win32.egg 2 | -------------------------------------------------------------------------------- /distfiles/numpy-1.6.1.win32-py2.7.exe.md5: -------------------------------------------------------------------------------- 1 | 30bec16292be262bd78ff1878a7d8953 numpy-1.6.1.win32-py2.7.exe 2 | -------------------------------------------------------------------------------- /distfiles/python-2.7.2.msi.md5: -------------------------------------------------------------------------------- 1 | 44c8bbe92b644d78dd49e18df354386f python-2.7.2.msi 2 | -------------------------------------------------------------------------------- /distfiles/pywin32-216.win32-py2.7.exe.md5: -------------------------------------------------------------------------------- 1 | 042a633e727bf8e1a899a94abf45be01 pywin32-216.win32-py2.7.exe 2 | -------------------------------------------------------------------------------- /distfiles/simplejson-2.2.1.tar.gz.md5: -------------------------------------------------------------------------------- 1 | 070c6467462bd63306f1756b01df6d70 simplejson-2.2.1.tar.gz 2 | -------------------------------------------------------------------------------- /distfiles/six-1.11.0-py2.py3-none-any.whl.md5: -------------------------------------------------------------------------------- 1 | 866ab722be6bdfed6830f3179af65468 six-1.11.0-py2.py3-none-any.whl 2 | -------------------------------------------------------------------------------- /distfiles/vcredist_x86.exe.md5: -------------------------------------------------------------------------------- 1 | b936f0f378b9a35489353e878154e899 vcredist_x86.exe 2 | -------------------------------------------------------------------------------- /distfiles/w32api-3.17-2-mingw32-dev.tar.lzma.md5: -------------------------------------------------------------------------------- 1 | c3a86ffa6b8c21de868df54e4e38f05e w32api-3.17-2-mingw32-dev.tar.lzma 2 | -------------------------------------------------------------------------------- /distfiles/wxPython2.8-win32-unicode-2.8.12.1-py27.exe.md5: -------------------------------------------------------------------------------- 1 | 895ba07ea6c05fcdbc273a921bad787b wxPython2.8-win32-unicode-2.8.12.1-py27.exe 2 | -------------------------------------------------------------------------------- /distfiles/zeroconf-0.19.1-py2.py3-none-any.whl.md5: -------------------------------------------------------------------------------- 1 | 27cb34c684aa2c6ed5b66279d8d81082 zeroconf-0.19.1-py2.py3-none-any.whl 2 | -------------------------------------------------------------------------------- /distfiles/zope.interface-4.3.2-py2.7-win32.egg.md5: -------------------------------------------------------------------------------- 1 | f011c5fbd4c2e0f21df80afb52c833c3 zope.interface-4.3.2-py2.7-win32.egg 2 | -------------------------------------------------------------------------------- /install.nsi: -------------------------------------------------------------------------------- 1 | 2 | SetCompressor /SOLID /FINAL lzma 3 | SetDatablockOptimize off 4 | 5 | !include MUI2.nsh 6 | 7 | ; MUI Settings 8 | !define MUI_ICON "build\beremiz\images\brz.ico" 9 | !define MUI_HEADERIMAGE 10 | !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\nsis.bmp" ; optional 11 | !define MUI_ABORTWARNING 12 | 13 | ; Documentation 14 | !insertmacro MUI_PAGE_WELCOME 15 | !define MUI_LICENSEPAGE_CHECKBOX 16 | !insertmacro MUI_PAGE_LICENSE "license.txt" 17 | !insertmacro MUI_PAGE_DIRECTORY 18 | !insertmacro MUI_PAGE_INSTFILES 19 | !insertmacro MUI_PAGE_FINISH 20 | 21 | !insertmacro MUI_UNPAGE_CONFIRM 22 | !insertmacro MUI_UNPAGE_INSTFILES 23 | 24 | !insertmacro MUI_LANGUAGE "English" 25 | 26 | Name "YAPLC $BVERSION" 27 | OutFile "YAPLC-$BVERSION.exe" 28 | InstallDir "$PROGRAMFILES\YAPLC" 29 | !define PYTHONW_EXE "$INSTDIR\python\pythonw.exe" 30 | !define IDE_EXE '"$INSTDIR\IDE\yaplcide.py"' 31 | 32 | Section "Beremiz" 33 | SetOutPath $INSTDIR 34 | File /r /x debian /x *.pyc build\* 35 | SectionEnd 36 | 37 | Section "Install" 38 | ;Store installation folder 39 | WriteRegStr HKCU "Software\YAPLC" "" $INSTDIR 40 | ;Create uninstaller 41 | WriteUninstaller "$INSTDIR\Uninstall.exe" 42 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAPLC" "Contact" "main@nucleron.ru" 43 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAPLC" "DisplayName" "YAPLC-$BVERSION" 44 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAPLC" "Publisher" "Nucleron R&D LLC" 45 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAPLC" "URLInfoAbout" "https://github.com/nucleron/yaplc" 46 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAPLC" "UninstallString" "$INSTDIR\uninstall.exe" 47 | SectionEnd 48 | 49 | Section "Shortcuts" 50 | SetShellVarContext all 51 | CreateDirectory "$SMPROGRAMS\YAPLC" 52 | CreateShortCut "$SMPROGRAMS\YAPLC\PlcopenEditor.lnk" "${PYTHONW_EXE}" '"$INSTDIR\beremiz\plcopeneditor.py"' "$INSTDIR\beremiz\images\poe.ico" 53 | CreateShortCut "$SMPROGRAMS\YAPLC\YAPLC-IDE.lnk" "${PYTHONW_EXE}" '${IDE_EXE}' "$INSTDIR\beremiz\images\brz.ico" 54 | CreateShortCut "$SMPROGRAMS\YAPLC\Uninstall.lnk" "$INSTDIR\uninstall.exe" 55 | SetShellVarContext current 56 | CreateShortCut "$DESKTOP\YAPLC-IDE-$BVERSION.lnk" "${PYTHONW_EXE}" '${IDE_EXE}' "$INSTDIR\beremiz\images\brz.ico" 57 | SectionEnd 58 | 59 | Section "Uninstall" 60 | SetShellVarContext all 61 | Delete "$INSTDIR\Uninstall.exe" 62 | Delete "$SMPROGRAMS\YAPLC\PlcopenEditor.lnk" 63 | Delete "$SMPROGRAMS\YAPLC\YAPLC-IDE.lnk" 64 | RMDir /R "$SMPROGRAMS\YAPLC" 65 | RMDir /R "$INSTDIR" 66 | DeleteRegKey /ifempty HKCU "Software\YAPLC" 67 | DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YAPLC" 68 | SetShellVarContext current 69 | Delete "$DESKTOP\YAPLC-IDE.lnk" 70 | SectionEnd 71 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | License, Use and Redistribution 2 | This distribution comes with several packages included: 3 | - YAPLC/IDE is licensed under the "GNU GENERAL PUBLIC LICENSE V3" 4 | - YAPLC/RTE is licensed under the "Yet Another Public License V 1.0" 5 | - Beremiz is licensed under the "GNU GENERAL PUBLIC LICENSE V2 or later" 6 | - Beremiz PLC runtime code is licensed "GNU LESSER GENERAL PUBLIC LICENSE V2 or later" 7 | - matiec is licensed under the "GNU GENERAL PUBLIC LICENSE V3 or later" 8 | - stm32flash is licensed under the "GNU GENERAL PUBLIC LICENSE V2" 9 | - YaPySerial is licensed under the "GNU GENERAL PUBLIC LICENSE V2" 10 | - libopencm3 - is licensed under the "GNU LESSER GENERAL PUBLIC LICENSE V3" 11 | - freemodbus is licensed under the "3 clause BSD license" 12 | - wxWidgets, wxPython is currently licensed under the "wxWindows Licence". Refer to http://www.wxwidgets.org/about/licence3.txt 13 | - GNU ARM Embedded Toolchain components are licensed under the set of open source licenses, see https://launchpad.net/gcc-arm-embedded for details. 14 | -------------------------------------------------------------------------------- /public.mk: -------------------------------------------------------------------------------- 1 | 2 | targets_ex+= canfestival 3 | 4 | 5 | --------------------------------------------------------------------------------