gpio.ipcore: Manual Copyright 2015 taskit GmbH



Similar documents
BIT COMMANDER. Serial RS232 / RS485 to Ethernet Converter

RN-XV-RD2 Evaluation Board

Matrix 510/520 User Guide

In-System Programmer USER MANUAL RN-ISP-UM RN-WIFLYCR-UM

ENET-710. ENET Ethernet Module ENET-710 JAN / 06 FOUNDATION

1 Serial RS232 to Ethernet Adapter Installation Guide

2015/02/07 05:41 1/23 WIZ550WEB Users' Guide

MAX T1/E1. Quick Start Guide. VoIP Gateway. Version 1.0

Introduction: Implementation of the MVI56-MCM module for modbus communications:

Installation and operation manual

Command Line Interface User s Guide

Application Note. Terminal Server G6

3.1 RS-232/422/485 Pinout:PORT1-4(RJ-45) RJ-45 RS-232 RS-422 RS-485 PIN1 TXD PIN2 RXD PIN3 GND PIN4 PIN5 T PIN6 T PIN7 R+ PIN8 R-

User s Manual TCP/IP TO RS-232/422/485 CONVERTER. 1.1 Introduction. 1.2 Main features. Dynamic DNS

A RF18 Remote control receiver MODULE

AdRadionet to IBM Bluemix Connectivity Quickstart User Guide

DSA-1000 / PRT-1000 Device Server / Thermal Printer

NetBiter webscada Modbus User Manual

ipac-5010 User Guide + -

User Manual Revision English Converter / Adapter Ethernet to RS232 / RS485 (Order Code: HD HD M HD HD M)

Acano solution. Acano Solution Installation Guide. Acano. January B

Using IDENT M System T with Modbus/TCP

BLUETOOTH SERIAL PORT PROFILE. iwrap APPLICATION NOTE

Wireless Communication With Arduino

Network Licensing. White Paper 0-15Apr014ks(WP02_Network) Network Licensing with the CRYPTO-BOX. White Paper

RN-WIFLY-EVAL-UM. WiFly Evaluation Kit Roving Networks. All rights reserved. RN-WIFLY-EVAL-UM Version 1.32r 10/9/2012 USER MANUAL

ModBus Server - KNX. Gateway for integration of KNX equipment into Modbus (RTU and TCP) control systems.

SecureLinx Spider Duo Quick Start Guide

First Steps. Remote Access Gateway IGW/922. with DIL/NetPC ADNP/9200

IRF2000 IWL3000 SRC1000 Application Note - Develop your own Apps with OSGi - getting started

SCS3205/4805 Quick Start Guide

MCB3101 (Class I) WiRobot Serial Bluetooth Wireless Module User Manual

DiskPulse DISK CHANGE MONITOR

RN-131-PICTAIL & RN-171-PICTAIL Web-Server Demo Application

Starting a Management Session

ACCESS 9340 and 9360 Meter Ethernet Communications Card ETHER

Alarm Messages Clearing the Hardware Alarms How to Log On Summary Page Navigation Menu... 24

FINS Gateway For OMRON PLCs

Configuring the Beckhoff BK9000 Network Parameters

Follow these steps to prepare the module and evaluation board for testing.

Internet-bridge XPort

Programming and Using the Courier V.Everything Modem for Remote Operation of DDF6000

Intel Do-It-Yourself Challenge Lab 2: Intel Galileo s Linux side Nicolas Vailliet

This document explains how to configure and use the IOPRINT+ Print Server in the Unix TCP/IP environment.

EMS. EtherCAN CI. Ethernet/CAN Interface. User Manual THOMAS WÜNSCHE. Documentation for Ethernet/CAN interface EtherCAN CI version 2.1.

PMOD Installation on Linux Systems

CP2110-EK CP2110 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup

INSTALLING KAAZING WEBSOCKET GATEWAY - HTML5 EDITION ON AN AMAZON EC2 CLOUD SERVER

How to Log On Main Screen Control Console Menus How to Log On Summary Page Navigation Menu... 29

EMG Ethernet Modbus Gateway User Manual

How To Connect A Directsofl To A Powerpoint With An Acd With An Ctel With An Dm-Tel Modem On A Pc Or Ipad Or Ipa (Powerpoint) With A Powerline 2 (Powerline

IP SERIAL DEVICE SERVER

CNC File Transfer Box. Connecting the CNC File Transfer. CNC Transfer Program

Quick Start Guide. Quick Start Guide. taskit GmbH. for Portux920T EU / SW Portux Mini-PC Portux Panel-PC Panel-Card MoLUX Stamp

Overview of ServerView Windows Agent This chapter explains overview of ServerView Windows Agent, and system requirements.

Easy Setup Guide 1&1 CLOUD SERVER. Creating Backups. for Linux

RSA Security Analytics. S4 Broker Setup Guide

Network Attached Storage User Manual

CYAN SECURE WEB HOWTO. NTLM Authentication

Application Note 2. Using the TCPDIAL & TCPPERM Commands to Connect Two TransPort router Serial Interfaces Over TCP/IP.

Project management integrated into Outlook

Version 0.1 June Xerox WorkCentre 7120 Fax over Internet Protocol (FoIP)

isco Connecting Routers Back to Back Through the AUX P

F2103 GPRS DTU USER MANUAL

USER S GUIDE Switched Rack PDU

Hands-on MESH Network Exercise Workbook

Command Line Interface User s Guide

LockView CompX Database & Network Configuration & Installation Manual

TCP/IP MODULE CA-ETHR-A INSTALLATION MANUAL

GV-Data Capture V3 Series User's Manual

Application Discovery Manager User s Guide vcenter Application Discovery Manager 6.2.1

RMCS Installation Guide

Product Manual. MDM On Premise Installation Version 8.1. Last Updated: 06/07/15

Installation and Configuration Guide for Windows and Linux

How To Set Up A Backupassist For An Raspberry Netbook With A Data Host On A Nsync Server On A Usb 2 (Qnap) On A Netbook (Qnet) On An Usb 2 On A Cdnap (

Tool for Automated Provisioning System (TAPS) Version 1.2 (1027)

HomeWorks P5 Processor Ethernet TCP / IP Networking Specification

LockView 4.2 CompX Database & Network Configuration & Installation Manual

Expert Power Control NET 4x 8212 / 8213

Router CLI Overview. CradlePoint, Inc.

HP A-IMC Firewall Manager

Standalone recorder instruction

EXPRESSCLUSTER X for Windows Quick Start Guide for Microsoft SQL Server Version 1

AN4128 Application note

Debugging Network Communications. 1 Check the Network Cabling

Installation and Configuration Guide for Windows and Linux

Environmental Management System

Modbus Communications for PanelView Terminals

PePWave Surf Series PePWave Surf Indoor Series: Surf 200, AP 200, AP 400

Library ModbusRTUlib Modbus RTU master communication. TXV rd Issue February 2010 All rights reserved

Volume. Instruction Manual

IP Card Reader Interface User Manual

How Do I Recover infiniti Remotes and Line Cards?

Master-Touch and ValuMass. Modbus Communications. INSTRUCTION MANUAL (Rev. 2.1)

CS 326e F2002 Lab 1. Basic Network Setup & Ethereal Time: 2 hrs

Prestige 314 Read Me First

USER GUIDE. Ethernet Configuration Guide (Lantronix) P/N: Rev 6

Integration Guide. Microsoft Active Directory Rights Management Services (AD RMS) Microsoft Windows Server 2008

Transcription:

gpio.ipcore Manual

gpio.ipcore: Manual Copyright 2015 taskit GmbH gpio.ipcore All rights to this documentation and to the product(s) described herein are reserved by taskit GmbH. This document was written with care, but errors cannot be excluded. Neither the company named above nor the seller assumes legal liability for mistakes, resulting operational errors or the consequences thereof. Trademarks, company names and product names may be protected by law. This document may not be reproduced, edited, copied or distributed in part or in whole without written permission. This document was generated on 2015-07-30T16:51:18+02:00.

Table of Contents gpio.ipcore 1. Overview... 1 2. Commissioning... 2 2.1. RS485... 2 2.2. USB... 2 2.3. Booting and usage... 2 2.4. Useful tools... 2 2.5. Changing root password... 2 3. REST interface... 4 3.1. Example 1: Access a card at the RS485 Modbus... 4 3.2. Example 2: Access to the database... 4 4. Scripting... 5 4.1. LUA... 6 4.2. Python... 8 4.3. Automated starting of scripts... 8 5. Modbus server (MBTCP)... 10 6. Restinio... 11 7. Technical data... 12 7.1. Modbus port... 12 7.2. Debug console... 12 iii

List of Figures gpio.ipcore 4.1. Internal structure... 5 iv

List of Tables gpio.ipcore 2.1. Default login information... 2 4.1. Extensions to the LUA language on gpio.ipcore... 7 5.1. MBTCP configuration... 10 7.1. Electrical charachteristics... 12 7.2. RS485 (DSUB female connector X13)... 12 7.3. RS232 (DSUB male connector X6)... 12 v

1. Overview Overview The gpio.ipcore forms the interface of the GPIO system in an IP network. Along with its function as a gateway between several GPIO Modbus devices and network applications on the basis of HTTP-REST protocols, the ipcore offers a flexible script interface which allows to monitor and control the Modbus hardware connected. Both together turn the device into an indepent IO controller on which it is easy to implement processes thanks to simple programmability. Common scripting languages (Python, NodeJS and Lua) are preinstalled and configured on the ipcore. Communication is possible between different scripts or with external devices, via a lightweight database. Any keys can be exported from the database via HTTP/REST. In this way, simple communication between control script and visualisation is possible indepently of any system. Simultaneous access to the Modbus is managed by the integrated Modbus TCP server. The standard RS485 Modbus can be expanded by up to two USB Modbuses. By using taskit's GPIO modules, three separate RS485 buses (two via the USB gateway) can be managed and controlled by the ipcore. Networking of several gpio.ipcore amongst themselves is possible also. 1

2. Commissioning Commissioning Power is supplied via a 5V USB unit which is connected to micro USB port X14 (between the two DSUBs). The ipcore can provide supply for modules at the RS485 bus. Here, the maximum current that can be supplied via the power supply unit must be taken into account. After deduction of the own consumption of max. 1W@5V, 1800mA will remain in a 2A power supply unit for the IO cards connected. 2.1. RS485 The RS485 bus of the ipcore is located at X13 (DSUB socket) on pins 4 (RS485+) and 6 (RS485-). A gpio.net IO card can be connected directly by means of a normal serial 1-1 cable. In a similar manner, all other cards can be hung in a row by connecting the DSUB socket to the DSUB plug. 2.2. USB The two USB host ports X9 can also be used to connect a gpio.net IO card. This card then serves as a gateway between the USB and all other IO cards connected to it. 2.3. Booting and usage After switching on the ipcore (power supply is present, push button SW1 has been briefly pressed), the Modbus TCP server, the REST interface and the database start automatically. User-defined scripts can also be executed automatically. The gpio.ipcore obtains its IP address on its own via DHCP and uses the mdns protocol (Avahi, Bonjour, Zeroconf) to publish its IP. An ipcore can be accessed on ipcore.local. The device responds to command ping ipcore.local in a shell (Windows/MAC/Linux). The REST interface can be accessed via URL http://ipcore.local/gpio by using a browser. To ensure to above method works, Bonjour (from Apple) must be installed in Windows, and Avahi must be installed in Linux. For more configurations of the system and to upload the scripts, the device can be accessed via SSH. User Password REST interface user password SSH root taskit Table 2.1. Default login information 2.4. Useful tools The use of the following tools is recommed for easy access to the gpio.ipcore in Windows: Putty, curl, winscp. Linux usually brings all necessary tools along already. 2.5. Changing root password We strongly advise the user to change the default password for root access. In order to do so, login via SSH using the information from Table 2.1, Default login information. 2

Commissioning Run the command "passwd" to set a new password for root. It asks the user to enter the old and the new password. Afterwards - before any change is done - you need to repeat the new password. All following SSH login attempts are checked against the new password. This does not change the default password for the REST interface! See Chapter 6, Restinio for details about that interface. 3

3. REST interface REST interface The gpio.ipcore is accessed by HTTP GET, PUT or POST commands. The URL used either directly describes a Modbus resource (http://ipcore.local/gpio/...) or a key in the database (http://ipcore.local/shared/...). Data is transmitted in JSON format. 3.1. Example 1: Access a card at the RS485 Modbus Let's assume several gpio.net cards at the bus. Address 5 is a gpio.relay card. Enquiries to the REST interface (GET) either provide a list of continuative suffixes or a simple object containing the result of the enquiry: http://ipcorelocal/gpio/rs485 [1, 3, 4, 5, 9] http://ipcore.local/gpio/rs485/5 ["out","in","relay","counter"] http://ipcore.local/gpio/rs485/5/in/a1 {"Value": 1} 3.2. Example 2: Access to the database Queries (GET) about any keys will result in a tuple consisting of the key (string) and its saved value (string): http://ipcore.local/shared/mykey {"key": "mykey", "value": "null"} {"key": "mykey", "value": "data associated with mykey"} The setting (PUT/POST) of keys is performed by writing a value to any (even if nonexistent) key. There, the data type of the value is always a string. curl anyauth user user:password data "Test" ipcore.local/shared/newkey curl anyauth user user:password data "123" ipcore.local/shared/new/test 4

4. Scripting Scripting The behaviour of the gpio.ipcore can be automated through scripts. In the process, the database (Redis), and Modbus and the REST servers form uniform interfaces. Supported scripting languages are Lua, Python and JavaScript. Figure 4.1, Internal structure shows the interaction of the components involved. [RS485] [USB1] [USB2] /etc/m btcp.conf MBTCP- Server RS485 USB1 USB2 nodejs LEM LUA m achine Pyt hon REST- Server HTTP, JSON Java Script LUA script Pyt hon script Dat abase Figure 4.1. Internal structure The scripts may run in parallel to each other and s enquiries to the Modbus server. The necessary Modbus libraries are preinstalled for the respective languages. Processes that, for instance, check on threshold values or intervene in a regulating manner without external assistance, that is, without additional logic from outside, can be realised completely in the ipcore itself. Nonetheless, the entire hardware connected is also available to the outside via a REST interface. The system gains full flexibility through the connection between script and database and between database and the REST server. In this way, it is possible to transmit user-defined keys whose meaning is defined by a script, to an external front. Even more complex control instructions that require changes to several Modbus modules or that are to effect state changes to the standard script, can thus be given efficiently with just one HTTP access. 5

Scripting Python, Lua or NodeJS scripts are saved in directory /var/ipcore/. It is recommed to create a separate subdirectory for each script. cd /var/ipcore mkdir myscript cd myscript vim myscript.py chmod +x myscript.py The following scripts are examples of this: 4.1. LUA The following script searches for a gpio.ai module in all buses available and continuously records measurements issued by the standard output. #! /usr/bin/lem /etc/mbtcp.conf --[[ 1. Look for a gpio.ai module on all busses 2. Configure gpio.ai 3. Get data ]] -- return card type function get_card_type(id) _, _, ct, _, _ = string.match(id, "^(.*):(.*):(.*):(.*):(.*)$") ct = "0x".. ct ct = tonumber(ct) if ct == 0x0200 then return "AO" elseif ct == 0x0100 then return "AI" elseif (ct >= 0x0010) and (ct <= 0x009F) then return "DIO" elseif (ct >= 0x00A0) and (ct <= 0x00FF) then return "Relais" return nil -- return bus and Modbus ID of the first card matching type function find_card_type(type) bus_list = tml.get_busses() for _, bus in ipairs(bus_list) do for i = 1, 16, 1 do ret, id = tml.report_id(bus, i) if ret == 0 then if get_card_type(id) == type then return bus, i return nil local bus, mb_id = find_card_type("ai") tml.write_regs(bus, mb_id, 0x0100, {65535, 2}) print("bus: ".. bus.. " id: ".. mb_id) print("\nin0... IN7 in mv") while true do -- read IN0 to IN7 ret, v = tml.read_input_regs(bus, mb_id, 0, 8) 6

Scripting if ret == 0 then -- output data as mv for i = 1, #v, 1 do io.write(string.format("%7.2f ", v[i]*4096/65535)) io.write("\r") io.flush() else print("error: ".. ret) -- sleep 1 second lem.sleep_msec(1000) The Lua interpreter has been expanded by various functions for easy access to the Modbus hardware. Table 4.1, Extensions to the LUA language on gpio.ipcore provides information on the functions added by taskit GmbH. Function definition Signature Description name = lem.get_name() nil string Returns the interpreter's name and version information. time = lem.get_msec() nil number Returns system timer in milliseconds. rc, obuf = tml.modbus_command(bus, id, cmd, ibuf) rc, regs = tml.read_holding_regs(bus, id, addr, n) rc, regs = tml.read_input_regs(bus, id, addr, n) rc = tml.write_regs(bus, id, addr, regs) rc, bits = tml.read_coils(bus, id, addr, n) rc, bits = tml.read_inputs(bus, id, addr, n) rc = tml.write_coils(bus, id, addr, bits) rc, id_string = tml.report_id(bus, id) (string, number, number, table) (number, table) (string, number, number, number) (number, table) (string, number, number, number) (number, table) (string, number, number, table) number (string, number, number, number) (number, table) (string, number, number, number) (number, table) (string, number, number, table) number (string, number) (number, string) A generic Modbus command cmd is s to the server identified by bus. Parameters are stored as numbers in the table ibuf. The Modbus device is addressed using id. An error code rc and output values (e.g. Modbus registers) as table of numbers obuf are returned. Reads n holding registers starting at addr. Returns errorcode rc and a table of registers (numbers) regs. Same as tml.read_holding_regs but for input registers. Writes register set regs (table of numbers) starting at addr. Similar to tml.read_holding_regs but for read-/writable bit values. Bits are returned in table bits (numbers). A logic false is represented by 0, anything else equals true. Same as tml.read_coils but for read-only bit values. Same as tml.write_regs but for bitwise data. Bits are taken from table bits (numbers). A logic false is represented by 0, anything else equals true. Returns the identification string id_string for the addressed Modbus device (bus, id). 7

Scripting Function definition Signature Description bus_list = tml.get_busses() nil -> table Returns a list of available Modbus server connections as table of strings. Those strings are used as bus parameter in all tml.* commands. Table 4.1. Extensions to the LUA language on gpio.ipcore 4.2. Python In this example, a digital input and a relay of the gpio.relay card is connected to the internal database. These can then be used via the REST interface on URL http:// ipcore.local/shared/button and http://ipcore.local/shared/relay. The actions standing behind these URLs can, of course, turn out to be far more complex than in this example. #!/usr/bin/env python2.7 import redis from pymodbus.client.sync import ModbusTcpClient r = redis.strictredis(host = '127.0.0.1', port = 6379, db = 0) mb = ModbusTcpClient("127.0.0.1", 12346) oldbuttonstate = False oldrelaystate = False while True: buttonstate = mb.read_discrete_inputs(unit = 8, address = 2).bits[0] if oldbuttonstate!= buttonstate: oldbuttonstate = buttonstate if buttonstate == True: print "Button pressed" r.incr('button') relaystate = r.get('relay') if oldrelaystate!= relaystate: oldrelaystate = relaystate if relaystate == "1": print "Turning relay on" mb.write_coil(unit = 8, address = 4, value = 1) else: print "Turning relay off" mb.write_coil(unit = 8, address = 4, value = 0) 4.3. Automated starting of scripts The two previous scripts both contain in their first line a construct in the form of #! command parameter. This helps the system to start the appropriate interpreter for the script. If the data has been generated as described in the last paragraph, it can be easily started and stopped by the system automatically. The following steps are required to have myscript.py managed by the system: mkdir /service/myscript cd /service/myscript ln s /var/ipcore/myscript/myscript.py run 8

Scripting The script is now executed promptly and after each start of the system. Should it crash for any reason, it will be restarted. Here, there is a pause of one second to prevent a system from being blocked due to an erroneous script. The script can be stopped via svc d / service/myscript and be restarted via svc u /service/myscript. If it is meant to be removed permanently, the above directory can simply be deleted ( rm rf /service/ myscript ) without touching on the original ( /var/ipcore/myscript/myscript.py ). Lua scripts are executed by interpreter lem. This is a Lua interpreter already offering Modbus support and some auxiliary functions. The configuration file of the Modbus server is transmitted to lem as a parameter, simplifying to select the appropriate port and IP address of an individual bus in your script. 9

Modbus server (MBTCP) 5. Modbus server (MBTCP) For each of the ipcore's serial ports - including the two USB hosts - an instance of the Modbus TCP server (MBTCP) can be launched. The server manages access to the devices that are attached to its related serial port. It configures the hardware, queques requests and finally submits the results to their originators. MBTCP provides a standard Modbus TCP and an ASCII connection for debugging and simple programs that do not need the Modbus TCP stack. The user is free to use either. The configuration file is located in "/etc/mbtcp.conf". It contains all the vital information for the MBTCP servers and clients. By default, there are three sections: RS485, USB1 and USB2. Parameters used for LEM and the Modbus servers are stored as simple key-value pairs with an equals sign as delimiter between key and value. A sections begins with its name in square brackets and s with the start of the next section or the of file. The following except makes this more clear. [USB1] dev=/dev/usb1 mode=ascii tcp_port=12346 ascii_port=33334 host=localhost timeout=100 [RS485]... Table 5.1, MBTCP configuration describes the config items, their use and default values. Some items from this configuration are also used by the LUA machine (LEM). Item MBTCP LEM Default value Description dev yes no The device file used as Modbus connection baud_rate yes no 9600 Selects connection speed data_bits yes no 8 Bits used per character parity yes no even Method user for parity checking stop_bits yes no 1 Number of stop bits per character media yes no rs485 Selects between RS232 and RS485 handling mode yes no rtu Modbus mode on serial line (rtu or ascii) timeout yes no 1000 Max. time in ms used for packet reception host no yes Host to connect to bind yes no 0.0.0.0 Interface for listening max_conn yes no 16 Max. number of open connections handled by server tcp_port yes no Port used for Modbus TCP ascii_port yes yes Port used for Modbus ASCII protocol over TCP Table 5.1. MBTCP configuration 10

6. Restinio Restinio Restinio is an optional service that provides the REST interfaces to Modbus and the Redis database. It is launched by default and can be stopped or restarted just like user defined scripts using the svc command. The link to its run script resides in "/service/restinio". During normal operation, Restinio does background scans of the connected Modbus devices. Thus, the REST interface offers a plug'n'play mechanism. It can be configured for each Modbus connection in Restinio's config file "/var/ipcore/restinio/restinio.conf". This file also holds the user/password combination and basic Redis setup. Since user scripts can act as HTTP servers, you might consider to disable Restinio completely. In that case, just rename the link to the run script. svc -d /service/restinio mv /service/restinio/run /service/restinio/run.disabled 11

7. Technical data Technical data Specification Value Unit Power supply 5 V Power consumption <700 mw Operating temperature -30.. +85 a b C a The buzzer is limited to -20.. +70 C but unused. b SD card socket is limited to -25.. +85 C. Table 7.1. Electrical charachteristics 7.1. Modbus port MBTCP system uses this port as configured in "/etc/mbtcp.conf" section [RS485]. Pin Description 1 unused 2 unused a 3 unused b 4 RS485+ 5 GND 6 RS485-7 unused 8 unused 9 +5V c a Can be RXD of RS232 "/dev/ttys3". b Can be TXD of RS232 "/dev/ttys3". c This pin can power connected gpio.net modules. Table 7.2. RS485 (DSUB female connector X13) 7.2. Debug console This port runs a debug/emergency shell at 115200 baud 8N1. Pin Description 1 unused 2 RXD 3 TXD 4 unused 5 GND 6 unused 7 unused 8 unused 9 unused Table 7.3. RS232 (DSUB male connector X6) 12