Hi-Level API for node-snap7 to communicate with Siemens S7 PCLs (See compatibility).
- Promise based,
async/await
support - Returns javascript objects with parsed var objects
- EventEmitter: (
connect
,disconnect
,connect_error
,value
) - Optional auto reconnect
Blog post about my SIMATIC S7 Web HMI project.
npm install s7client
const {S7Client} = require('s7client');
// PLC Connection Settings
const plcSettings = {
name: "LocalPLC",
host: 'localhost',
port: 9102,
rack: 0,
slot: 2
};
// DBA to read
let dbNr = 1;
let dbVars = [
{ type: "CHAR", start: 0 },
{ type: "BOOL", start: 2, bit: 0 },
{ type: 'INT', start: 3 }
];
let client = new S7Client(plcSettings);
client.on('error', console.error);
(async function() {
await client.connect();
// Read DB
const res = await client.readDB(dbNr, dbVars);
console.log(res);
// Write multiple Vars
await client.writeVars([{
area: 'db', dbnr: 1, type: 'BOOL',
start: 5, bit: 2,
value: true
}]);
client.disconnect();
})();
- Davide Nardella for creating snap7
- Mathias Küsel for creating node-snap7
- S7Client: MIT
- node-snap7: MIT
- snap7: LGPLv3