PDA

Просмотр полной версии : Работа с библиотекой SysLibSockets



alewka006
13.01.2017, 14:18
Здравствуйте. Сталкивался ли кто с такой проблемой?
Скачал с сайта пример программы PING. Запустил на ПЛК110 старой модификации. Все замечательно работает.
Запускаю эту же программу на ПЛК110 М02 - контроллер перезагружается. Определил, что перезагрузка происходит на строчке чтения данных из сети. Без нее перезагрузок нет. Но вместо ICMP пакетов контроллер отправляет UDP.

Rednaxel
25.05.2017, 07:56
А что за программа? Мне тоже такая нужна. И у меня есть для экспериментов ПЛК110-30 М02.
Поделитесь пожалуйста.

Трофимов Артем
25.05.2017, 10:35
Во вложении пример PING для ПЛК110 М02 с необходимыми библиотеками

Rednaxel
27.05.2017, 15:32
У меня программа запустилась и работает, но как обычно появилось ряд вопросов:
1) Как мне изменить IP адрес моего целевого устройства? Я так понял, что он задается в строке
IF (SendPing(PING_IFACE_ETHERNET,16#0A020101,100)=PIN G_SERVICE_IFACE_NOT_READY) THEN
программы в 16-ричном виде: 16#0A020101, так?
2) Это та же программа, о которой писал топикстартер, или другая?

Сергей Лысов
27.05.2017, 19:09
1) Как мне изменить IP адрес моего целевого устройства? Я так понял, что он задается в строке
программы в 16-ричном виде: 16#0A020101, так?
2) Это та же программа, о которой писал топикстартер, или другая?
1) всё правильно
2) нет, речь идёт о другом примере. Предполагаю, что об этом: http://kipshop.ru/Primeri/DevicesOther/05_SysLibSocet.zip

Rednaxel
29.05.2017, 01:57
1) всё правильно...

И все-таки:
1) Как мне изменить (указать) IP адрес моего целевого устройства?
не подскажете?


2) нет, речь идёт о другом примере. Предполагаю, что об этом: http://kipshop.ru/Primeri/DevicesOth...ysLibSocet.zip
О! Нашел текст из описания на сайте plc24.ru и даже безуспешно пытался добиться от автора где сам файл, а он вот ;)
Спасибо!

Филоненко Владислав
29.05.2017, 10:05
16#0A020101 - это и есть IP. Именно так он выглядит в 16-ти ричном виде.
каждый байт - одно из полей IP. 0A.02.01.01

Далее разберется и домохозяйка

Сергей Лысов
29.05.2017, 10:06
И все-таки:
не подскажете?

Вы сами ответили на свой вопрос:


он задается в строке
IF (SendPing(PING_IFACE_ETHERNET,16#0A020101,100)=PIN G_SERVICE_IFACE_NOT_READY) THEN
программы в 16-ричном виде: 16#0A020101

Rednaxel
29.05.2017, 15:03
Подсказки довольно скупые и туманные, уж извините, но заданное направление позволило найти более подробное объяснение, например такое (https://habrahabr.ru/post/69587/). Поэтому благодарю сердечно!

Я вас искренне поздравляю, если для вас легко и привычно c ходу переводить 16-тиричный адрес типа 16#0A020101 в десятичный вида 192.168.0.1 (или в обратном направлении), но уверяю это могут далеко не все.

Собственно, для тех кто найдет эту тему в поиске, вот ответ на вопрос "Как преобразовать формат представления IP-адреса?": Конвертер (http://ncalculators.com/digital-computation/ip-address-hex-decimal-binary.htm)

Еще раз спасибо за обсуждение!

capzap
29.05.2017, 15:24
Собственно, для тех кто найдет эту тему в поиске, вот ответ на вопрос "Как преобразовать формат представления IP-адреса?": Конвертер IP-адреса (http://allcalc.ru/node/460)
так то мы программисты и сами можем с конвертировать строковое представление в dword, наглядное решение расположено в библиотеке network_oscat функции называются IP4_DECODE и IP4_TO_STRING