ardsoft
Продукты => arOPC сервер => Тема начата: Voldemus от 28.10.2017, 15:52:38 pm
-
Добрый день.
В настройке Канала связи установлена Задержка - 100 мс, но посылки осуществляются раз в 10 секунд. В чем дело ?
-
Здравствуйте.
Этот параметр отвечает за паузу, выдерживаемую перед отправкой очередного пакета.
Скорее всего у вас в настройках устройства выставлен период опроса 10 секунд.
Айрат.
-
У меня стоит 100 мс.
-
Это вы настройки канала смотрите.
А в устройстве которое вы опрашиваете какие настройки?
Айрат
-
Устройство, которое я опрашиваю дает отклик сразу после получения запроса.
-
Это вы настройки канала смотрите.
А в устройстве которое вы опрашиваете какие настройки?
Айрат
Master сети должен посылать запросы с заданной периодичностью независимо от того что происходит со Slave сети. Slave может вообще не откликаться на запросы.
-
Здравствуйте.
Под "Устройством" я имею в виду объект "Устройство" в OPC сервере.
Под настройками устройства я имею в виду те настройки что вы сделали для опроса физического устройства в OPC сервере.
Пришлите пожалуйста вашу конфигурацию и я подскажу что сделать что бы увеличить частоту опроса.
Айрат
-
У меня ваш OPC вообще перестал запускаться.
-
Попробуйте настройки канала как на картинке.
А то что не запускается, может он у вас запущен уже и просто в трее висит?
Айрат
-
Ваш сервер вообще перестал делать посылки в порт. В чем может быть причина ?
У меня еще есть OPC сервер фирмы "КРУГ". Вот с ним все нормально.
-
Вот лог после запуска.
-
Пришлите пожалуйста полную конфигурацию. В прошлый раз вы прислали просто шаблон устройства, по нему невозможно сказать что и как вы настроили.
Айрат
-
Вот шаблон.
-
Пришлите пожалуйста полную конфигурацию. В прошлый раз вы прислали просто шаблон устройства, по нему невозможно сказать что и как вы настроили.
Айрат
Не понятно как создать полную конфигурацию. Может это.
-
В присланной конфигурации нет настроенных каналов связи с устройствами (Image1.png).
Соответственно в настроенном объекте "Устройство" нет привязки к этому каналу (Image2.png).
Поэтому и опроса нет.
1. Необходимо настроить канал связи, скриншот с настройками я вам высылал ранее.
2. Добавить устройство и в нем сделать привязку к каналу.
Конфигурация OPC сервера открывается и сохраняется с помощью пунктов меню: "Файл - Открыть", "Файл - Сохранить" и "Файл - Сохранить как...".
Так же вы можете скачать с сайта инструкцию, в ней написано как настроить каналы связи, как настроить опрос устройства и т.д (http://ardsoft.ru/Downloads/arOPC/arOPC.pdf (http://ardsoft.ru/Downloads/arOPC/arOPC.pdf)).
Айрат.
-
Посылки в порт есть, но период посылок 10 сек., а должно быть 100 мс.
-
Еще один вопрос - есть ли возможность посмотреть отклик устройства (какие байты приходят от устройства в ответ на обращение) ?
-
Если поставить 1,5 стоп бита, то посылок в порт нет.
-
Что бы посмотреть что происходит в канале связи надо перейти в пункт меню "Диагностика - Каналы связи" и в выпадающем списке выбрать канал.
Modbus устройства обычно работают с 1 или 2 стоп битами.
Вы говорили что OPC сервер круга работает с устройством, сравните настройки с arOPC, скорее всего дело просто в настройках.
Айрат
-
Настройки OPC серверов совпадают. OPC "КРУГ" делает все в соответствии с настройками, а ваш OPC нет. Меня не понятно что у вас творится с периодом опроса.
Если 1,5 стоп бит не отрабатываются, то зачем они предлагаются ?
-
Еще не понятно с контрольной суммой (КС). Расчет КС принимаемой и отправляемой посылки в моем ПЛК производится одинаковым образом. КС принятого пакета совпадает с расчетной КС, т.е. с приемом пакета из сети все в норме. С передачей отклика все нормально, кроме КС. В логе OPC сервер пишет, что КС, передаваемая в отклике, не верна.
OPC "КРУГ" то же пишет, что КС отклика не верна.
-
Вот теперь картина проясняется.
Пришлите пожалуйста логи OPC сервера с включенным в них протоколом обмена с устройством.
Что бы это сделать необходимо перейти в пункт меню "Работа - Настройки" и в появившемся окне на вкладке "Логи" выставить галочку "Сохранять в протокол обмен с устройствами".
Теперь по поводу периода опроса. На рисунке показаны настройки которые вы используете для опроса устройства.
Период опроса - 1000 мс. Что бы тег опрашивался раз в 100 мс соответственно период опроса необходимо выставить в 100.
Ожидание после отказа - 10000 мс. А это как раз и есть тот параметр который "тормозит" опрос на 10 секунд. Смысл его в том что бы при отказе опрашиваемого устройства, его отсутствие сильно не сказывалось на опросе других устройств, сидящих на этой же линии, соответственно OPC сервер на 10 секунд прекращает опрос этого устройства.
Я так понимаю прошивку для ПЛК вы пишете самостоятельно? Для проверки корректности контрольной суммы пакета можно воспользоваться Эмулятором Modbus (http://www.ardsoft.ru/mEmulator.html (http://www.ardsoft.ru/mEmulator.html)), меню "Утилиты - Проверка CRC16".
Айрат
-
Добрый день.
Почему у меня картинки с дефектами ?
-
Тут то же.
-
Здравствуйте.
Вы видимо системный шрифт поменяли. Да, недосмотр с нашей стороны, постараемся учесть в следующих релизах.
Айрат
-
Ничего я не менял. У меня Windows 7.
-
Я имел в виду размер текста.
Посмотрите в настройках "Панель управления - Оформление - Экран".
У вас или средний или крупный шрифт.
Айрат.
-
Может и так, только ваше приложение должно работать корректно в любом случае.
-
Постараемся учесть в следующих выпусках.
Айрат
-
Какое время OPC сервер держит шину RS-485 после окончания передачи ?
-
Здравствуйте.
Что вы понимаете под словом "держит"?
Если речь о переключении с передачи на прием, то все зависит от драйвера устройства.
Айрат
-
Здравствуйте.
Что вы понимаете под словом "держит"?
Если речь о переключении с передачи на прием, то все зависит от драйвера устройства.
Айрат
OPC сервер передал пакет, далее должен отпустить шину и встать на прием для получения пакета отклика. Вот я и спрашиваю после передачи пакета OPC сервер сразу шину отпускает или еще какое-то время держит, а потом отпускает и становится на прием. Если какое-то время держит шину, то какова величина этого времени.
-
В Windows вообще нет понятия удержания шины. Все это делается автоматически, драйвером COM порта. OPC сервер понятия не имеет с каким портом он работает, RS232 или RS485.
Можно читать что переключение осуществляется сразу после передачи.
На тот случай если драйвер медленно переключается из режима передачи в режим приема, или устройство "тупит", в настройках COM порта предусмотрен параметр "Задержка", на это время после приема данных от устройства в COM порт ничего не отправляется для того что бы устройство успело переключиться из передачи в прием.
Айрат
-
Хорошо. Мое устройство приняло пакет от OPC сервера, как быстро устройство должно ответить ?
-
Все зависит от драйвера.
Встречаются и такие экземпляры которым и 50 мс не хватит.
А вообще в Modbus период тишины должен быть 3,5 символа.
Айрат
-
Все зависит от драйвера.
Встречаются и такие экземпляры которым и 50 мс не хватит.
А вообще в Modbus период тишины должен быть 3,5 символа.
Айрат
Значит мое устройство может ответить не раньше времени прохождения 3,5 символов иначе пакет-отклик будет принят неверно ?
-
Да.
Айрат
-
А максимально сколько времени OPC сервер может ждать отклик от устройства ?
-
Какой таймаут зададите в настройках канала связи столько и ждет.
Айрат
-
Добрый день.
У меня получилось связать свой ПЛК с вашим OPC сервером. Обмен идет.
Хочу напомнить, что вы обещали поправить это.
-
Здравствуйте.
Да, я помню, постараюсь не затягивать.
Айрат
-
Добрый день.
Возможно ли командой с кодом 4 прочитать за один запрос несколько регистров ?
-
Здравствуйте.
Да, OPC сервер так и делает.
Настраиваете регистры на чтение командой 0x04, OPC сервер автоматически,в соответствии с заданными настройками формирует блоки опроса.
Айрат
-
Я уже так и сделал. Задал чтение 50 регистров, функция 4. Обмен идет. Только не всегда OPC сервер читает весь пакет отклик. Иногда пакет читается не до конца, обрывается в конце.
-
Попробуйте в настройках канала связи увеличить таймаут и межбайтовый интервал.
Айрат
-
Межбайтовый интервал у меня 0 стоит и его трогать не надо. Таймаут я увеличивал, не помогает. Малое число регистров читается отлично. Я так полагаю, что это ОС рвет обмен при длинном пакете отклике, Т.к. Windows не является ОС реального времени, то она в любой момент может приостановить выполнение программы пользователя для выполнения системных программ.
-
Это не OPC сервер, это устройство рвет пакеты. А межбайтовый интервал выставлять надо обязательно, т.к. даже в спецификации Modbus сказано что гарантированным окончанием передачи является тишина 1,5 символа, что для скорости 9600 примерно 1,5 мс, я бы порекомендовал 2 или 4.
И дело не в Windows, вы правы что работа программ может быть приостановлена, но драйвер COM порта работает в нулевом кольце, т.е. имеет приоритет выше чем программы прикладного уровня.
Айрат
-
Что драйвер COM порта имеет наивысший приоритет и его работу никто не может прервать ?
-
Почему тогда короткие пакеты отклики передаются без проблем. Там то же межбайтовый интервал 0.
-
Работу драйвер может прервать только другой драйвер. А функции драйвера работаю очень короткое время, соответственно времени хватает и обычным программам.
Что бы передать короткий пакет (ответ на чтение 1 регистра) на скорости к примеру 9600 необходимо примерно 7 мс, это без интервала тишины. За это время работу драйвера последовательного порта в контроллере может никто и не прерывает, вероятность маленькая. А что бы ответить на запрос чтения 50 регистров необходимо уже 105 мс, это много, за это время может сработать прерывание и алгоритм его отрабатывающий может занять к примеру 2 или 3 мс, на это время ответ приостановился, а драйверу COM порта этого достаточно что бы решить что прием завершен.
-
Нет у меня в основной программе ПЛК никаких прерываний.
-
А все длинные пакеты рвутся или только часть?
P.S. По вашему предыдущему замечанию, обновили OPC сервер, можно скачать с сайта.
-
Забыл, вы писали уже что иногда.
-
Есть отличная утилита, Portmon (https://technet.microsoft.com/ru-ru/sysinternals/portmon.aspx (https://technet.microsoft.com/ru-ru/sysinternals/portmon.aspx))
Позволяет "прослушивать" COM порты, с помощью ее можно посмотреть обмен между OPC сервером и ПЛК.
Своеобразный арбитр, эта утилита сразу покажет, в ком проблема.
Айрат
-
Есть отличная утилита, Portmon (https://technet.microsoft.com/ru-ru/sysinternals/portmon.aspx (https://technet.microsoft.com/ru-ru/sysinternals/portmon.aspx))
Позволяет "прослушивать" COM порты, с помощью ее можно посмотреть обмен между OPC сервером и ПЛК.
Своеобразный арбитр, эта утилита сразу покажет, в ком проблема.
Айрат
Спасибо, попробую все о чем вы писали.
Ваш бесплатный OPC сервер какие ограничения имеет ?
-
Здравствуйте.
Неограниченное время для конфигураций до 32 тегов или два часа работы при превышении этого количества.
Айрат
-
Здравствуйте.
Неограниченное время для конфигураций до 32 тегов или два часа работы при превышении этого количества.
Айрат
Если я читаю 50 регистров, то это 50 тегов ?
-
Смотря как вы их настроили. Если вы для них выбрали тип данных Double, то в этом случае это будет 200 регистров.
Айрат
-
Смотря как вы их настроили. Если вы для них выбрали тип данных Double, то в этом случае это будет 200 регистров.
Айрат
Вы хотели сказать 200 тегов ? Нет у меня регистр состоит из двух байт. Значит это будет 100 тегов ?
-
Нет.
Теги и регистры это разные вещи. Один тег может состоять из 1, 2, 3, 4 и т.д. регистров.
Тег это экземпляр информации не зависящий от внутреннего представления в устройстве, контроллере.
Под тегом понимается например: температура газов на выкиде из котла, состояние насоса, команда управления частотником и т.д. Не важно, сколько необходимо регистров для того что бы получить состояние тега.
OPC сервер считает теги, он не считает регистры. Если вы обратили внимание, в OPC сервере реализованы алгоритмы работы с другими устройствами: электросчетчики, частотники, устройства работающие по DCON протоколу, в них вообще нет понятия регистра или адреса, просто тег и все.
Как я вам говорил ранее, если вы у тега зададите тип данных Double или Int64, этот тег в пространстве Modbus устройства будет занимать 4 регистра или 8 байт, но для OPC сервера это будет 1 тег и вы сможете спокойно добавить еще 31 такой же в конфигурацию.
Айрат