Страница 4 из 9 ПерваяПервая ... 23456 ... ПоследняяПоследняя
Показано с 31 по 40 из 85

Тема: Примеры по сокетам для ПЛК110/160 M02 и ПЛК1хх

  1. #31

    По умолчанию

    Цитата Сообщение от Мастеренко Иван Посмотреть сообщение
    Добрый день.
    Обновил пример по MQTT и библиотеку MQTTOwenPlc_udp.lib: https://owen.ru/forum/showthread.php...l=1#post327664
    Публикация выполняется последовательно в два топика (по временному интервалу) и добавлены 2 топика подписчика.
    Добрый день.
    В том примере что вы сделали, пишет в топики отлично. а вот при чтении данные попадают куда им хочется, совсем не в те топики куда должны.
    Попробуйте растяните пример на большее количество топиков, и вы увидите.

  2. #32

    Question

    Добрый день!
    Появилась такая проблема. Обмен работает какое-то время, но потом перестает!
    Посмотрел, все крутится в цикле: SERVER_STATE_CREATE - SERVER_STATE_BIND - SERVER_STATE_CLOSE
    Вот код:
    Код:
    CASE eState OF
    
    	SERVER_STATE_CREATE:
    			hServerSocket	:=	SysSockCreate( SOCKET_AF_INET,  SOCKET_STREAM, SOCKET_IPPROTO_TCP );
    			IF hServerSocket <> SOCKET_INVALID THEN
    				SysSockSetOption(hServerSocket, SOCKET_SOL, c_diSoNbio, ADR(diOption), SIZEOF(diOption) );
    				eState	:=	SERVER_STATE_BIND;
    			ELSE
    				eState	:=	SERVER_STATE_CLOSE;
    			END_IF
    
    	SERVER_STATE_BIND:
    			stServerSettings.sin_family	:=	SOCKET_AF_INET;
    			stServerSettings.sin_addr	:=	SysSockHtonl(SOCKET_INADDR_ANY);
    			stServerSettings.sin_port	:=	SysSockHtons(wPort);
    			xBinded				:=	SysSockBind(hServerSocket, ADR(stServerSettings), SIZEOF(stServerSettings) );
    			IF xBinded THEN	eState	:=	SERVER_STATE_LISTEN;
    			ELSE			eState	:=	SERVER_STATE_CLOSE;
    			END_IF
    
    	SERVER_STATE_LISTEN:
    			xListened	:=	SysSockListen(hServerSocket, INT_TO_DINT(c_iMaxConnections) );
    			IF xListened THEN	eState	:=	SERVER_STATE_ACCEPT;
    			ELSE				eState	:=	SERVER_STATE_CLOSE;
    			END_IF
    
    	SERVER_STATE_CLOSE:
    			SysSockShutdown(hServerSocket, c_diHow);
    			SysSockClose(hServerSocket);
    			hServerSocket	:= SOCKET_INVALID;
    			eState		:= SERVER_STATE_CREATE;

  3. #33

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Мо2 ? На результаты сетопшина, бинда и листена можно покласть. Да и за раз сделать.
    Да, МО2
    Как сделать? Можно пример рабочего кода?

  4. #34

    По умолчанию

    Товарищи форумчане, всем доброго времени суток.

    Подскажите, пожалуйста, возможно ли каким-либо "волшебным" способом на ПЛК100 (сервер) определить IP-адрес подключившегося клиента?

    SOCKADDRESS.sin_addr даже в процессе обмена данными равен нулю...

    Вопрос так же относится и к представителям ОВЕН, потому как в том же PLCWinNT24 с этим проблем нет.

    Задача организовать связь сервера с одним единственным клиентом, имеющим определенный IP-адрес.
    Последний раз редактировалось Spawn; 24.10.2021 в 14:27.

  5. #35

    По умолчанию

    Цитата Сообщение от -=Vovka=- Посмотреть сообщение
    Добрый день!
    Появилась такая проблема. Обмен работает какое-то время, но потом перестает!
    Посмотрел, все крутится в цикле: SERVER_STATE_CREATE - SERVER_STATE_BIND - SERVER_STATE_CLOSE
    Вот код:
    Код:
    CASE eState OF
    
    	SERVER_STATE_CREATE:
    			hServerSocket	:=	SysSockCreate( SOCKET_AF_INET,  SOCKET_STREAM, SOCKET_IPPROTO_TCP );
    			IF hServerSocket <> SOCKET_INVALID THEN
    				SysSockSetOption(hServerSocket, SOCKET_SOL, c_diSoNbio, ADR(diOption), SIZEOF(diOption) );
    				eState	:=	SERVER_STATE_BIND;
    			ELSE
    				eState	:=	SERVER_STATE_CLOSE;
    			END_IF
    
    	SERVER_STATE_BIND:
    			stServerSettings.sin_family	:=	SOCKET_AF_INET;
    			stServerSettings.sin_addr	:=	SysSockHtonl(SOCKET_INADDR_ANY);
    			stServerSettings.sin_port	:=	SysSockHtons(wPort);
    			xBinded				:=	SysSockBind(hServerSocket, ADR(stServerSettings), SIZEOF(stServerSettings) );
    			IF xBinded THEN	eState	:=	SERVER_STATE_LISTEN;
    			ELSE			eState	:=	SERVER_STATE_CLOSE;
    			END_IF
    
    	SERVER_STATE_LISTEN:
    			xListened	:=	SysSockListen(hServerSocket, INT_TO_DINT(c_iMaxConnections) );
    			IF xListened THEN	eState	:=	SERVER_STATE_ACCEPT;
    			ELSE				eState	:=	SERVER_STATE_CLOSE;
    			END_IF
    
    	SERVER_STATE_CLOSE:
    			SysSockShutdown(hServerSocket, c_diHow);
    			SysSockClose(hServerSocket);
    			hServerSocket	:= SOCKET_INVALID;
    			eState		:= SERVER_STATE_CREATE;
    Добрый день.
    Похоже на некорректное закрытие сокетов после сброса работы программы. Попробуйте привязать в системное событие "stop" закрытие сокетов. (стр. 30 https://ftp.owen.ru/CoDeSys23/10_Soc...ckets_v1.0.pdf )
    Инженер по продуктам «ПЛК и модули»
    e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen

  6. #36

    По умолчанию

    Цитата Сообщение от Spawn Посмотреть сообщение
    Товарищи форумчане, всем доброго времени суток.

    Подскажите, пожалуйста, возможно ли каким-либо "волшебным" способом на ПЛК100 (сервер) определить IP-адрес подключившегося клиента?

    SOCKADDRESS.sin_addr даже в процессе обмена данными равен нулю...

    Вопрос так же относится и к представителям ОВЕН, потому как в том же PLCWinNT24 с этим проблем нет.

    Задача организовать связь сервера с одним единственным клиентом, имеющим определенный IP-адрес.
    Добрый день!
    Для старой линейки ПЛК1хх возможно только по протоколу UDP. IP-адрес клиента можно увидеть в sin_addr после выполнения функции SysSockRecvFrom.
    Инженер по продуктам «ПЛК и модули»
    e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen

  7. #37

    По умолчанию

    Иван, спасибо за подсказку.

  8. #38

    По умолчанию

    Добрый день.
    Прошу подсказать.
    Имеется ПЛК 110-30 [М].
    Для считывания данных с другого устройства по modbus tcp в конфигураторе ПЛК в строке состояния ошибки пишет - ошибка 84.
    Модбас сканом удается считать регистры другого устройства.
    Делали пустой проект с одним соединением по modbus tcp, все равно пишет ошибка 84.
    Прошивка контроллера сейчас стоит 0.3.67.
    Какие предпринять шаги для устранения данной проблемы?
    Может быть обновить прошивку ?
    Если обновить прошивку, то возможен ли даунгрейд прошивки ?

  9. #39

    По умолчанию

    84 - проблемы с сокетами (например они кончились)
    Тролль-наседка, добрый, нежный и ласковый

  10. #40
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,066

    По умолчанию

    Цитата Сообщение от Bahtijaro Посмотреть сообщение
    Добрый день.
    Прошу подсказать.
    Имеется ПЛК 110-30 [М].
    Для считывания данных с другого устройства по modbus tcp в конфигураторе ПЛК в строке состояния ошибки пишет - ошибка 84.
    Модбас сканом удается считать регистры другого устройства.
    Делали пустой проект с одним соединением по modbus tcp, все равно пишет ошибка 84.
    Прошивка контроллера сейчас стоит 0.3.67.
    Какие предпринять шаги для устранения данной проблемы?
    Может быть обновить прошивку ?
    Если обновить прошивку, то возможен ли даунгрейд прошивки ?
    Выложите ваш пустой проект с одним соединением, пожалуйста.

Страница 4 из 9 ПерваяПервая ... 23456 ... ПоследняяПоследняя

Похожие темы

  1. Недостатки ОВЕН ПЛК1хх
    от Николай Федоров в разделе ПЛК1хх
    Ответов: 104
    Последнее сообщение: 26.05.2017, 09:50
  2. Ответов: 1
    Последнее сообщение: 06.09.2014, 22:52
  3. ЕКОН134 и ПЛК1хх опрос по Ethernet
    от Makswell в разделе Сетевые технологии
    Ответов: 4
    Последнее сообщение: 09.04.2014, 08:00
  4. ПЛК1хх + GPRS
    от alext1981 в разделе Сетевые технологии
    Ответов: 11
    Последнее сообщение: 28.02.2013, 19:22
  5. Пожарная сигнализация+ПЛК1хх
    от Gans в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 09.08.2007, 16:09

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •