Benutzer-Werkzeuge

Webseiten-Werkzeuge


freesigs:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
freesigs:start [2011-08-11 16:12]
becki created
freesigs:start [2011-11-16 11:05] (aktuell)
Zeile 2: Zeile 2:
 ===== Overview == ===== Overview ==
  
-Free Signals is a **power logic control** ​software ​(PLC) in the works. It has some pretty ​unique features:+{{http://​think-deep.com/​becki/​favicons/​freesigs.png }} Free Signals is a **power logic control** (PLC) in the works. It has some unique features:
  
-  * First of all, Freesigs is distributed under the [[http://​www.eclipse.org/​legal/​epl-v10.html|Eclipse Public License]], that means it is freely available. No dongles, no licence fees. Neither for the runtime, nor for the development tool. +  * First of all, Freesigs is distributed under the [[http://​www.eclipse.org/​legal/​epl-v10.html|Eclipse Public License]], that means it is freely available. No dongles, no licence fees. Neither for the runtime, nor for the development tool. -- Open source for automation developers
-  * Freesigs PLC programs are written in [[wp>​Lua_%28programming_language%29|Lua]]. This is a //powerful//, but //easy// to use scripting language. No more messing around with Structured Text or Ladder Diagrams.\\ Whats more, by using a scripting language, there is no intermediate compile cycle. You can try out your code directly.+  * Freesigs PLC user programs are written in [[wp>​Lua_%28programming_language%29|Lua]]. This is a powerful //and// easy to use scripting language. No more awkward ​Structured Text or Ladder Diagrams!\\ Whats more, by using a scripting language, there is no intermediate compile cycle. You can try out your code directly.
   * Freesigs doesn'​t need a development environment. In fact, your web browser is the IDE. This works on every computer and operation system. No need to install anything. All you need is a network connection.   * Freesigs doesn'​t need a development environment. In fact, your web browser is the IDE. This works on every computer and operation system. No need to install anything. All you need is a network connection.
-  * Freesigs works event based. Even though it is possible to write traditional cyclic code, we do not recommend soEvent based code is more flexible and effective to work with, and is CPU friendly. ​See the examples below. +  * Freesigs works event based. Even though it is possible to write traditional cyclic code, it is not recommended ​Events are more flexible and effective to work with, and are more CPU friendly. ​Have a look at the examples below and the [[API]]
-  * Freesigs is extensible. To cope with the multitude of different ​Fieldbusses ​around, the application is split into a core process and one or more IO processes (connectors). To add support for a certain fieldbus, ​only the IO connector needs to be written. It is not necessary to modify the core. Currently Modbus/TCP is implemented.+  * Freesigs is extensible. To cope with the multitude of different ​fieldbusses ​around, the application is split into a core process and one or more IO processes (connectors). To add support for a certain fieldbus ​(or any other connector type)just the IO connector needs to be written. It is not necessary to modify the core. Currently Modbus/TCP is implemented. ​IO connectors can be written in any language. 
 + 
 +===== Documentation == 
 + 
 +  * [[API]] Reference 
 +  * [[Install]] Instructions 
 +  * [[Tutorial]]
  
 ===== Requriements - What do I need? == ===== Requriements - What do I need? ==
 +==== Hardware ==
  
-FIXME+  *  A Computer designed to run 24/7, e.g. a [[wp>​SheevaPlug]]. Of course you can also use a PC or laptop.\\ {{sheevaplug2b.jpg?​90|SheevaPlug}} 
 +  * At least one fieldbus coupler. Eg. [[http://​www.wago.com/​wagoweb/​documentation/​navigate/​nm0dc__e.htm|Wago]] 750-341, 750-342 or B&R BC 0087.\\ {{wago_750-341.jpg?​90|Fieldbus Coupler}}
  
-  ​Any Computer designed to run 24/7 with Slackware or any other unix-like operating system. ​A [[wp>SheevaPlug]] running ​[[http://​armedslack.org/​|ARMedslack]] ​is the first recommendation.+==== Software == 
 + 
 +  ​unix-like operating system, e.g. Slackware. For the SheevaPlug ​I recommend ​[[http://​armedslack.org/​|ARMedslack]].
   * C-Compiler (GCC) and Glib   * C-Compiler (GCC) and Glib
   * [[:​becki:​linux:​modbus#​libmodbus|Libmodbus]]   * [[:​becki:​linux:​modbus#​libmodbus|Libmodbus]]
   * [[http://​www.lua.org/​download.html|Lua 5.1]]   * [[http://​www.lua.org/​download.html|Lua 5.1]]
-  * Google Go (probably, not yet) for the web intercace +  * Optionally ​[[http://golang.org|Google Go]] for some test and development utilities and probably for the web interface (later)
-  * A fieldbus coupler (bus controller). The [[http://www.wago.com/​wagoweb/​documentation/​navigate/​nm0dc__e.htm|Wago]] 750-341, 750-342 ​and the B&R BC 0087 are known to work.+
  
 ===== Current State / Download == ===== Current State / Download ==
  
-As stated before, freesigs is still in the works. We are currently pre-alpha, but code for the Modbus IO and partly for the core system is available at [[http://bitbucket.org/​becki/​freesigs|Bitbucket]].+The Modbus IO connector ​and the core system is completed. We can connect an arbitrary number of bus couplers, register events on digital/analog inputs and control digital/analog outputsTimer can be used. The code examples below are working. 
 +The web programming interface needs yet to be done, but this is not vital anyway.
  
-===== Code Example ​==+Code is available at [[http://​bitbucket.org/​becki/​freesigs|Bitbucket]]. Bitbucket is also the place to get in contact. 
 + 
 +===== Code Examples == 
 +==== A latching relay in Freesigs / Lua ==
  
 <code lua> <code lua>
--- A latching relay in Freesigs / Lua:+-- First give the in- and outputs speaking names: 
 +button1 = DI(0,0) -- digital input #0 on bus coupler #0 
 +button2 = DI(0,1) -- digital input #1 on bus coupler #0 
 +lamp    = DO(0,0) -- digital output #0 on bus coupler #0 
 +</​code>​ 
 + 
 +<code lua> 
 +-- A latching relay (impulse relay, Stromstoßschalter) with 2 inputs
  
 -- Function to control the relay output: -- Function to control the relay output:
 function ctrl_latch_relay() function ctrl_latch_relay()
-    ​if isset(do.modbus1[1]then +    ​lamp:toggle() -- just invert the output
-        reset(do.modbus1[1]) +
-    else +
-        set(do.modbus1[1]) +
-    end+
 end end
  
--- Register the function to be called when the digital input #1 of IO device "​modbus1"​ rises+-- Register the function to be called when button1 is pressed
-on_di_rise("​modbus1",​ 1, ctrl_latch_relay)+button1:​on_rise(ctrl_latch_relay)
  
--- Register the function to be called when the digital input #2 of IO device "​modbus1"​ rises+-- Register the function to be called when button2 is pressed
-on_di_rise("​modbus1",​ 2, ctrl_latch_relay)+button1:​on_rise(ctrl_latch_relay)
 </​code>​ </​code>​
  
 +==== The same, but shorter ==
 +
 +<code lua>
 +button1:​on_rise(function() lamp:​toggle() end)
 +button2:​on_rise(function() lamp:​toggle() end)
 +</​code>​
 +
 +As you can see, two lines of code are enough to implement a latching relay with Freesigs.
 +
 +==== For comparison: Traditional PLC code ==
 +
 +<​code>​
 +# Check if button 1 was pressed:
 +A  button1
 +AN button1_old
 +=  button1_pressed
 +
 +# Check if button 2 was pressed:
 +A  button2
 +AN button2_old
 +=  button2_pressed
 +
 +# Switch light on:
 +A  button1_pressed
 +O  button2_pressed
 +AN lamp
 +S  lamp
 +
 +# Switch light off:
 +A  button1_pressed
 +O  button2_pressed
 +A  lamp
 +R  lamp
 +
 +# Save current state of button1 for next cycle:
 +A  button1
 +=  button1_old
 +
 +# Save current state of button2 for next cycle:
 +A  button2
 +=  button2_old
 +</​code>​
 +
 +===== What comes next ==
 +
 +  * Web programming interface
 +  * Tutorial and install instructions
 +  * Remove Glib dependencies. This allows Freesigs to run on an embedded Linux like the [[:​becki:​linux:​wago_750-860_tips|Wago 750-860]]. With this you can use Freesigs standalone. Or you can use the Bus controller itself as controller for other bus couplers.
 +  * We need a live demo in the Internet
 +  * Create a Lua user library
 +  * More extensibility:​
 +    * Possibility to work with several APIs. For this, each connector gets an API identifier assigned. Commands from an unknown API are simply forwarded to a Lua user callback. Hence the user can create new commands without changing the core.
 +    * Allow Lua user code to start and stop connector child processes during runtime
freesigs/start.1313079120.txt.gz · Zuletzt geändert: 2011-08-22 08:31 (Externe Bearbeitung)

Impressum - Datenschutzerklärung