UNPKG

modbus-connect

Version:

Modbus RTU over Web Serial and Node.js SerialPort

47 lines (39 loc) 1.5 kB
// utils/detect-modbus-address.js const createTransport = require('./factory.js'); const ModbusClient = require('../client.js'); const DEFAULT_SLAVE_IDS = Array.from({ length: 247 }, (_, i) => i + 1); // 1..247 /** * Определение адреса (slave ID) подключенного Modbus RTU устройства. * * @param {string} transportType - 'node' или 'web' * @param {object} options - настройки транспорта (baudRate, parity и т.д.) * @param {Array<number>} slaveIds - опциональный список адресов для перебора * * @returns {number|null} Найденный адрес устройства или null */ async function detectModbusAddress(transportType, options, slaveIds = DEFAULT_SLAVE_IDS) { let transport; try { transport = await createTransport(transportType, options); await transport.connect(); for (const slaveId of slaveIds) { const client = new ModbusClient(transport, slaveId, { timeout: 200 }); try { await client.readHoldingRegisters(0, 1); return slaveId; } catch { // Игнорируем ошибки } } } finally { if (transport) { try { await transport.disconnect(); } catch {} } } return null; } module.exports = { detectModbusAddress }