nodeAccess

nodeAccess

A website is nice if you want to look into an engine or an unit, but for remote control you need functions which can be installed into your program surroundings. nodeAccess™ offers this possibility with a DLL which makes in- and outputports on a far-off ethernode® or a TSM-CPU directly manipulable. Therewith you save local programming on remote controlled units.

  • Direct access to remote I/Os over a Windows®-DLL
  • Use of the Express-I/O functions on ethernode®:
    • IOInfo
    • IOCfg
    • IOIn
    • IOOut
    • IOVecIn
    • IOVecOut
  • One order can address several ports at the same time
  • Prices
  • Details

nodeAccess™ is available for free on all modules that support Express-I/O and a network.

Express-I/O makes it easy for the programmer to access process I/Os like 24V plugs or temperature sensors without the need for think over portaddresses and bitmanipulation. Already for many years it has been possible to access Express-I/O ports directly over the BITBUS fieldbus even from a master. Also from afar you only have to name at which type of bus the in-/output is located (e.g. at the processor pins, at the I²C-bus or at the TSM-bus), on which module and at which clamp.

nodeAccess™ uses the infrastructure that is built up by BITBUS and calls the BITBUS "BAPI" which is called "BAPITCP" in the TCP/IP version. So you install the included BAPITCP first and connects with BapiTcpCfg a ethernode or a TSM-ARMCPU with the desired IP-address with a BITBUS unit name. Up to 16 units are possible which are usually consecutively named with BBUS0, BBUS1 and so on. For reasons of compatibility you have to rename the in \windows\system32 installed DLL "bapitcp.dll" as "bapint.dll".

Even if the access goes now over Ethernet, we have hold the appellation because the simple master-slave schema is easily comprehensible. For nodeAccess™ addressed ethernode is a BITBUS master (which can actually be true, see ETH-BIT)

The access with nodeAccess™ can be explained with an example where a digital input at clamp 1 is requested:


#include <windows.h>
#include <stdio.h>
#include "nodeacc.h"
int main( int argc, char *argv[], char *envp[])
{
    XPIO_IO_Item in;
    XPIO_IO_Item *in_p;
   
    const char *BitbusDevice = "BBUS0";
    unsigned BitbusNode = 255;
    unsigned bus = BUS_TYPE_CPU;
    unsigned module = CPU_DIN;
    unsigned chan = 0;
   
    /*
    * Get a handle for digital input.
    */

    in_p = &in;
    in_p->hdl = XPIOGetHandle(BitbusDevice, BitbusNode, bus, module, chan); 
    in_p->value = (-1); 
    if (in_p->hdl) { 
       /*
       * Send In to get and display the values.
       */

       XPIOIn(1, &in_p);
       printf("IN %d = %d\n", chan, in_p->value); 
    }
return 0;
}

At first a Bitbusdevice is named "BBUS0".
With BitbusNode = 255 the "Master" is addressed (With "3" you would address a Bitbus slave with the node number 3 which is connected to the ethernode or the TSM-ARMCPU). 
bus = BUS_TYPE_CPU means that the I/Os are addressed which are connected to the CPU itself, not to an extension module (e.g. an analog module at the TSM-ARMCPU). 
module = CPU_DIN is called the module inside the bus (at an I/O extension module the address according to the rotary switch would be declared here, e.g. module = 7).
Finally chan = 0 selects terminal 1 (which is traditionally addressed as "0" in the programming language).

After that the program fetches a reference to the input-port with XPIOGetHandle and the parameters above. If this works out XPIOIn is called and returns with the input's state in in_p->value. Instead of in _p you can use also a variable-name which enables an association to the application, so e.g. motor3active. 

 Now the access  simply uses the function calls XPIOIn and XPIOOut. For reasons of efficiency several ports can be packed into one command, so only one TCP/IP message is travelling over the Ethernet.

In your development environment you have to declare the nodeAccess™-DLL. This is done differently depending on language and tools, but it follows the general instructions for the integration of external libraries. In addition to the example above and the associated visual C++-projects there is also an example on the CD for a command line program allowing to access I/Os on ethernode directly. In its compiled form it is useful as a setup help to test newly installed I/Os.