Подскажите пример скрипта как это осуществить :( я про подвязывания к виртуальной переменной и преобразовать а то сервер пишет что число не являться float и сам не догоняю
var
TestKost1: Single;
P1_Davlenie_na_vyhode_kotla_4_12500: string;
begin
TestKost1:= StrToFloat(P1_Davlenie_na_vyhode_kotla_4_12500);
end.
Здравствуйте.
Мы все же рекомендуем использовать другой OPC-сервер, который поддерживает работу с типами данных – так будет проще, надежнее, лучше по производительности и не придётся писать скрипты. Ниже пояснения по скрипту.
В первую очередь, перед написанием скриптов, рекомендуем ознакомиться с руководством по скриптам (https://simple-scada.com/help/script/index.html). Изучить базовые возможности, какие бывают скрипты (https://simple-scada.com/help/script/creatscript.html), какие типы переменных (https://simple-scada.com/help/script/var-types.html) существуют, ознакомиться с разделами "Рекомендации по работе со скриптами (https://simple-scada.com/help/script/script-recomend.html)" и "Отладка скриптов (https://simple-scada.com/help/script/debugscripts.html)". Посмотреть примеры наиболее часто используемых скриптов (https://simple-scada.com/help/script/sample-scripts.html).
В скрипте Вы объявляете переменные в разделе var. В данном случае Вы получаете локальные переменные скрипта, которые существуют только внутри скрипта и никак не связаны с переменными, добавленными через редактор переменных (https://simple-scada.com/help/manual/variable-editor.html) – подробнее см. по ссылке (https://simple-scada.com/help/script/var-types.html). Соответственно, данный скрипт работать не будет.
Вам нужно:
1. В редакторе переменных (https://simple-scada.com/help/manual/variable-editor.html) создать внутренние переменные (https://simple-scada.com/help/script/var-types.html) с именами, как у внешних переменных + приставка "_Filter" и нужным типом данных (https://simple-scada.com/help/manual/data-types.html). Например, для переменной "P1_Davlenie_na_vyhode_kotla_4_12500" -> "P1_Davlenie_na_vyhode_kotla_4_12500_Filter" и тд.
2. Если в скаду передаются значения с единицами измерения, то удалите единицы измерения в настройках сервиса OwenCloud, чтобы в скаду передавались только значения (без лишних символов). При необходимости единицы измерения можно будет настроить в скаде (https://simple-scada.com/help/manual/edit-scale.html). В ином случае, удалять единицы измерения придётся в скрипте перед преобразованием в число.
3. Создать скрипт с типом события "Изменились переменные (https://simple-scada.com/help/script/event-types.html)", добавить в список скрипта все необходимые внешние переменные (переменные с OPC-сервера) и написать такой код:
var
aVar: TM_Variable;
begin
aVar := GetVariableByName(Variable.Name + '_Filter'); // ищем внутреннюю переменную с именем: "имя переменной вызвавшей скрипт" + "_Filter"
if aVar <> nil then // если переменная существует
aVar.Value := StrToFloatDef(Variable.AsStr, -1); // то, записываем значение внешней переменной во внутреннюю
end.
Теперь эти внутренние переменные можно архивировать (https://simple-scada.com/help/manual/vararchive.html) и выводить в тренды (https://simple-scada.com/help/manual/editor-trends.html).