etherlab-nodejs

0.1.4 • Public • Published

Etherlab Node.js

Bind etherlab process and use it directly in node.

Prerequisites

Etherlab must be installed first. To install etherlab, you can follow the instruction from etherlab repository

This package needs the etherlab shared library and header to be installed in /usr/local/.

If etherlab is installed in different location, i.e. /opt/etherlab, then you can create symlink to /usr/local/

ln -s /opt/etherlab/lib/libethercat.so /usr/local/lib/libethercat.so
ln -s /opt/etherlab/include/ecrt.h /usr/local/include/ecrt.h

Slaves Configuration

How to create slave json configuration

Each slave is configured via json file. For example, if a master has 1 Beckhoff EL2008 slave attached, then the configuration would look like this

[
   {
      "alias":0,
      "position":0,
      "vendor_id":"0x00000002",
      "product_code":"0x07d83052",
      "syncs":[
         {
            "index":2,
            "watchdog_enabled":false,
            "pdos":[
               {
                  "index":"0x1600",
                  "entries":[
                     {
                        "index":"0x7000",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               },
               {
                  "index":"0x1601",
                  "entries":[
                     {
                        "index":"0x7010",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               },
               {
                  "index":"0x1602",
                  "entries":[
                     {
                        "index":"0x7020",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               },
               {
                  "index":"0x1603",
                  "entries":[
                     {
                        "index":"0x7030",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               },
               {
                  "index":"0x1604",
                  "entries":[
                     {
                        "index":"0x7040",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               },
               {
                  "index":"0x1605",
                  "entries":[
                     {
                        "index":"0x7050",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               },
               {
                  "index":"0x1606",
                  "entries":[
                     {
                        "index":"0x7060",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               },
               {
                  "index":"0x1607",
                  "entries":[
                     {
                        "index":"0x7070",
                        "subindex":"0x01",
                        "size":1,
                        "add_to_domain":true,
                        "swap_endian":false,
                        "signed":false
                     }
                  ]
               }
            ]
         }
      ]
   }
]

Example

const __etherlab = require('etherlab-nodejs');

const config = './slaves.json';
const frequency = 5000; // in hertz

const etherlab = new __etherlab(config, frequency);

etherlab.on('data', (data, latency) => {
	console.log(data, latency);
	console.log(etherlab.getLatencyAndJitter());
});

etherlab.on('state', current => {
	console.log('master\'s current state ', current);
});

etherlab.on('ready', async () => {
	const domain = await etherlab.getDomain();
	console.log(domain);
});

etherlab.on('error', error => {
	console.error(error);
});

etherlab.start();

Readme

Keywords

Package Sidebar

Install

npm i etherlab-nodejs

Weekly Downloads

8

Version

0.1.4

License

LGPL-2.1

Unpacked Size

24.2 MB

Total Files

4116

Last publish

Collaborators

  • blogo3x