Вход

Просмотр полной версии : Передача составной строки



The-Boss
15.07.2012, 15:10
Добрый день
Необходимо на мненоформе вводить значение - число.
Далее с этим числом нужно произвести манипуляции - добавить строки спереди и сзади. И уже после этого записать в орс-переменную.
Как это можно сделать?

Например, вводим число 77. Для записи в орс-переменную нужно передать "38;010002;77#R"

SCADAMaster
15.07.2012, 16:16
То есть оператор ввел число 77, далее по какому то алгоритму вычисляются строки которые нужно добавить в начало и конец?
Воспользуйтесь модулем "скрипт C#" (закладка палитры "Служебные"). На языке C# вы сможете обработать ваше значение и сформировать нужные строки по вашему алгоритму.

The-Boss
15.07.2012, 21:59
Не совсем правильно выразился. Задача даже проще
после ввода данных оператором (какой элемент лучше использовать и как к нему потом обращаться?) - нужно вставить в строку "38;010002;число#R"


PS - пробую Вашу скаду первый раз, поэтому прошу объяснить как "для чайника". Если освою на таких задачах - думаю выберу основной для автоматизации предприятия

SCADAMaster
16.07.2012, 07:14
Для ввода значения нужно использовать контрол команды - добавляете в дерево объектов "Команду", ставите ей нужный тип и вытаскиваете ее на мнемосхему. При щелке по этому контролу появится окно ввода строки.

Так вам нужно эти значения просто на мнемосхеме отобразить? Или наоборот - на мнемосхеме отображать не нужно, а нужно добавить их к введенному значению и передать на ОРС?
Если просто на мнемосхеме отобразить, тогда нужно в настройках контрола задать "Текст до значения" и "Текст после значения".

Если нужно добавить эти значения к введеному и передать в ОРС (а на мнемосхеме сформированную строку отображать не нужно), то тогда можно использовать ФБ "Формирование строки" (закладка "Вычисления" Палитры ФБ).
В настройках данного ФБ задаете 3 параметра. Один параметр - текст перед числом, второй - число, третий - текст после числа. Один вход привязываете к вашей команде для ввода числа, а к двум остальным привяжите строковые команды, с заданными константами.
Затем формируете шаблон строки, примерно такой:
{0}{1}{2}
Подробнее описано в справке к данному ФБ.

Также вам возможно будут полезны наши видеопримеры:
http://www.masterscada.ru/?additional_section_id=233

The-Boss
16.07.2012, 13:20
Если нужно добавить эти значения к введеному и передать в ОРС (а на мнемосхеме сформированную строку отображать не нужно), то тогда можно использовать ФБ "Формирование строки" (закладка "Вычисления" Палитры ФБ).
В настройках данного ФБ задаете 3 параметра. Один параметр - текст перед числом, второй - число, третий - текст после числа. Один вход привязываете к вашей команде для ввода числа, а к двум остальным привяжите строковые команды, с заданными константами.
Затем формируете шаблон строки, примерно такой:
{0}{1}{2}

Сделал как Вы сказали. Посмотрел в режиме отладки - формируется строка, которая мне нужна. И тогда надеюсь последний вопрос - как эту строку передать орс-переменной по событию изменения значения на мнемоформе? (связываться "формирование строки" с переменной не хочет)

SCADAMaster
16.07.2012, 13:36
Не совсем понятно.
Вам нужно связать выход "Результат" ФБ "Формирование строки" с вашей ОРС переменной. Связь не устанавливается?
А ОРС переменная имеет вход (она входная или вход-выход)?

The-Boss
16.07.2012, 14:01
Переменная на "чтение-запись". Ok, завтра посмотрю подробнее по поводу привязывания раз должна привязываться - может я не досмотрел...

То есть если связать "результат" и переменную - она как понимаю будет по таймеру передавать ее?
Ситуация такая - задавать нужно уставку. То есть в таком случае, при запуске скады изначально тогда она либо не должна передавать ничего, либо передавать текущее значение уставки?..

SCADAMaster
16.07.2012, 14:06
То есть если связать "результат" и переменную - она как понимаю будет по таймеру передавать ее?

По умолчанию запись ведется по изменению. То есть если переменная изменила свое значение, то произойдет ее запись в ОРС.
Можно конечно сделать запись периодическую, но мы рекомендуем использовать по изменению.



Ситуация такая - задавать нужно уставку. То есть в таком случае, при запуске скады изначально тогда она либо не должна передавать ничего, либо передавать текущее значение уставки?..
При запуске она можете передать последнее введеное значение, если вы включите "восстановление при рестарте".
Или что вам требуется?

The-Boss
16.07.2012, 14:09
По умолчанию запись ведется по изменению. То есть если переменная изменила свое значение, то произойдет ее запись в ОРС.

Да, именно это хотел знать.
Спасибо, завтра попробую все таки привязать к переменной

The-Boss
17.07.2012, 09:47
Добрый день
Все заработало, спасибо - переменную пытался перетаскивать не с того поля

И тогда надеюсь последний вопрос: некоторые переменные после переноса в объект и последующим переносом на мнемосхему отображаются, а некоторые нет. И, соответственно, у них нет поля "Контроль значения" и в одном месте указан тип "нет данных". Где и как это можно исправить?

SCADAMaster
17.07.2012, 10:28
Не совсем понятно.
Не отображаются в режиме исполнения? "Нет данных" это значит что не введено значение переменной, например ОРС передал признак качества "Нет связи", или оператор еще не ввел значение в команду.

The-Boss
18.07.2012, 07:14
значит примерно так:
- сделал экспорт переменных орс-сервера (примерно 15шт)
- перенес их в объект
- в режиме отладки показываются данные, что и на орс-сервере

но на некоторые переменные на вкладке "общие" показывается тип "нет данных", хотя на вкладке "свойства" показывает что у нее вещественный тип. Соответственно, нет и вкладки "контроль значений" и невозможно перетащить ее на мнемосхему.

SCADAMaster
18.07.2012, 08:23
Приложите ваш проект, и скриншоты закладки "Свойства" и "общие".

The-Boss
18.07.2012, 10:41
Проект приложить не смог - не хотел загружаться - выложил на файлообменнике - http://fileland.ru/file_id-259078

SCADAMaster
18.07.2012, 12:41
Очевидно это ОРС не корректно передает тип.
Вы перетащили эту переменную в дерево отчетов - она стала значением. Можно у значения поставить "Запрет наследования типов" и уже у значения задать шкалу и контроль значений.
Можно также использовать ФБ "Повторитель".

Еще замечания по проекту - поставьте у объектов исполнение на конкретном компьютере, а не на "Исполнять на всех".

The-Boss
18.07.2012, 15:17
Да, действительно. Удалил группу орс-переменных и добавил снова - все стало нормально
Спасибо большое!

The-Boss
25.09.2014, 15:24
Доброго дня)
По теме все работает замечательно. Единственное но, на которое жалуются операторы. Изначально программа передавала уставки с точностью до 0,1. После какого-то момента при передачи дробного числа - передается только целочисленная часть (после чего точно ответить не смогу - возможно после обновления masterscada). Какие варианты возможны для решения такой проблемы?

SCADAMaster
25.09.2014, 16:45
Посмотрите в дереве системы у переменной, на закладке "Данные входа" - если поступает дробное число, значит со стороны скады все корректно, и нужно смотреть на стороне сервера.