C# Modbus RS-485 tcp
Всем привет, получается у меня есть роутер, на нем я открыл порт 11004 и сделал проброс порта на свой пк , так как я внутри сети роутера и сделал в роутере себе статический ip, есть терминал WRX-708 по интерфейсу RS-485, терминал я перепрошил на свой ip и порт сервера, регистрация в сети проходит, 
но не могу понять как мне теперь из мой программы на C# сделать запрос на чтение регистров, попытался так , но пишет что Socket не открыт
string ipAddress = "188.235.248.186";
int tcpPort = 11004;
TcpClient tcpClient = new TcpClient(); //Create a new TcpClient object.
tcpClient.BeginConnect(ipAddress, tcpPort, null, null);
ModbusIpMaster master = ModbusIpMaster.CreateIp(tcpClient);
// byte slaveID = _slaveId;
ushort startAddress = 0;
//84
ushort numOfPoints = 84;
ushort[] _holding_registerAsync = master.ReadHoldingRegisters(2, startAddress, numOfPoints);
Ответы (1 шт):
Сразу бросилось в глаза: статический IP комп имеет после роутера (в домашней/рабочей подсети). Его видят устройства только внутри этой подсети. Ваш терминал WRX-708 находится вне этой подсети - там же у вас сим-карта, а для мирового интернета придуманного вами в роутере IP адреса не существует. На упомянутом в комментариях 2ip можно увидеть свой "внешний" IP - вот он должен быть также статическим. Делает его статическим ваш провайдер (за доп.плату). Имея статический внешний IP, в вашем роутере нужно "привязать" открываемый порт к вашему ПК (видимо, через уже созданный вами внутренний статический IP). Тогда 2ip покажет открытый порт и терминал сможет стучаться в него, если он в режиме "клиента" (мастера. Мы ж ещё о модбасе говорим...).
Но приведённый код в вопросе говорит, что терминал работает в режиме сервера (slave). ПК - клиент. Чтобы клиент нашёл терминал, терминалу нужен статический IP. Зачем клиенту статический IP - тут я не в курсе (может для ПО терминала, может для безопасности и создания VPN это нужно?), но могу сказать, что в код c# вы пишете не ip:port ПК, а статический ip:port терминала.
И вот тут момент такой, что ещё перед настройками ip/портов нужно определиться, кто сервер, а кто клиент (ваше устройство RS485 отправляет данные или же только отвечает).