Я пытаюсь подключиться к Modbus TCP, используя библиотеку modbus-serial для JavaScript. Я подтвердил, что использую правильный IP-адрес и порт. В моей сети нет брандмауэра, а если и есть, то, используя две другие альтернативы, я смог подключить свой Modbus к устройствам и заставить другие устройства выполнять множество задач. Однако я все еще получаю эту ошибку:
ПортNotOpenError { имя: 'PortNotOpenError', сообщение: «Порт не открыт», ошибка: 'ECONNREFUUSED' }
Вот мой код:
const ModbusRTU = require("modbus-serial");
console.info("Imported Library");
const client = new ModbusRTU();
console.info("Defined Client");
client.connectTCP("", { port: });
console.info("Connected to Modbus TCP server");
console.info("");
client.writeCoil(2000, 0x01, function (err) {
if (err) {
console.error(err);
} else {
console.info("Coil successfully set!");
}
});
Я удалил IP и порт в этом вопросе.
Я ожидал, что код включит кондиционер в моем зале, но он показал ошибку.
Кроме того, первое приложение было слишком дорогим, поэтому я не мог его использовать, а второе приложение было бесплатным, но его графику нельзя было настроить, и мне пришлось прибегнуть к моему текущему варианту — NodeJS (v20.10.0) и некоторым дополнениям к нему. настроить вид.
Кроме того, я пробовал использовать как 2000, так и 2001. Я не знаю смещения этой библиотеки (как это проверить)?
https://github.com/yaacov/node-modbus-serial/issues/115 - Здесь они используют RS485. Я использую TCPIP.
Может ли это быть связано с тем, что я временно использую Replit? Должен ли я использовать другую библиотеку JS (Какую библиотеку, как ее использовать?)? Мой код неверен (я нашел код в библиотеке и отредактировал его)?
Спасибо за ваш ответ! Устройство Modbus находится в локальной сети.
И где вы запускаете код? (вы упоминаете Replit в своем вопросе, одна из его функций — запуск кода на облачном сервере, который не сможет получить доступ к чему-либо в вашей локальной сети).
Мне очень жаль, что я забыл ответить тебе.
Не беспокойтесь, просто хотел закрыть это, чтобы другие не тратили время, пытаясь помочь. Если ответ действительно объясняет проблему, пожалуйста, рассмотрите возможность его принятия.
При запуске кода в Replit он будет работать на их серверах, а не на вашем ПК. Это означает, что он не сможет напрямую получить доступ к вещам в вашей локальной сети.
Пожалуйста, подтвердите, как вы запускаете приложение (если оно работает на восстановленных серверах, оно не сможет получить доступ к чему-либо в вашей локальной сети). Хотя я понимаю, почему вы скрываете IP-адреса, это усложняет ответ (пожалуйста, подтвердите, находится ли устройство в локальной сети или имеет общедоступный IP-адрес).