Расчетные переменные
Расчетные переменные
Здравствуйте.
Накидал небольшую конфигурацию из двух базовых узлов и нескольких составных переменных. И там и там есть нарастающий счетчик (копия), в первом узле есть два параметра Level и Speed (синусоида по счетчику). Заметил странность, что в первом узле счетчик бежит в два раза быстрее – такого не должно быть т.к. они одинаковы. Если в первом узле оставить только счетчик или дополнительно параметр Speed, то скорость изменения счетчиков становится одинаковой, как и должно быть. А вот если в первом узле оставить только счетчик и параметр Level, то скорость изменения счетчика удваивается. Не могу понять в чем дело. Конфигурацию высылаю вам на ящик.
Версия 3.9 сборка 70.
Накидал небольшую конфигурацию из двух базовых узлов и нескольких составных переменных. И там и там есть нарастающий счетчик (копия), в первом узле есть два параметра Level и Speed (синусоида по счетчику). Заметил странность, что в первом узле счетчик бежит в два раза быстрее – такого не должно быть т.к. они одинаковы. Если в первом узле оставить только счетчик или дополнительно параметр Speed, то скорость изменения счетчиков становится одинаковой, как и должно быть. А вот если в первом узле оставить только счетчик и параметр Level, то скорость изменения счетчика удваивается. Не могу понять в чем дело. Конфигурацию высылаю вам на ящик.
Версия 3.9 сборка 70.
Re: Расчетные переменные
Опытно установил, что если переменную счетчик перемесить в начало списка, то скорость изменения счетчиков приходит в норму, а вот если переместить в конец списка (третьим), то скорость уже утраивается. Вот формулы для расчета переменных (период опроса узлов 0.1сек):
(1*) Item(Count) := Item(Count) + 0.1;
(2*) Item(Level) := Sin(3.1415926 * Item(Count) / 15) + 4;
(3*) Item(Speed) := 0.5 * Cos(3.1415926 * Item(Count) / 20);
PS Возник вопрос по ходу написания скриптов к переменным: Как писать комментарии в коде (в описании не нашел) ?
(1*) Item(Count) := Item(Count) + 0.1;
(2*) Item(Level) := Sin(3.1415926 * Item(Count) / 15) + 4;
(3*) Item(Speed) := 0.5 * Cos(3.1415926 * Item(Count) / 20);
PS Возник вопрос по ходу написания скриптов к переменным: Как писать комментарии в коде (в описании не нашел) ?
Последний раз редактировалось BThorn 22 июн 2011, 05:30, всего редактировалось 1 раз.
Re: Расчетные переменные
При расчете переменной Count не используйте эту же переменную, иначе первое значение не определенно.
Лучше используйте переменную симуляции типа счетчик. И уже от нее вычисляйте значения составных переменных.
Лучше используйте переменную симуляции типа счетчик. И уже от нее вычисляйте значения составных переменных.
Re: Расчетные переменные
В данном примере первое значение Count не критично, интересуют последующие циклы (n+1) – формула для этой переменной выдает конкретные значения с хорошим статусом.
И к тому же возникает надобность в подобных переменных – пример масса теплоносителя нарастающим итогом с момента запуска OPC сервера. Сразу возникает вопрос, какими путями можно установить первоначальное значение (число или SQL значение) для составной переменной???
Ну не сходится задачка. Могу предположить, что есть некий флаг расчета, который устанавливается только при последовательном опросе переменных в цикле опроса. Если значение переменной(1) запрашивается в другой переменной(2), при этом если переменная(2) находится выше в списке цикла опроса чем переменная(1), то для переменной (1) не устанавливается этот флаг, пока цикл опроса не дойдет до этой переменной. Тем самым происходит накручивание переменной в разы.
И к тому же возникает надобность в подобных переменных – пример масса теплоносителя нарастающим итогом с момента запуска OPC сервера. Сразу возникает вопрос, какими путями можно установить первоначальное значение (число или SQL значение) для составной переменной???
Ну не сходится задачка. Могу предположить, что есть некий флаг расчета, который устанавливается только при последовательном опросе переменных в цикле опроса. Если значение переменной(1) запрашивается в другой переменной(2), при этом если переменная(2) находится выше в списке цикла опроса чем переменная(1), то для переменной (1) не устанавливается этот флаг, пока цикл опроса не дойдет до этой переменной. Тем самым происходит накручивание переменной в разы.
Re: Расчетные переменные
Для счетчика лучше использовать не составную переменную, а переменную симулирования.
Выслал Вам на почту отредактированную конфигурацию, в которой в качестве счетчика используется переменная симулирования типа счетчик.
Выслал Вам на почту отредактированную конфигурацию, в которой в качестве счетчика используется переменная симулирования типа счетчик.
Ошибка в скрипте
Код:
Выскакивает ошибка:
Ошибка в скрипте.
? operand
формула: x>-50
Если в сравнении использовать положительные значения, то все работает, а вот любые отрицательные значения вызывают ошибку. Как быть?
PS И все таки, как вставлять комменты в скрипте?
Код: Выделить всё
x := Item(Item2);
IF x>-50 THEN {Item(Item2_Status):=16} ELSE {Item(Item2_Status):=192}
Ошибка в скрипте.
? operand
формула: x>-50
Если в сравнении использовать положительные значения, то все работает, а вот любые отрицательные значения вызывают ошибку. Как быть?
PS И все таки, как вставлять комменты в скрипте?
Re: Расчетные переменные
Возьмите в скобки:
x := Item(Item2);
IF x>(-50) THEN {Item(Item2_Status):=16} ELSE {Item(Item2_Status):=192}
На данный момент используется несовершенный интерпретатор.
В дальнейшем планируется переход на более продвинутый интерпретатор скриптов.
x := Item(Item2);
IF x>(-50) THEN {Item(Item2_Status):=16} ELSE {Item(Item2_Status):=192}
На данный момент используется несовершенный интерпретатор.
В дальнейшем планируется переход на более продвинутый интерпретатор скриптов.
Re: Расчетные переменные
Повторю вопросы:
1) Как вставлять комментарии в скриптах???
2) Как установить первоначальное значение (число или SQL значение) для составной переменной?
1) Как вставлять комментарии в скриптах???
2) Как установить первоначальное значение (число или SQL значение) для составной переменной?
Re: Расчетные переменные
1) Никак к сожалению;
2) Не использовать для счетчиков составную переменную.
2) Не использовать для счетчиков составную переменную.
Re: Расчетные переменные
Вопрос был не применительно конкретно к счетчику, а, в общем, к составной переменной. Тоже никак?!admin писал(а):2) Не использовать для счетчиков составную переменную.
Получается, что реализовать простую составную переменную с функцией накопления массы теплоносителя нарастающим итогом не выполнима средствами _одного_ OPC-сервера. Будем писать в SQL.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей