Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 44

Тема: SysSockRecv не работает

  1. #21
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    где то в оскат библиотеках было, то что они используют системные события и в функции перед стартом закрывают все сокеты
    кстати надо посмотреть как у них это делается

  2. #22
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Как мне показалось, с этой прошивкой действительно лучше работает SysSockRecv, но после n-го количества сброса и перезагрузок плк удалось воссоздать проблему и кажется понял что происходит, если не прав поправьте.

    Логика моего сокет клиента такова, если дескриптор <= 0, то попробовать создать сокет функцией SysSockCreate которая и возвращает дескриптор.
    У меня в конфигураторе есть modbus slave для ип320 с интерфейсом rs232 и тут же еще TCP.
    Этот modbus slave tcp занимает тоже свободный сокет и тоже имеет свой дескриптор, у меня он получает 1.
    Мой сокет при старте программы создает подключение и получает тот же дескриптор = 1, это мистика, но Send работает, а Recv очень не стабильно при этом часто на стороне сервера ошибки по сути "соединение было прервано со стороны клиента".

    В этом случае я в ручную присваиваю моему дескриптору 0, при следующей отправке он вызывает SysSockCreate и получает 2.
    Всё работает хорошо, опять присваиваю 0, получаю 3, потом 2, потом 3. Это говорит что соединение завершается по таймауту и сокет освобождается, но 1 больше не получаю, оно и верно, ведь конфигуратор там сидит, но при загрузке почему то проблемы есть.

    Меня смутило это сообщение http://www.owen.ru/forum/showthread.php?t=23429&page=2&p=198280&viewfull=1# post198280

    Поэтому начал искать разницу в теории, тут и вышел на конфигуратор.

    Еще особенность, обычный сброс не влияет на конфигуратор, поэтому такая проблема появляется после включения плк, после заводского сброса или после холодного сброса.

    Это очень не приятный баг, прошу проверить всем заинтересованным лицам, буду благодарен всем отклинувшимся.
    Последний раз редактировалось Scream; 26.02.2016 в 16:53.

  3. #23
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Подниму тему с новой проблемой. На плк160 вроде всё работает и данные он принимает, но только на новой прошивке.

    Теперь задача - передавать данные в плк 150 и повторю SysSockRecv не работает
    Код аналогичен в плк160 и показан в начале темы.
    Плк принимает данные первые часа 2, потом абсолютно никак не реагирует, плк работает 24\7 и всегда подключен к серверу, сервер в свою очередь когда сочтет нужным, отправляет 5 байт в плк, всё просто.

    Удалил из конфигуратора все TCP, даже так пробовал
    diRxCount := SysSockRecv(diSocket, ADR(rxBuf[1]), 1536, SOCKET_MSG_OOB);
    через некоторое время ПЛК не реагирует, видел фиксы прошивок где мешает гигабитная сеть, может чтото недофиксили или что еще надо?

    Я хочу чтобы работал SysSockRecv, покажите пример где ПЛК - клиент и без проблем работает SysSockRecv в любое время суток независящий от фазы луны!

    дальше мысли в слух.
    На выставках в Москве много компаний называли овен барашком (иногда бараном) с глючными плк и восхваляли свои устройства.
    Один мне даже рассказывал о НОВОМ языке программирования CFC, которого ниукого нет, вот IDE несколько сотен баксов только стоит.... слушал я, делая весьма удивленный вид.
    Я задавал вопрос, а можно ли к их плк подключать не стандартные устройства или делать с сокетами что душе угодно как у овена, разговор заканчивался обычно.
    Я пытался доказывать что овен - это гибко и дешево, но теперь понимаю, что это нихрена не работающие плк и менеджеры (мало понимающие, а некоторые доказывающие что у плк 100 нет ethernet) просто пудрят мозги. Архиватор, есть, только тупой в 32кб с кучей лишней информации. Писать файлы, пожалуйста, только это работает как презерватив, один раз, потом перезагружать.

  4. #24
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    возможно, но не факт,размерность буффера большую ставите, по сети овеновский плк может передавать не больше 490 байт. Я когда тестил мониторинг температуры дома в поездке, шесть часов проходило и сеть не падала
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #25
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    размерность буффера большую ставите, по сети овеновский плк может передавать не больше 490 байт. Я когда тестил мониторинг температуры дома в поездке, шесть часов проходило и сеть не падала
    Это я уже в истории форума нашел, мол помогло.
    Ставил и 5 и 10 и 100.
    Плк160 с новой прошивкой тоже заработал, а 150 ну ни в какую, неделю бьюсь.

    Важная деталь, если плк из кодесиса сбросить и нажать старт, то опять работает без проблем пару часов.
    Последний раз редактировалось Scream; 29.03.2016 в 11:48.

  6. #26

    По умолчанию

    Код неверен. Где проверка на ошибки, канал что, 100% надёжный? Должна быть проверка на ошибки/таймаут обмена и переинициализация с закрытием и открытием сокета.
    Да, интенсивный обмен в сети может приводить к пропаданию части пакетов, но код клиента должен быть самовосстанавливаемым.
    Тролль-наседка, добрый, нежный и ласковый

  7. #27
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Код неверен. Где проверка на ошибки, канал что, 100% надёжный? Должна быть проверка на ошибки/таймаут обмена и переинициализация с закрытием и открытием сокета.
    это всё есть.
    Плк уже как год стоит на компрессоре, снимает показания датчиков круглосуточно. Связь поддерживается со сторогы плк пакетами по 7 байт 1 раз в 4 секунды.
    Плк - клиент, всегда восстанавливает связь при пропадании, за месяц логов не видел разрывов с плк 150, но принимать не хочет и всё тут.
    Плк передает данные и дескриптор сокета всегда = 1.
    Последний раз редактировалось Scream; 29.03.2016 в 11:53.

  8. #28

    По умолчанию

    ну ежели 1 сокет в программе - у него дескриптор и будет == 1.
    Проверьте маску и шлюз.
    Тролль-наседка, добрый, нежный и ласковый

  9. #29
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    ну ежели 1 сокет в программе - у него дескриптор и будет == 1.
    Проверьте маску и шлюз.
    Маска одинаковая у всех устройств 255.255.255.0
    Шлюз = ПК сервер, с которым и ведётся обмен (хотя я не понимаю причем здесь шлюз, не работало бы совсем, а тут ОТ плк за год всё ОК, а В плк макс. 2 часа).

    Код на пкл 160 работает, этот же код (точь в точь, один fb) не работает на плк 150.
    Пока реализовал через конфигуратор с modbus tcp, CustomSocket -> server, server --modbus--> Default modbus tcp.

    Возник еще такой вопрос.
    Логика в программе такая, если дескриптор = 0, то создаем новый сокет и работаем с ним.
    На плк 160, после того, как уже всё соединилось и работает мой дескриптор = 3 (первые 2 заняты конфигуратором, писал выше), теперь в ручную присваиваю ему 0, следом создается новый сокет и дескриптор = 4, старое подключение по всей логики должно умереть по таймауту, через 15 секунд обнуляю еще раз, создается вновь новый сокет и дескриптор опять = 3.
    Насколько я понимаю это правильная логика.
    В плк 150 дескриптор всё время новый на единицу больше предыдущего, дойдя до 15, всё, кранты, идти перезагружать.

    Чем это объяснить?

  10. #30

    По умолчанию

    Логика в программе такая, если дескриптор = 0, то создаем новый сокет и работаем с ним. - неверная логика.

    Если сокеты кончились - то всё. Закрывайте сокеты.

    еперь в ручную присваиваю ему 0,

    Я просто поражён. Перефразируя - и тут я ему вскрываю грудину, меняю сердце - но пациент чего-то умер.
    Но помню, один пациент (160) выжил. Почему ваши пациенты такие хлипкие!?
    Тролль-наседка, добрый, нежный и ласковый

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Похожие темы

  1. ПЛК 160. Не работает...
    от Scream в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 31.10.2013, 11:44
  2. Как работает ПЧВ?
    от Lam-Ka в разделе Трёп (Курилка)
    Ответов: 2
    Последнее сообщение: 31.08.2013, 11:57
  3. Не работает трм-138 Р
    от Sanya-russ в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 18.01.2011, 16:02
  4. не работает трм-251.
    от КамасутриК в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 12.08.2010, 11:29
  5. не работает 2-я Pou
    от Дитрих в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 15.01.2009, 09:54

Ваши права

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