Benutzer-Werkzeuge

Webseiten-Werkzeuge


freesigs:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
freesigs:start [2011-08-23 07:13]
becki
freesigs:start [2011-11-16 11:05] (aktuell)
Zeile 2: Zeile 2:
 ===== Overview == ===== Overview ==
  
-Free Signals is a **power logic control** (PLC) in the works. It has some 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. -- Open source for automation developers.   * 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 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 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, it is not recommended . Events are more flexible and effective to work with, and are more 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, just 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 == ==== Hardware ==
  
-  * Any Computer designed to run 24/7, e.g. a [[wp>​SheevaPlug]] +  *  ​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 ​(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.+  * 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}}
  
 ==== Software == ==== Software ==
Zeile 26: Zeile 32:
 ===== Current State / Download == ===== Current State / Download ==
  
-Freesigs is still a young project. ​The Modbus IO connector is completed. The core system ​is currently in the works. Code 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 outputs. Timer 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 is available at [[http://​bitbucket.org/​becki/​freesigs|Bitbucket]]. Bitbucket is also the place to get in contact.
  
 ===== Code Examples == ===== Code Examples ==
 ==== A latching relay in Freesigs / Lua == ==== A latching relay in Freesigs / Lua ==
 +
 +<code 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> <code lua>
Zeile 36: Zeile 52:
 -- Function to control the relay output: -- Function to control the relay output:
 function ctrl_latch_relay() function ctrl_latch_relay()
-    -- just invert output+    ​lamp:​toggle() ​-- just invert ​the output
-    if bc1.do[1].value() then -- returns true or false +
-        bc1.do[1].set(false) +
-    else +
-        bc1.do[1].set(true) +
-    end+
 end end
  
--- Register the function to be called when the digital input #1 of IO device (bus controller) "​bc1"​ rises+-- Register the function to be called when button1 is pressed
-bc1.di[1].on_true(ctrl_latch_relay)+button1:​on_rise(ctrl_latch_relay)
  
--- Register the function to be called when the digital input #2 of IO device (bus controller) "​bc1"​ rises+-- Register the function to be called when button2 is pressed
-bc1.di[2].on_true(ctrl_latch_relay)+button1:​on_rise(ctrl_latch_relay)
 </​code>​ </​code>​
  
Zeile 54: Zeile 65:
  
 <code lua> <code lua>
-bc1.di[1].on_true( +button1:​on_rise(function() ​lamp:toggle() end) 
-    ​function() ​bc1.do[1].set(not bc1.do[1].value()) end +button2:​on_rise(function() ​lamp:toggle() end)
-+
- +
-bc1.di[2].on_true( +
-    ​function() ​bc1.do[1].set(not bc1.do[1].value()) end +
-)+
 </​code>​ </​code>​
  
-==== The sameeven shorter ==+As you can seetwo lines of code are enough to implement a latching relay with Freesigs.
  
-<code lua> +==== For comparison: Traditional PLC code ==
-bc1.di[1].on_true( +
-    function() bc1.do[1].invert() end +
-)+
  
-bc1.di[2].on_true( +<​code>​ 
-    ​function() bc1.do[1].invert() end +# Check if button ​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>​ </​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.1314083637.txt.gz · Zuletzt geändert: 2011-08-24 10:22 (Externe Bearbeitung)

Impressum - Datenschutzerklärung