PDA

Просмотр полной версии : [ПЛК100] и TCP



Frayl
03.10.2012, 14:48
Вот я добавил Modbus(slave)[VAR]
В нем подмодуль TCP. Адрес 10. Добавил две 2byte q и a. Закольцевал в тексте q:=a. Затем используя ПЛК-браузер задал IP 192.168.0.10. Перезагрузил.

Далее написал текст программы на ПК (используя nmodbus):


private void btnWrite_Click(object sender, EventArgs e)
{
TcpClient client = new TcpClient("192.168.0.10", 502);
ModbusIpMaster master = ModbusIpMaster.CreateIp(client);
master.WriteSingleRegister(0, 0);
}

Запускаю и программа на ПК выдает ошибку


Необработанное исключение типа "System.IO.IOException" произошло в Modbus.dll

Дополнительные сведения: Read resulted in 0 bytes returned.

>.< теряюсь в догадках

capzap
03.10.2012, 15:14
Затем используя ПЛК-браузер задал IP 192.168.0.10.

А можно всё посмотреть, Конкретно вывод команды PLCInfo, а так же какой IP-адрес у ПК и вообще соединены ли они между собой, пинг проходит?

Frayl
03.10.2012, 15:17
Пинг проходит прекрасно. Более того - я прошиваю плк через Ethernet и отладку веду. У ПК адрес 192.168.0.1

PLCInfo
PLC model MODEL PLC 100
Binary VERSION 2.14.0
Need Target version 2.10
Compiled: 10:44:59 May 16 2011
MAC 6A:77:00:00:71:E9
IP 192.168.0.10
GATE 192.168.0.1
MASK 255.255.255.0
PIC upper version is 07
Licence unlimited
No DAC
PIC lower version is 0a

capzap
03.10.2012, 15:36
теперь, если можно по подробнее что делает команда WriteSingleRegister(0, 0)
первый ноль это наверное адрес регистра, а второй это какое значение присвить, так

Frayl
03.10.2012, 15:37
да
Write a single holding register.

public void WriteSingleRegister(
ushort registerAddress,
ushort value
)

capzap
03.10.2012, 15:43
:) ну теперь основной вопрос, а кому он эту команду посылает?

Frayl
03.10.2012, 15:44
не совсем понял последний вопрос

capzap
03.10.2012, 15:47
где Вы указали номер слейва в своей проге для ПК

Frayl
03.10.2012, 15:49
а в самом начале)

Далее написал текст программы на ПК (используя nmodbus):

Код:
private void btnWrite_Click(object sender, EventArgs e)
{
TcpClient client = new TcpClient("192.168.0.10", 502);
ModbusIpMaster master = ModbusIpMaster.CreateIp(client);
master.WriteSingleRegister(0, 0);
}
вот client это как раз слейв

P.S. Надеюсь что это так

capzap
03.10.2012, 15:53
тогда еще наводящий
В нем подмодуль TCP. Адрес 10. Добавил ...а этот адрес где фигурирует у мастера, зачем слейвам адреса присваивают? Неужто считаете что это последние цифры IP-адреса

Frayl
03.10.2012, 15:55
Кажется ваши наводки возымели действие. Стыд то какой. Мне естественно. А вам спасибо заранее - пойду пробовать.

Хотя уже запутался.

capzap
03.10.2012, 16:05
не факт, что проблема в этом

Yegor
03.10.2012, 17:46
На какой строке исключение вылетает? Стектрейс сюда.

Yegor
04.10.2012, 06:12
Попробовал со своим ПЛК160. Если ставить адрес 10, то и получается «Read resulted in 0 bytes returned». Надо ставить 0 либо пользоваться функциями с указанием адреса: WriteSingleRegister(10, 0, 42).

Frayl
04.10.2012, 07:04
Кому ставить 0? Адрес плк в плк конфигурации?

Frayl
04.10.2012, 07:11
АААА О ЧУДО! Боже я переполнен эмоциями! Получилось! Получилось! Спасибо вам!