Difference between revisions of "Beremiz"

From ArmadeusWiki
Jump to: navigation, search
(Host)
(Target connection)
Line 99: Line 99:
  
 
* When Beremiz.py is launched on your Host, create or open a project then save it.
 
* When Beremiz.py is launched on your Host, create or open a project then save it.
* With your favorite editor edit the file beremiz.xml then change the URI line:
+
* in project parameters add correct URI location:
 
+
URI_location="PYRO://192.168.0.33:3000">
<source lang="xml">
+
<BeremizRoot URI_location="PYRO://192.168.0.33:3000">
+
</source>
+
  
 
Replace 192.168.0.33 by the IP of your APF28.
 
Replace 192.168.0.33 by the IP of your APF28.
  
* Re-open your project then clic on «connect» icon.
+
* then clic on «connect» icon.
 
* You can compile your project and try to send it...
 
* You can compile your project and try to send it...
* ... but you will have this error :
 
<pre class="apf">
 
PLCobject : OFF LOG :NewPLC (d8ad51386680f2337309dc55eddb4383)
 
python: '/mnt/nfs/beremiz/d8ad51386680f2337309dc55eddb4383.so' is not an ELF executable for ARM
 
PLCobject : Traceback (most recent call last):
 
  File "/mnt/nfs/beremiz/runtime/PLCObject.py", line 135, in LoadPLC
 
    self._PLClibraryHandle = dlopen(self._GetLibFileName())
 
OSError: File not found
 
</pre>
 
 
* Because the defaut compliler for Beremiz.py is not for arm ...
 
 
 
* To configure your compiler, go to project configuration (double clic on head of hierarchy) and adding the path of your compiled armgcc :
 
* To configure your compiler, go to project configuration (double clic on head of hierarchy) and adding the path of your compiled armgcc :
 
  YOUR_ARMADEUS_PATH/buildroot/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc
 
  YOUR_ARMADEUS_PATH/buildroot/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc
Line 126: Line 111:
  
 
* You can then compile and transfert the program to target...
 
* You can then compile and transfert the program to target...
* ... but there still an error :
 
<pre class="apf">
 
PLCobject : OFF LOG :NewPLC (d8ad51386680f2337309dc55eddb4383)
 
python: '/mnt/nfs/beremiz/d8ad51386680f2337309dc55eddb4383.so' is not an ELF executable for ARM
 
PLCobject : Traceback (most recent call last):
 
  File "/mnt/nfs/beremiz/runtime/PLCObject.py", line 135, in LoadPLC
 
    self._PLClibraryHandle = dlopen(self._GetLibFileName())
 
OSError: File not found
 
</pre>
 
 
* This can be fixed by changing code in beremiz beremiz/targets/Linux/plc_Linux_main.c :
 
<source lang="C">
 
/*
 
long long AtomicCompareExchange64(long long* atomicvar, long long compared, long long exchange)
 
{
 
    return __sync_val_compare_and_swap(atomicvar, compared, exchange);
 
}
 
*/
 
static pthread_mutex_t cs_mutex = PTHREAD_MUTEX_INITIALIZER;
 
long long AtomicCompareExchange64(long long* atomicvar, long long compared, long long exchange)
 
{
 
    long long res;
 
 
    pthread_mutex_lock(&cs_mutex);
 
    res=*atomicvar;
 
    if(*atomicvar == compared){
 
        *atomicvar = exchange;
 
    }
 
    pthread_mutex_unlock(&cs_mutex);
 
    return res;
 
}
 
 
</source>
 
  
 
== Links ==
 
== Links ==
  
 
* [http://www.beremiz.org/ Home page of project].
 
* [http://www.beremiz.org/ Home page of project].

Revision as of 13:33, 2 August 2013

Page under construction... Construction.png Informations on this page are not guaranteed !!

Introduction

Beremiz is free software toolkit for automation. It's conform with IEC61131 languages and can drive graphicaly your system.

Beremiz is divided in two softwares:

  • Beremiz.py: The Graphical toolkit that run on the Host to drive the target.
  • Beremiz_service.py: The target runtime that execute the code compiled by Beremiz.py and sent throught network to its.

Then there are two triky things to do to use beremiz on APF* platforms :

  • Configure Beremiz.py to cross-compile binary for ARM
  • Run python program Beremiz_service.py on apf.

Installation

Host

Host part of beremiz is included under armadeus :

make menuconfig

Then select :

Package Selection for the target  --->
    Development tools  --->
        [*] matiec 
    ...
    Graphic libraries and applications (graphic/text)  --->
        [*] beremiz framework 

Then :

make

To launch beremiz type :

python buildroot/output/build/host-beremiz-358db9d64aa1/Beremiz.py 


To see how to install Beremiz on your host, please see the official website (How to build with Linux).

Target

APF28

Python 2.7 and Pyro are required to run Beremiz_service.py.

install python 2.7

run

make menuconfig

On up to date armadeus trunk view, then select :

Package Selection for the target  --->
    Interpreter languages and scripting  --->
        [*] python
            python module format to install (.py sources only)  --->
                          (X) .py sources only

then make :

$ make
Install Pyro3.14

Pyro 3.14 is included under armadeus distribution :

make menuconfig
Package Selection for the target  --->
    Interpreter languages and scripting  --->
        external python modules  --->
            [*] python-pyro
Install Beremiz_service.py

Beremiz_service is included in Armadeus distribution (trunk) :

Package Selection for the target  --->
    Graphic libraries and applications (graphic/text)  --->
        [*] Beremiz --->

Simple usage

Target connection

  • When Beremiz.py is launched on your Host, create or open a project then save it.
  • in project parameters add correct URI location:

URI_location="PYRO://192.168.0.33:3000">

Replace 192.168.0.33 by the IP of your APF28.

  • then clic on «connect» icon.
  • You can compile your project and try to send it...
  • To configure your compiler, go to project configuration (double clic on head of hierarchy) and adding the path of your compiled armgcc :
YOUR_ARMADEUS_PATH/buildroot/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc

for linker and compiler.

  • You can then compile and transfert the program to target...

Links