This is topic Сжатие каналов FLOAT in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Есть ли способ сжать несколько каналов FLOAT в один, чтобы их можно было передать от одного узла к другому? Смысл в том, что на контроллере планирую реализовать PID и MREG регуляторы, но все коэффициены, которые определяются этими FBD-блоками хотелось бы отображать на операторской станции. А их в сумме около десятка (включая статусы). Учитывая, что у нас около двадцати клапанов и насосов, которые будут управлятся при помощи блоков MREG и PID, уже получается 200 каналов (а в сумме на каждый клапан и насос приходится около 25 каналов на каждом узле). С каналами, которые нужно будет сохранять в архив все понятно, но многие каналы не нужно сохранять. Они служат только для передачи данных от одного узла к другому и для отображения на экране. Учитывая, что диапазон изменения многих значений ограничивается от -100 до 100, то можно в один реальный канал сохранить несколько значений аргументов программы, которая находится на одном узле, передать на другой узел этот канал и там при помощи программы считать несколько аргументов из канала, Которые впоследствии и отображать. Есть ли стандартные средства для этого?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Есть такая функция - организуется такое сжатие через аргументы канала класса Call с параметром вызова "RemArgument", смотрите описание в справочной системе.
Posted by DreamWeaver (Участник № / Member № 1485) on :
Здорово. А если этот канал сохранить в дамп, то потом восстановятся значенияв всех его аргументов? Будут ли все аргументы нормальносохраняться в архив? А сколько максимум может быть аргументов у канала CALL с параметром RemArgument? Ведь по идее если нужно много каналов, можно создать несколько каналов CALL и работать с его аргументами как с реальными каналами. Получается, что можно фактически купить лицензию на 128 каналов, а работать с 2048 каналами. Или все же есть какие-то ограничения на использование аргументов?
Posted by DreamWeaver (Участник № / Member № 1485) on :
Возникла проблема. Создал 2 канала CALL: один в узле RTM - Call_1, а другой - в узле MicroRTM - Call_2. Для обоих каналов поставил тип выхова RemArgument. В каждом из них создал по 10 аргументов. Привязал канал Call_2 к каналу Call_1. Написал простенькую программу, которая заносиит во все аргументы канала Call_2 (в узле MicroRTM) постоянно меняющиеся значения. По идее вс эти значения должны перевадаться в канал Call_1 (в узел RTM), но этого реально не происходит. На узле RTM создал экран, в котором 10 текстовых полей, каждое их которых отображает соответствующий аргумент канала Call_1. Еще что странно, что на узле RTM канал Call_1 отображается в "Просмотре компонентов", а вот в узле MicroRTM, канал Call_2 не отображается в "Просмотре компонентов". Что я не правильно делаю?
Posted by DreamWeaver (Участник № / Member № 1485) on :
В справке посмотрел ограничения мониторов для DOS. Там написано, что не поддерживаются типы вызовов 12-16 и 26-28. Но RemArgument - это 49 тип вызова. Поэтому все должно быть в порядке. Если ставлю для канала CALL другой тип вызова, например Program, то этот канал в "Просмотре компонентов" отображается. Еще такой вопрос: если будет использовать не MicroRTM под DOS, а MicroRTM под WinCE, то какой тип узла нужно создавать: MicroRTM, NanoRTM, EmbeddedRTM?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Требуется время на проверку ситуации.
Насчет типа узла для WinCE - это должен быть EmbeddedRTM.
Posted by DreamWeaver (Участник № / Member № 1485) on :
Как продвигается проверка? Может, если есть простенький проект, показывающий как работать с каналом CALL с типом вызова RemArgument, вышлете мне его? Меня интересует возможность передавать значения нескольких каналов с одного узла на другой под одному этому каналу CALL. На операторскую станцию приходят данные с двух контроллеров и для отображения всех коэффициентов, параметров просто не хватает каналов (лицензия у нас на 1024 канала).
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Проверили - запросить данные из МикроМРВ в МРВ таким образом можно. Это работает.
Posted by DreamWeaver (Участник № / Member № 1485) on :
Я пока только тем и занимаюсь, что пытаюсь получить данные у контроллера, но все-равно не получается . Меня также еще заинтересовал тип вызова ChGroupReq, но этот подход у меня также не работает. Я выслал проект на hotline1@adastra.ru. Он, помимо настроек COM-порта и каналов MODBUS, создержит группу TEST, в которой насроен канал CALL типа ChGroupReq для получения данных с удаленного узла. Пришлите пожалуйста простенький проект, который наглядно показывает как можно использовать каналы CALL с типами вызовов RemArgument и ChGroupReq на узлах RTM и EmbeddedRTM.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Сейчас - высылаю Вам свой проект.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Я модифицировал Ваш проект. У Вас неверно было выполнено конфигурирование этой функции - в контроллере необходимо создать канал Call с аргументами, привязанными на его локальные каналы. А в МРВ необходим другой Call с таким же количеством аргументов, у которого настроена привязка на Call из контроллера, и тип вызова RemArgument!
Posted by DreamWeaver (Участник № / Member № 1485) on :
Я обновил инструменталку и МРВ до версии 6.021 и канал CALL с типом вызова RemArgument заработал. ChGroupReq пока не проверял, но проблема наверное была в версии программы.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Понятно. Думаю, что тогда и с ChGroupReq проблем быть не должно, потому как я это уже в 6.02.1 проверил, работает.