Здраствуйте! Наш проект состоит из МРВ 5.15 работающей на пк с win2kp sp4 и МикроМРВ 5.15 на microPC под ДОС 6.22. Сетевой обмен ведется по протоколу NetBEUI по 100-мегабитному Ethernet. С увеличением проекта возникла следующая проблема. МРВ опрашивает состояние объекта управления и прочую информацию из МикроМРВ с помощью 200 каналов (раньше было 100) типа Связь-In Net. В настройках обоих узлов стоят галки: Быстрый старт, интенсивный прием, Host Mode - сеть, Slave Mode - сеть. МРВ не успевает опросить все каналы с циклом опроса 1 с. Скорость обновления значений в этих каналах прямо-пропорциональны их номеру. Т.е. чем позже был добавлен канал тем больше задержка обновления значения. У последних каналов она достигает минуты, что естественно не удовлетворяет нашего заказчика. В место МРВ на данный момент я использую профайлер из инструментальной системы TM pro 5.15. Выделение NCB следущее NET:NCB for AutoSend = 0 NET:NCB for AutoSend float value = 0 NET:NCB for SendToNet = 1 NET:NCB for CopyFrom = 2 NET:NCB for Registrator = 0 NET:NCB for Recieving = 8 Вопрос что такое CopyFrom? Что используют каналы данного типа? NCB for CopyFrom или NCB for Recieving? И если проблема в их нехватке, то как их увеличить? Прошу продублировать отвен на мой почтовый ящик, указанный в анкете.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
NCB for CopyFrom - это для запросов по In-Net. NCB for Recieving - это для приема по автопосылкам. Увеличить можно только NCB на прием с помощью ключа REC запуска сервера с командной строки. Но Вам нужно не это - использовать для подъема такого колличества данных связь In-Net (метод "точка-точка") неэффективно. Вам необходимо использовать Автопосылки, то есть - контроллер рассылает данные в сеть, а МРВ принимает ее каналами In-Autonet (этот метод обмена называется "один ко многим").
Posted by Viatcheslav (Участник № / Member № 145) on :
Контроллер высылает данные в сеть каждую секунду?(при условии конечно если период канала 1с) или только при изменении значения канала?
Posted by Viatcheslav (Участник № / Member № 145) on :
Выдержка их хэлпа "При каждом изменении реального значения этого канала оно посылается в сеть. Для его приема на другом узле надо создать канал, принимающий эту рассылку. Он имеет подтип СВЯЗЬ и дополнение IN AutoNET . В качестве настроек для него устанавливается узел и канал на нем, посылающий данные в сеть. " Мы пытались так сделать раньше. Возникает следущая проблема: Так как NetBEUI не гарантирует надежность доставки, то если пакет не доходит до адресата, получается что данные не будут высланы до их следующего изменения. И практика показала что это происходит регулярно. Поэтому приходится опращивать все 200 каналов каждую секунду (а наиболее важные из них 55мс)
Posted by Viatcheslav (Участник № / Member № 145) on :
В нашем случае хоть через 40 секунд мы получим данные, а в Вашем варианте получается, что данные могут не прийти вовсе. Точно ли нельзя увеличить NCB for CopyFrom?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
"Так как NetBEUI не гарантирует надежность доставки...", а Вы думаете, что In Net по-другому работает? Абсолютно точно также - тот же самый пакет что и в автопосылке, только адресованный, но по сути такой же широковещательный. Различие в том, что In-Net на каждом цикле пересчета канала запрос выполняет и тем самым сеть все "забивает", из-за этого ижет расход NCB у других МРВ, а это в свою очередь снижает динамику обмена. Автопосылка же рассылается только по изменению значения, поэтому траффик значительно ниже. Если же у Вас при таком маленьком количество каналов (для автопосылки) происходит негарантированная доставка, то я бы порекомендовал Вам первым делом проверить на качество связи саму сеть - очень часто бывает, что первопричина плохого обмена бывает некачественный канал связи, а также сетевое оборудование ("битый" свитч, хаб или сетевая карта на ПК, в той же сети, и даже может быть не на ПК с ТМ5). Уж поверьте - прецеденты были и не раз (ситуации где-то даже здесь на форуме обсуждались).
Posted by Viatcheslav (Участник № / Member № 145) on :
Каким бы качественным канал связи не был, все равно есть вероятность того что пакет не дойдет. Представьте если сработал какой-нибудь аварийный концевой, и информация об этом не пришла на МРВ? И я не говорю что у нас каждая вторая посылка не приходит. При 200 каналах даже 1 процент потери очень критичен. В конце концов МРВ может быть временно отключена (или сеть). И что тогда? как снять состояние объекта? Кстати МикроМРВ считывает данные с МРВ без проблем. Те есть получаеться нашу проблему мы решить не можем не уменьшив количество каналов?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
"Каким бы качественным канал связи не был, все равно есть вероятность того что пакет не дойдет." - позвольте не согласиться! В том то и дело, что в автопосылках есть досылка параметра так называемым "скользящим блоком" и даже если значение изменилось, но пакет не дошел до МРВ - досылкой оно все равно дойдет, пусть не сразу, но дойдет (при этом просто не гарантируется время, потому как оно будет зависеть от наличия свободных NCB-блоков). Еще раз повторюсь - с точки зрения архитектуры разницы между прохождениями по сети пакетов "точка-точка" и "один ко многим" - нет никакой, теряться могут и те и другие с обинаковой вероятностью! Поэтому у Вас и In-Net будут теряться также как и In_Autonet, что у Вас и происходит сейчас, выражаясь в замедлении обмена. К тому же они еще и NCB "отъедают" гораздо активнее создавая лишний трафик в сети. Вам не каналы надо уменьшать, а переходить на автопосылки, увеличивать количество NCB на прием, а в первую очередь саму сеть проверить на качество обмена! 100-200 каналов для автопосылок при всего двух узлах в сети - это мизер! Есть проекты до десятка узлов и до нескольких тысяч каналов по сети (причем в некоторых случаях - по 10 мегабитной) и все прекрасно работает. Не хотите менять проект - сделайте новый тестовый с похожей конфигурацией, попробуйте погонять его в различных режимах. По крайней мере - будет наглядно видно как лучше организовать обмен.
Posted by Viatcheslav (Участник № / Member № 145) on :
"В том то и дело, что в автопосылках есть досылка параметра так называемым "скользящим блоком" и даже если значение изменилось, но пакет не дошел до МРВ - досылкой оно все равно дойдет, пусть не сразу, но дойдет (при этом просто не гарантируется время, потому как оно будет зависеть от наличия свободных NCB-блоков)." Вот с этого и надо было начинать. Напишите по подробней про этот алгоритм досылки.