TCP Listen и интервал портов

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Аватара пользователя
Super Star
adviser
adviser
Сообщения: 228
Зарегистрирован: 07 фев 2013, 08:37
Версия LabVIEW: 2011

Re: TCP Listen и интервал портов

Сообщение Super Star »

сделайте кэш данных с рс, или так нельзя по тех.заданию ?
я люблю свою работу.... Я приду сюда в субботу ...
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: TCP Listen и интервал портов

Сообщение Borjomy_1 »

При создании соединения в функцию отдаете реф на семафор. Сам семафор как-бы бронирует процесс. ведь обмен по ком-порту все равно занимает определенное время и больше процессов, чем это по времени возможно, физически нельзя поддержать. Для вас оптимальным было-бы непосредственно перед обменом по порту блокировать светофор, а сразу после окончания обмена - разблокировать. Тогда будет гарантия, что другой процесс не сможет вмешаться в обмен, начав свое выполнение обмена непосредственно после освобождения светофора.

Лично у меня таким образом сделан был обмен по ТCP с ModBus устройствами (которые по спецификации допускают единственное соединение с отдельным хостом), а задач обмена - было несколько. И всё прекрасно без сбоев работает.
Аватара пользователя
Di3el
beginner
beginner
Сообщения: 45
Зарегистрирован: 18 дек 2012, 17:28
Версия LabVIEW: 11
Откуда: Российская Федерация
Контактная информация:

Re: TCP Listen и интервал портов

Сообщение Di3el »

Borjomy_1 писал(а):При создании соединения в функцию отдаете реф на семафор. Сам семафор как-бы бронирует процесс. ведь обмен по ком-порту все равно занимает определенное время и больше процессов, чем это по времени возможно, физически нельзя поддержать. Для вас оптимальным было-бы непосредственно перед обменом по порту блокировать светофор, а сразу после окончания обмена - разблокировать. Тогда будет гарантия, что другой процесс не сможет вмешаться в обмен, начав свое выполнение обмена непосредственно после освобождения светофора.

Лично у меня таким образом сделан был обмен по ТCP с ModBus устройствами (которые по спецификации допускают единственное соединение с отдельным хостом), а задач обмена - было несколько. И всё прекрасно без сбоев работает.
ммм... у меня тоже идет обмен с устройством работающим по Modbus :D то есть семафор будет работать между всеми :vi: работающими параллельно?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: TCP Listen и интервал портов

Сообщение Borjomy_1 »

Если отдается всем один реф, то будет работать между всеми :vi: в рамках одного проекта/исполняемого файла. Единственная тонкость: реф надо держать в отдельном VI (в котором он создается и хранится в шифт регистре, и по команде отдается), иначе сразу после создания он может быть уничтожен сборщиком мусора.
Вложения
VI примерно такого вида. В одном месте вызывается с параметром Инит, а в каждом отдельном потоке - с параметром Читать. При окончании работы - вызов с параметром Удалить
VI примерно такого вида. В одном месте вызывается с параметром Инит, а в каждом отдельном потоке - с параметром Читать. При окончании работы - вызов с параметром Удалить
хранение рефа.png (18.81 КБ) 4672 просмотра
Аватара пользователя
Di3el
beginner
beginner
Сообщения: 45
Зарегистрирован: 18 дек 2012, 17:28
Версия LabVIEW: 11
Откуда: Российская Федерация
Контактная информация:

Re: TCP Listen и интервал портов

Сообщение Di3el »

Раз в данной теме мы уже говорили про асинхронный запуск и тому подобные вещи. Проблема в общем такая, была сделана главная менюшка для того чтобы запускать разные :vi: . Все замечательно работало до того момента пока не собрал в .exe!
Изображение

Запуск по нажатию кнопок был реализован так(одинаково для всех):
Изображение

из всех кнопок пока сделано три это "Настройки", "Вект.диагр", "Гармон.спектр". Они работают во время отладки но когда собираю exe работает только Настройки=(

Может кто сталкивался с такой проблемой? какие решения?
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 38 раз
Контактная информация:

Re: TCP Listen и интервал портов

Сообщение AndreyDmitriev »

Все динамически вызываемые VI вы, надо полагать в exe положить не забыли? Скорей всего Open VI Reference ошибку выдаёт - проверьте, что там на выходе.
Аватара пользователя
Di3el
beginner
beginner
Сообщения: 45
Зарегистрирован: 18 дек 2012, 17:28
Версия LabVIEW: 11
Откуда: Российская Федерация
Контактная информация:

Re: TCP Listen и интервал портов

Сообщение Di3el »

хм, несколько раз пересобрал и заработала кнопка "Гармон.спектр" :think: полный бред, ничего не изменял=/

Смотрим ошибки:Изображение

Получилось вот что при нажатии кнопки "Вектр.диагр."
Изображение
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: TCP Listen и интервал портов

Сообщение Borjomy_1 »

Надо брать атрибут не Name, а Path.
Компилятор, кстати вполне справляется с выявлением таких случаев, специально не требуется указывать билдеру динамически вызываемую vi, если на нее дать референс.
Аватара пользователя
Di3el
beginner
beginner
Сообщения: 45
Зарегистрирован: 18 дек 2012, 17:28
Версия LabVIEW: 11
Откуда: Российская Федерация
Контактная информация:

Re: TCP Listen и интервал портов

Сообщение Di3el »

Изменил на Path, код ошибки изменился на 15! это обозначает что :vi: поврежден?
Аватара пользователя
Di3el
beginner
beginner
Сообщения: 45
Зарегистрирован: 18 дек 2012, 17:28
Версия LabVIEW: 11
Откуда: Российская Федерация
Контактная информация:

Re: TCP Listen и интервал портов

Сообщение Di3el »

Короче нашлась ошибка из за чего не хотело всплывать окно, ею оказалась если в настройках окна Windows Appearence галочка стоит на Defalt, то ошибка! если поставить на Dialog все срабатывает :1stplace: Аномалия прям, как это вообще связанно?=)
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: TCP Listen и интервал портов

Сообщение Borjomy_1 »

Это вполне рабочий и проверенный вариант, правда я делал под LV2009. Позволяет запустить любой VI
Вложения
динамический запуск.png
Аватара пользователя
Di3el
beginner
beginner
Сообщения: 45
Зарегистрирован: 18 дек 2012, 17:28
Версия LabVIEW: 11
Откуда: Российская Федерация
Контактная информация:

Re: TCP Listen и интервал портов

Сообщение Di3el »

Такой вопрос! пытаюсь отправить сообщение на сервер (сервер одной компании), все что будет приходить на порт 11810 будет переадресовываться на другой IP (промышленного модема). Но соединение не устанавливается так как на сервере нету слушателя, как быть? как отправить сообщение, а то как там примут и что сделают с сообщение меня не должно касаться?
Изображение
Видно что на соединении висит и все :buuh:
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: TCP Listen и интервал портов

Сообщение Borjomy_1 »

Di3el, С той стороны должен стоять серверное приложение, которое слушает этот порт 11810. Возможно фаервол на сервере вас не пускает, либо ваш.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»