-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Documentation #78
Comments
After many attempts, I managed to make a server that is working. This is the template I used (I removed all the code that actually gets the correct values) // npm modules
const modbus = require('modbus-stream');
// kill logging
process.on('SIGINT', function () {
console.error('Process killed by SIGINT');
process.exit();
});
// exception logging
process.on('uncaughtException', function (error) {
console.error('Uncaught Exception thrown', error);
process.exit(1);
});
// env variables
const SERVER_PORT = process.env.SERVER_PORT || 502;
modbus.tcp.server({ debug: 'server' }, (connection) => {
console.log('connected');
connection.on('close', () => {
console.log('close');
});
connection.on('error', (error) => {
console.log('error', error);
});
connection.on('read-coils', (request, reply) => {
console.log('\tread-coils', request.request);
const values = [];
for (let i = 0; i < request.request.quantity; ++i) {
const address = request.request.address + i;
const value = 0; // replace this with actual value
values.push(value);
}
reply(null, values);
});
connection.on('read-discrete-inputs', (request, reply) => {
console.log('\tread-discrete-inputs', request.request);
});
connection.on('read-holding-registers', (request, reply) => {
console.log('\tread-holding-registers', request.request);
const values = [];
for (let i = 0; i < request.request.quantity; ++i) {
const address = request.request.address + i;
const value = Buffer.from([ 0x00, 0x00 ]); // replace this with actual value
values.push(value);
}
reply(null, values);
});
connection.on('read-input-registers', (request, reply) => {
console.log('\tread-input-registers', request.request);
});
connection.on('write-single-coil', (request, reply) => {
console.log('\twrite-single-coil', request.request);
});
connection.on('write-single-register', (request, reply) => {
console.log('\twrite-single-register', request.request);
});
connection.on('write-multiple-coils', (request, reply) => {
console.log('\twrite-multiple-coils', request.request);
});
connection.on('write-multiple-registers', (request, reply) => {
console.log('\twrite-multiple-registers', request.request);
});
connection.on('data', (request, reply) => {
console.log('\tdata', request.request);
});
}).listen(SERVER_PORT, () => {
console.log(`Server listening on ${SERVER_PORT}`);
}); |
It was not obvious for me as well, but i managed to write a simple modbus server script with this library. |
Where can I find documentation on how to use this module? Other than the readme, it doesn't seem to exists any kind of documentation around.
I'm trying to create a modbus tcp server to create a simulator, but I'm struggling to understand how to use this module.
Some things I need:
close
,error
andread-coils
?request
object is filled with properties but there is no documentation or example on how to actually use it. Thanks to the debug I can see that the server is receiving the messages from the client, but not all seems to be catched by theread-coils
event, and in general I don't understand how am I supposed to use therequest
object to understand the request and customize the reply.Following my very basic server so far:
The text was updated successfully, but these errors were encountered: