|
Название: Правильное использование сервера связи. Отправлено: resident от 26.08.2010, 16:29:42 Здравствуйте.
Приборы ТСРВ-22,23. Среда разработки Visual Studio 2010 Задача: 1. Чтение текущих значений 2. Чтение архивов При использовании одного прибора вопросов нет. А как правильно использовать сервер если скажем у меня один прибор подключен к СОМ1 по RS232 а два других к СОМ 2 по RS485? Программный код не прошу. Интересует принцип (алгоритм что ли) правильного использования сервера. То есть к примеру: 1 Вариант. Создать один экземпляр VzljotSrv.MBComMaster устанавить все необходимые свойства. В дальнейшем при опросе приборов начинаем манипулировать свойствами ComPort, ComSpeed, DeviceAddress , Connected и т.д. 2 Вариант (логичнее). Создать один экземпляр VzljotSrv.MBComMaster для каждого интерфейса связи. И также начинаем манипулировать свойствами. Но не ясно, если я перед чтением установлю адрес прибора =1 вызову скажем функцию ReadInputRegs сразу изменю адрес на =2 для чтения второго прибора (в цикле) и снова вызову ReadInputRegs??? Из “документации” понятно что сервер многопоточный, и запросы помещаются в очередь. Не получится так что при вызове функции ReadInputRegs для первого прибора она будет адрисована второму прибору??? 3 Вариант. Создать экземпляр VzljotSrv.MBComMaster для каждого прибора(проверено работает но не логично) Я думаю что смысл моего вопроса специалистам будет понятен. Спасибо. Название: Re: Правильное использование сервера связи. Отправлено: resident от 27.08.2010, 13:30:15 Уважаемые специалисты "Взлет". Вопрос актуален. Мне кто ни будь ответит?
Название: Re: Правильное использование сервера связи. Отправлено: Денис Пономарев от 27.08.2010, 17:41:07 2 Вариант (логичнее). Создать один экземпляр VzljotSrv.MBComMaster для каждого интерфейса связи. И также начинаем манипулировать свойствами. Но не ясно, если я перед чтением установлю адрес прибора =1 вызову скажем функцию ReadInputRegs сразу изменю адрес на =2 для чтения второго прибора (в цикле) и снова вызову ReadInputRegs??? Из “документации” понятно что сервер многопоточный, и запросы помещаются в очередь. Не получится так что при вызове функции ReadInputRegs для первого прибора она будет адрисована второму прибору??? 3 Вариант. Создать экземпляр VzljotSrv.MBComMaster для каждого прибора(проверено работает но не логично) Я думаю что смысл моего вопроса специалистам будет понятен. Спасибо. Лично я делаю два экземпляра MBComMaster. У каждого свои настройки COM порта. Для того порта, где два прибора, перед каждым запросом делаю изменение адреса прибора. Можно и третий вариант, в общем-то, это выбор разработчика. Когда формируется очередь, то помимо типа запроса, адреса регистра и прочего, там устанавливается и адрес прибора. Каждому СОМ-порту свой поток. Название: Re: Правильное использование сервера связи. Отправлено: resident от 28.08.2010, 07:04:29 Денис спасибо за ответ. Хотелось уточнить один момент.
Значит если я правильно понимаю, после того как я выполнил запрос к прибору с адресом 1(вызвал функцию ReadInputRegs, кстати у нее нет аргумента адрес прибора), можно смело изменить адрес и вызвать ее повторно и она будет адресована второму прибору? Название: Re: Правильное использование сервера связи. Отправлено: resident от 28.08.2010, 07:14:43 P.S
Дело в том, что у меня нет в наличии двух приборов (не могу экспериментировать). А в дальнейшем предполагается использование по схеме описанной выше. Название: Re: Правильное использование сервера связи. Отправлено: Денис Пономарев от 30.08.2010, 10:48:07 Денис спасибо за ответ. Хотелось уточнить один момент. Значит если я правильно понимаю, после того как я выполнил запрос к прибору с адресом 1(вызвал функцию ReadInputRegs, кстати у нее нет аргумента адрес прибора), можно смело изменить адрес и вызвать ее повторно и она будет адресована второму прибору? Да, у неё нет аргумента, аргумент этот уже в объекте MBComMaster. А так всё верно, да. Если вы в папке, где установлен Сервер связи (возможно это C:\Program Files\Vzljot\Server\), найдет файл VzljotSrv.ini, и включите там KeepLog: [LogKeeper] KeepLog=1 то будут вестись логи, где всё будет отражено. Если у вас пока нет приборов, то будут возращены ошибки, конечно, но вы сможете проконтролировать запросы. Например: 04.06.2010 15:27:22 572 Out OK 03 11 C1 4C 04.06.2010 15:27:23 572 In Err 04.06.2010 15:28:07 460 Out OK 01 04 C1 C0 00 02 4C 0B 04.06.2010 15:28:08 460 In Err Тут видно, что сначала был послан запрос в прибор с адресом 03 (и в ответ тишина), а потом в прибор с адресом 01. Название: Re: Правильное использование сервера связи. Отправлено: resident от 02.09.2010, 10:47:16 Спасибо. про KeepLog=1 не знал. Очень удобно.
|