tuxnsk / nodejs_libmodbus

libmodbus binding for nodejs
41 stars 66 forks source link

News

Fix bindings to libmodbus 3.1.4.

About

This is binding to native library libmodbus (http://libmodbus.org/).

Now working only in *nix system.

Module have native function and framework.

Framework examples

Creating slave device (server)

var log = console.log;
var mb = require('modbus').create();

// create device memory map
var data = mb.createData({ countReg: 5, countBit: 2 });
data.setReg(2, 321);
data.setBit(1, true);
data.dumpData(); // show memory map

// create slave device
var ctx = mb.createSlave({

  // connection type and params
  con: mb.createConTcp('127.0.0.1', 1502),
  //con: mb.createConRtu(1, '/dev/ttyS0', 9600),

  // data map
  data: data,

  // callback functions
  onQuery: function () {
    log('onQuery', mb.query());
    //ctx.dumpData();
    log(ctx.getBits(0, 2));
  },
  onDestroy: function () {
    log('onDestroy');
  }
});

// destroy device
//setTimeout(function () {
//  ctx.destroy();
//}, 5000);

Creating master device (client)

var log = console.log;
//var mb = require('modbus').create(true); // enable debug output
var mb = require('modbus').create();

mb.onError(function (msg) {
  log('ERROR', msg);
});

// create master device
var ctx = mb.createMaster({

  // connection type and params
  con: mb.createConTcp('127.0.0.1', 1502),
  //con: mb.createConRtu(1, '/dev/ttyS1', 9600),

  // callback functions
  onConnect: function () {
    log('onConnect');
    log(ctx.getReg(2));
    ctx.setBit(1, false);
    ctx.destroy();
  },
  onDestroy: function () {
    log('onDestroy');
  }
});

Creating master device use native function

WARNING: native function blocking all processes!

var log = console.log;
var native = require('modbus').native;

// create context
var ctx = native.new_tcp("127.0.0.1", 1502);

// connect to slave device
native.connect(ctx);

// get value
var result = [];
native.read_registers(ctx, 2, 1, result);
log(result[0]);

// set value
native.write_bit(ctx, 1, native.OFF);

// close context
native.close(ctx);
native.free(ctx);

API

createData(arg)

Create data map (use only slave device).

arg[Object] - having next fields:

getBit(adr) - get read/write bit value

getInputBit(adr) - get read only bit value

getReg(adr) - get read/write register value

getInputReg(adr) - get read only register value

getBits(adr, count) - get read/write bits array value

getInputBits(adr, count) - get read only bits array value

getRegs(adr, count) - get read/write registers array value

getInputRegs(adr, count) - get read only registers array value

setBit(adr, val) - set read/write bit value

setInputBit(adr, val) - set read only bit value

setReg(adr, val) - set read/write register value

setInputReg(adr, val) - set read only register value

setBits(adr, val) - set read/write bits array value

setInputBits(adr, val) - set read only bits array value

setRegs(adr, val) - set read/write registers array value

setInputRegs(adr, val) - set read only registers array value

dumpData() - show memory dump

createConTcp(ip, port, max, slaveAddr)

Create connection object for tcp connection.

createConRtu(id, device, baud, parity, dataBit, stopBit)

Create connection object for serial port connection.

createSlave(arg)

Create slave modbus device

arg[Object] - having next fields:

destroy() - destroyed slave device

and all data object api

createMaster(arg)

Create master modbus device

destroy() - destroyed slave device

and all data object api without setInput*