noble-minded |
Отправлено: 28 Мая, 2013 - 10:34:41
|
Newbie
Покинул форум
Сообщений всего: 4
Дата рег-ции: Май 2013
|
Спасибо, разобрался. Уменьшил количество переменных до 112, ОРС-сервер запустился.
Возникла другая проблема.
Опрашиваю 2 устройства через ОРС-сервер. Для каждого создал по 10 входных аналоговых переменных (ВА), первые четыре из которых заведены на мнемосхему, а остальные шесть преобразуются в 48 дискретных (ВД), 36 из которых заведены на мнемосхему. Преобразование происходит в системе КРУГОЛ.
Проблема в том, что на мнемосхеме первого устройства все сигналы отображаются корректно, а на мнемосхеме второго устройства отображаются только первые четыре ВА, которые не используются в системе КРУГОЛ. Значения остальных шести ВА равны 0, а соответственно и значения всех 48 ВД, хотя среди них есть ненулевые значения, видимые в других ОРС-клиентах.
Подскажите, пожалуйста, где искать ошибку?
(Добавление)
Вот формулы преобразования ВА в ВД:
(* Начало БСУ №1 *)
:GAS_FLAG5
(ПЛ1, ПЛ1, ПЛ1, ПЛ1, ВД3.а45, ПЛ1, ВД2.а45, ВД1.а45) = CodB8( r32i16(ВА5.а65) )
:GAS_FLAG6
(ВД11.а45, ВД10.а45, ВД9.а45, ВД8.а45, ВД7.а45, ВД6.а45, ВД5.а45, ВД4.а45) = CodB8( r32i16(ВА6.а65) )
:GAS_FLAG7
(ПЛ1, ПЛ1, ВД13.а45, ПЛ1, ВД12.а45, ПЛ1, ПЛ1, ПЛ1) = CodB8( r32i16(ВА7.а65) )
:GAS_FLAG15
(ВД21.а45, ВД20.а45, ВД19.а45, ВД18.а45, ВД17.а45, ВД16.а45, ВД15.а45, ВД14.а45) = CodB8( r32i16(ВА8.а65) )
:GAS_FLAG16
(ВД29.а45, ВД28.а45, ВД27.а45, ВД26.а45, ВД25.а45, ВД24.а45, ВД23.а45, ВД22.а45) = CodB8( r32i16(ВА9.а65) )
:Wire&Fire
(ПЛ1, ВД36.а45, ВД35.а45, ВД34.а45, ВД33.а45, ВД32.а45, ВД31.а45, ВД30.а45) = CodB8( r32i16(ВА10.а65) )
(* Конец БСУ №1 *)
(* Начало БСУ №2 *)
:GAS_FLAG5
(ПЛ1, ПЛ1, ПЛ1, ПЛ1, ВД39.а45, ПЛ1, ВД38.а45, ВД37.а45) = CodB8( r32i16(ВА15.а65) )
:GAS_FLAG6
(ВД47.а45, ВД46.а45, ВД45.а45, ВД44.а45, ВД43.а45, ВД42.а45, ВД41.а45, ВД40.а45) = CodB8( r32i16(ВА16.а65) )
:GAS_FLAG7
(ПЛ1, ПЛ1, ВД49.а45, ПЛ1, ВД48.а45, ПЛ1, ПЛ1, ПЛ1) = CodB8( r32i16(ВА17.а65) )
:GAS_FLAG15
(ВД57.а45, ВД56.а45, ВД55.а45, ВД54.а45, ВД53.а45, ВД52.а45, ВД51.а45, ВД50.а45) = CodB8( r32i16(ВА18.а65) )
:GAS_FLAG16
(ВД65.а45, ВД64.а45, ВД63.а45, ВД62.а45, ВД61.а45, ВД60.а45, ВД59.а45, ВД58.а45) = CodB8( r32i16(ВА19.а65) )
:Wire&Fire
(ПЛ1, ВД72.а45, ВД71.а45, ВД70.а45, ВД69.а45, ВД68.а45, ВД67.а45, ВД66.а45) = CodB8( r32i16(ВА20.а65) )
(* Конец БСУ №2 *) |
|
|
LopukhinVA |
Отправлено: 28 Мая, 2013 - 14:37:15
|
Full Member
Покинул форум
Сообщений всего: 170
Дата рег-ции: Сент. 2010
|
Здравтсвуйте!
С точки зрения синтаксиса КРУГОЛа проблем не замечено. Возможно проблема заключается в некорректных начальных значениях.
Если в преобразовании участвует атрибут 65 Входной аналоговой переменной, то необходимо проверить к какому атрибуту переменной КРУГ-2000 привязан тег OPC-сервера.
Возможны, например, два варианта:
1) Тег OPC-сервера привязан к атрибуту №28 переменной ВА. В данном случаем необходимо включить алгоритм Нестандартных обработок №1. В результате этих обработок, текущее значение будет присваиваться в атрибут 65.
2) Если нестандартные обработки не используются, то OPC-тег необходимо привязать, непосредственно к атрибуту №65 переменной.
3) Если используется нестандартная обработка и OPC-тегов привязан к атрибуту 65, то значение данного атрибута будет перетираться обработкой из атрибута 28. Соответственно, если а.28 = 0, то и а.65 = а.28 = 0.
Итого, при использовании нестандартной обработки, OPC-тег должен быть привязан к атрибут №28 ВА.
Если нестандартные обработки не используются, то в КРУГОЛе необходимо использовать тот же атрибут переменной, к которой осуществлена OPC-привязка. |
|
|
|