Несколько вопросов по SIMP Light

Avatar
  • обновлен
Скачал демо! Сразу же возникли вопросы!
1.Наличие в полной версии WEB и Sql сервера?
2.Есть удаленный клиент?
3.Есть ли ФБ регуляторов типа ТРМ?
На первый взгляд понравилась простота, по сравнению с комплексом Master-Scada.
Avatar
Евгений Горло
Объясню суть задачи.Работаем с приборами Termodat. Значение температуры с прибора в программу приходит целым числом(тип Word), на приборе значение отображается в виде числа с плавающей точкой(вещественное). Нам нужно, чтобы значение в программе было тоже с плавающей точкой. В принципе задача решается с использованием виртуальных каналов. То есть скрипт в виртуальном канале преобразует значение с прибора в вещественное и выводит его в этом же виртуальном канале. Код примерно такой:

var d:real; d:=ReadValue('COM1/dev2(addr=2)/var1'); WriteValue('Virtual channel 1',d/10);
При этом физический канал "COM1/dev2(addr=2)/var1" делаем невидимым. При запуске Монитора значение в виртуальном канале отображается верно, но физический канал мелькает в списке каналов находящих вне зоны уставки. Вопрос в том, как его убрать с этого списка? И вообщем корректно выводить значения с прибора в виртуальный канал? Или может писать измененное значение в физический канал (если выговорите, что это возможно)? Если да,то возникает вопрос Как?
Следующее, что нужно сделать это повторить манипуляцию со значение с прибора на 108 каналов. То есть создать еще 107 виртуальных каналов, и добавить 107 строчек кода, приведенного выше, в скрипт. Пробовал обработать все это дело в цикле(примерный код цикла я приводил в предыдущих сообщениях), как видите, не получается.Хотя если если бы я написал этот код на Delphi или на другом языке, уверен, что он интерпретировался бы верно.Не знаю, может быть, есть другой путь!?
Евгений Горло
ОАО ААК "ПРОГРЕСС"
Avatar
SIMP Tech (Сергей)
по-моему я чего-то не понимаю. мнемосхема же просто должна выводить значение, тоже что и на Мониторе

На мнемосхему можно поставить компонент, для записи значения в канал.
Avatar
Евгений Горло
А с мнемосхемы к примеру в этот канал можете записать значение?

по-моему я чего-то не понимаю. мнемосхема же просто должна выводить значение, тоже что и на Мониторе.
Avatar
SIMP Tech (Сергей)
А с мнемосхемы к примеру в этот канал можете записать значение?
Avatar
Евгений Горло
Теоретически должно работать, уточните какой ОРС сервер, какой канал (Read / Write).

Owen OPC сервер
Avatar
SIMP Tech (Сергей)
var1:=ReadValue('Физический канал 1'); var2:=var1+10; WriteValue('Физический канал 1', var2);
Теоретически должно работать, уточните какой ОРС сервер, какой канал (Read / Write).

Var d,r:array[1..10] of real; i:integer; Begin for i:=1 to 10 do begin d[i]:=ReadValue('Датчик 1_('+IntToStr(i)+')'); r[i]:=d[i]+100 ; WriteValue('Стапель1 Датчик 1_('+IntToStr(i)+')',r[i]+i); end; end.
А вот такой "фокус" с каналами не пройдет, дело в том что перед компиляцией в скрипте все имена каналов заменяются на идентификаторы канала, т.е при инициализации скрипта производит поиск канала по имени в теле скрипта, и замена его на ID канала, по этой причине, канала к примеру 'Датчик 1_('+IntToStr(i)+')' для системы не существует.
Avatar
Евгений Горло
Немного неточно, из под скрипта можно писать как в виртуальный, так и в физический канал. При работе в редакторе скриптов, не производится запуск опроса переменных. В режиме выполнения скрипта (в редакторе скриптов) есть возможность вручную изменять переменную на входе, тем самым следить за реакцией программы скрипта.

