Twincat ADS protocol implementation for NodeJS
npm install adsads.js
======
A NodeJS implementation for the Twincat ADS protocol.
(Twincat and ADS is from Beckhoff ©. I'm not affiliated.)
Examples
--------
javascript
var ads = require('ads');
var options = {
//The IP or hostname of the target machine
host: "10.0.0.2",
//The NetId of the target machine
amsNetIdTarget: "5.1.204.160.1.1",
//The NetId of the source machine.
//You can choose anything in the form of x.x.x.x.x.x,
//but on the target machine this must be added as a route.
amsNetIdSource: "192.168.137.50.1.1",
//OPTIONAL: (These are set by default)
//The tcp destination port
//port: 48898
//The ams source port
//amsPortSource: 32905
//The ams target port
//amsPortTarget: 801
};
client = ads.connect(options, function() {
this.readDeviceInfo(function(err, result) {
console.log(result);
this.end();
});
});
client.on('error', function(error) {
console.log(error);
});
`
$3
`javascript
var myHandle = {
//Handle name in twincat
symname: '.TESTINT',
//An ads type object or an array of type objects.
//You can also specify a number or an array of numbers,
//the result will then be a buffer object.
//If not defined, the default will be BOOL.
bytelength: ads.INT,
//The propery name where the value should be written.
//This can be an array with the same length as the array length of byteLength.
//If not defined, the default will be 'value'.
propname: 'value'
};
client = ads.connect(options, function() {
this.read(myHandle, function(err, handle) {
//result is the myHandle object with the new properties filled in
console.log(handle.value);
//All handles will be released automaticly here
this.end();
});
});
`
$3
`javascript
client = ads.connect(options, function() {
myHandle.value = 5;
this.write(myHandle, function(err) {
this.read(myHandle, function(err, handle) {
console.log(handle.value);
this.end();
});
});
});
`
$3
`javascript
var myHandle = {
symname: '.CounterTest',
bytelength: ads.WORD,
//OPTIONAL: (These are set by default)
//transmissionMode: ads.NOTIFY.ONCHANGE, (other option is ads.NOTIFY.CYLCIC)
//maxDelay: 0, -> Latest time (in ms) after which the event has finished
//cycleTime: 10 -> Time (in ms) after which the PLC server checks whether the variable has changed
};
client = ads.connect(options, function() {
this.notify(myHandle);
});
client.on('notification', function(handle){
console.log(handle.value);
});
process.on('exit', function () {
console.log("exit");
});
process.on('SIGINT', function() {
client.end(function() {
process.exit();
});
});
`
$3
`javascript
client = ads.connect(options, function() {
this.getSymbols(function(err, symbols) {
console.log(symbols);
this.end();
});
});
``