Benutzer-Werkzeuge

Webseiten-Werkzeuge


freesigs:start

Dies ist eine alte Version des Dokuments!


Free Signals

Overview

Free Signals is a power logic control (PLC) in the works. It has some unique features:

  • First of all, Freesigs is distributed under the 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 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 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 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.

Requriements - What do I need?

Hardware

  • Any Computer designed to run 24/7, e.g. a SheevaPlug
  • At least one fieldbus coupler (bus controller). The Wago 750-341, 750-342 and the B&R BC 0087 are known to work.

Software

  • A unix-like operating system, e.g. Slackware. For the SheevaPlug I recommend ARMedslack.
  • C-Compiler (GCC) and Glib
  • Optionally Google Go for some test and development utilities and probably for the web interface (later)

Current State / Download

Freesigs is still a young project. The Modbus IO connector is completed. The core system is currently in the works. We can connect an arbitrary number of bus controllers, register events on digital inputs and control digital outputs. The code examples below are working.

Code is available at Bitbucket.

Code Examples

A latching relay in Freesigs / Lua

-- First give the in- and outputs used speaking names:
button1 = DI(0,0) -- digital input #0 on bus controller #0
button2 = DI(0,1) -- digital input #1 on bus controller #0
lamp    = DO(0,0) -- digital output #0 on bus controller #0
-- A latching relay (impulse relay, Stromstoßschalter) with 2 inputs
 
-- Function to control the relay output:
function ctrl_latch_relay()
    -- just invert output:
    local lampstate= lamp:val()
    lamp:set(not lampstate)
end
 
-- Register the function to be called when button1 is pressed:
button1:on_rise(ctrl_latch_relay)
 
-- Register the function to be called when button2 is pressed:
button1:on_rise(ctrl_latch_relay)

The same, but shorter

    button1:on_rise(function() lamp:toggle() end)
    button2:on_rise(function() lamp:toggle() end)

For comparison: Cyclic approach

-- Latching relay, cyclic approach. Not recommended!
 
old_button1= false
old_button2= false
 
function ctrl_latch_relay()
    -- Check for a rising edge on either input:
    local edge= button1:val() and not old_button1 or button2:val() and not old_button2
 
    -- Invert output if there was a rising edge:
    if edge then
        lamp:toggle()
    end
 
    -- Save current input states for next edge detection:
    old_button1= button1:val()
    old_button2= button2:val()
end
 
-- Tell Freesigs to call the function "ctrl_latch_relay" cyclically:
on_main_timer(ctrl_latch_relay)
Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
freesigs/start.1314466530.txt.gz · Zuletzt geändert: 2011-08-27 17:35 von becki

Impressum - Datenschutzerklärung