node-plc
Node.js module to communicate with PLCs.
At the moment only the Siemens LOGO! PLC (0BA7
and 0BA8
) is supported.
Usage
npm install --save plc
var plc = ;
Logo class
var myLogo = "192.168.0.1" markers: 6 // default is 8 inputs: 4 // default is 8 timeout: 500 // socket timeout in milliseconds; myLogo; myLogo; myLogo;
Simulation
var plc = ; var myVirtualLogo = "192.168.0.1" simulate: true ; myLogo; myVirtualLogo;
Comfort features
The LOGO! can be configured with state and action schemata. A states could be described like this:
var myStates = stateOne: input: 0 stateTwo: marker: 2 stateThree: input: 2 ;
An action consists of an array with defined desired states:
var actions = actionOne: type: 'clear' marker: 1 type: 'set' marker: 3 actionTwo: type: 'set' marker: 2 actionThree: type: 'alias' actions: 'actionOne''actionTwo' ;
This is a full example:
var config = timeout: 500 // connection timeout interval: 250 // read state interval states: x: input: 0 y: input: 2 foo: marker: 0 bar: input: 1 actions: switchOne: type: 'set' marker: 3 switchTwo: type: 'set' marker: 1 type: 'alias' switches: 'switchOne' ; var dev1 = "192.168.0.201" config; dev1; dev1; dev1; dev1; dev; dev1;dev1; // ... dev1;dev1;
API
Constructor
"plc";
Following options are available
inputs
- number of used inputsmarkers
- number of used markerssimulate
- simulation modetimeout
- the socket timeout
Properties
ip
isConnected
Methods
connect()
disconnect()
setMarker(nr)
clearMarker(nr)
getMarker(nr)
getMarkers()
getInput(nr)
getInputs()
setSimulatedInput(nr)
clearSimulatedInput(nr)
getState()
setSimulatedState(stateName, value)
setVirtualState(stateName, value)
triggerAction(action)
startWatching
stopWatching
Events
error
connect
disconnect
timeout
state
state-change
Test
npm test
License
This project is licensed under the LGPL license.