Как это сделать в скрипте, то есть как изменять значение физического канала?
Код вида не работает:

var1:=ReadValue('Физический канал 1'); var2:=var1+10; WriteValue('Физический канал 1', var2);В редакторе скриптов код выполняется, в Мониторе - не работает

Еще хотел бы задать вопрос по работе с циклами. Есть такой код:

Var d,r:array[1..10] of real; i:integer; Begin for i:=1 to 10 do begin d[i]:=ReadValue('Датчик 1_('+IntToStr(i)+')'); r[i]:=d[i]+100 ; WriteValue('Стапель1 Датчик 1_('+IntToStr(i)+')',r[i]+i); end; end. В редакторе скриптов код выполняется и выводит результат правильно. В мониторе результата нет, статус каналов - нет данных. Если я напишу код без цикла, то есть десять таких строк, в которых будет меняться только имена каналов и номера переменных то все прекрасно работает:
d[1]:=ReadValue('Датчик 1_(1)'); r[1]:=d[1]+100 ; WriteValue('Стапель1 Датчик 1_(1)',r[1]+i);
Avatar
SIMP Tech (Сергей)
Немного неточно, из под скрипта можно писать как в виртуальный, так и в физический канал. При работе в редакторе скриптов, не производится запуск опроса переменных. В режиме выполнения скрипта (в редакторе скриптов) есть возможность вручную изменять переменную на входе, тем самым следить за реакцией программы скрипта.
Avatar
Евгений Горло
Еще вопросик возник! Со скриптом.
Пробую простой скрипт в виртуальном канале:
'Пример Basic Script
dim In1, Out1
' присвоить переменной In1, значение переменной канала
In1=ReadValue("COM13/MV110-2A(addr=14)/Output1/Read")
' присвоить переменной In2, значение переменной канала
'In2=ReadValue("Имя канала")
' If (In1 >= 30.00) Then WriteValue("COM13/MK110-8R(addr=16)/Output1/r.oe", Out1)
' записать значение переменной Out1 в канал
нажимаю компилировать! Все нормал! Жму выполнить! Все ок! Только в графе значения 0! А не прочитанные значения с модуля ввода! Мб я что нибудь неправильно в скрипте составил?
Если можно дайте пример скрипта виртуального канала просто прочитать с канала МВ значение!
Зарание блогадарен!


Приветствую! Сейчас на производстве внедряем Simp Light. Тоже возникла необходимость в написании скрипта. По вашему вопросу могу сказать, записывать значение можно только виртуальный канал, а канал "COM13/MV110-2A(addr=14)/Output1/Read" получает данные с прибора и не может быть изменен в скрипте. Таким образом, ваш скрипт будет выглядеть так:
'Пример Basic Script
dim In1, Out1
' присвоить переменной In1, значение переменной канала
In1=ReadValue("COM13/MV110-2A(addr=14)/Output1/Read")
' присвоить переменной In2, значение переменной канала
'In2=ReadValue("Имя канала")
' If (In1 >= 30.00) Then WriteValue("Virtual channel 1", Out1)
' записать значение переменной Out1 в канал
Avatar
Евгений Горло
Приветствую! Сейчас на производстве внедряем Simp Light. Тоже возникла необходимость в написании скрипта. По вашему вопросу могу сказать, записывать значение можно только виртуальный канал, а канал "COM13/MV110-2A(addr=14)/Output1/Read" получает данные с прибора и не может быть изменен в скрипте. Таким образом, ваш скрипт будет выглядеть так:
'Пример Basic Script
dim In1, Out1
' присвоить переменной In1, значение переменной канала
In1=ReadValue("COM13/MV110-2A(addr=14)/Output1/Read")
' присвоить переменной In2, значение переменной канала
'In2=ReadValue("Имя канала")
' If (In1 >= 30.00) Then WriteValue("Virtual channel 1", Out1)
' записать значение переменной Out1 в канал