| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Med Частый гость


Зарегистрирован: Jul 26, 2008 Сообщения: 25 Рейтинг: +0/-0
|
Добавлено: Вс 26 Окт, 2008 12:50:35 Заголовок сообщения: обработка слова DINT |
|
|
Здравствуйте, товарищи! Передо мной возникла такая задача: необходимо в RSview вытаскивать тэги состояния устройства из контроллера L63. Все эти тэги дискретные и если тянуть их отдельно цифровыми - дискретными тэгами типа BOOL то возникнет большой расход тэгов, тк устройств несколько сотен и по каждому порядка 20 дополнительных тэгов, а в RSview лицензия 5k. Возникла идея вытаскивать слово-состояние DINT по каждому устройству. При этом меня интересует как лучше поступить при организации алармов для таких слов, тк каждое такое слово будет содержать несколько битов тревоги. Правильно ли я поступлю, если создам для каждого бита свой Derived Tag? И вообще существует ли какой то предел по количеству Derived Tags в RSview не отобразится ли это на скорости работы графики?
PS. а RSLogics возникла в свою очередь другая задача. Слово DINT я получаю путем задания тэгов типа BOOL алиасами для отдельных битов слова DINT, тут возникает некая проблемка: 4 тэга типа BOOL являются также алиасами для каналов модулей вв/выв. Можно ли один тэг быть алиасом для 2-х других? |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Вс 26 Окт, 2008 15:46:03 Заголовок сообщения: |
|
|
Тут не только "большой расход тэгов" наступит но и сеть будет перегружена, да и Вы своими derived tags интенсивно загрузите рабочую станцию.
Зачем вообще делать какие-то вычисления (которых много) в рабочей станции под RSView? Зачем её этим грузить? Почему бы не написать программу обработки алармов прямо в контроллере, используя, например, удобную индексную адресацию и команды обработки алармов, которые есть в RSLogix?
Эта программа может проверять все ошибки, а затем создавать массив, содержащий какие-то слова состояния: где случилось, что случилось и т.п. И тогда пусть RSView смотрит на эти слова состояния (если вообще хотя бы один аларм имеет место). Тогда Вы ещё и сеть освободите от пересылки по ней никому не нужной ерунды (сотен и сотен битовых тэгов). |
|
| Вернуться к началу |
|
 |
maxim Эксперт


Зарегистрирован: Feb 16, 2007 Сообщения: 123 Рейтинг: +7/-0 Откуда: Енакиево
|
Добавлено: Пн 27 Окт, 2008 6:43:29 Заголовок сообщения: Re: обработка слова DINT |
|
|
| Med писал(а): | | Все эти тэги дискретные и если тянуть их отдельно цифровыми - дискретными тэгами типа BOOL то возникнет большой расход тэгов, тк устройств несколько сотен и по каждому порядка 20 дополнительных тэгов ... |
В документе pm0016 находим следующее:
"Важно: Минимизируйте использование массивов BOOL. "
там же сказано :
"Также можно использовать отдельные биты тега DINT или массив данных типа
DINT."
а для выборки нужных вам алармов и т.п. можете использовать битовую маску и статусные теги каналов
| Med писал(а): | | Правильно ли я поступлю, если создам для каждого бита свой Derived Tag? |
я бы посоветовал Вам все вычисления перенести в контроллер, собственно для этого он и нужен . Удачи. |
|
| Вернуться к началу |
|
 |
Med Частый гость


Зарегистрирован: Jul 26, 2008 Сообщения: 25 Рейтинг: +0/-0
|
Добавлено: Пн 27 Окт, 2008 16:06:16 Заголовок сообщения: |
|
|
| Это понятно все, но тут вот в чем проблема: по уcтройствам несколько видов аварийных сигналов, отображения любого из них нужно получать в RSView. А если брать аналоговые параметры, то по каждому необходимо иметь возможность изменять уставочные пороги алармов, а их 4 по каждому аналогу, поэтому я и решил не тянуть их в контроллер, а обрабатывать их в RSView, тем более, что эти алармы не участвуют в выполнении логики, поэтому я и решил обрабатывать слова DINT по каждому устройству при помощи битовой маски |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Пн 27 Окт, 2008 20:54:27 Заголовок сообщения: |
|
|
Почему бы не настроить уставки алармов один раз в жизни прямо в контроллере? Они же меняются не каждый день, и даже не каждую неделю. Даже, наверное, не каждый месяц. Или я ошибаюсь?  |
|
| Вернуться к началу |
|
 |
Med Частый гость


Зарегистрирован: Jul 26, 2008 Сообщения: 25 Рейтинг: +0/-0
|
Добавлено: Ср 29 Окт, 2008 15:57:26 Заголовок сообщения: |
|
|
| Ваша позиция ясна, все вполне логично. Но здесь иная ситуация и требования заказчиков очень экзотичны), здесь нужно иметь возможность менять уставки на уровне пользователей, а не на уровне программистов, поэтому и приходится так заморачиваться с кучей дополнительных тэгов но при этом в 5к уложиться |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Ср 29 Окт, 2008 21:01:55 Заголовок сообщения: |
|
|
Сочувствую...
Просто интересно: как часто в реальной жизни оператор, пользующийся системой автоматизации для управления технологичесим процессом, будет устанавливать уставки алармов? И, главное. зачем это ему нужно?
А почему нельзя приобрести версию RSView32 c бОльшим количеством тэгов? Почему вообще надо приобретать устаревшую RSView32 с ограниченным количеством физических тэгов, а не новую современную RSViewSE, где количество тэгов никак не ограничивается? |
|
| Вернуться к началу |
|
 |
Med Частый гость


Зарегистрирован: Jul 26, 2008 Сообщения: 25 Рейтинг: +0/-0
|
Добавлено: Чт 30 Окт, 2008 17:49:14 Заголовок сообщения: |
|
|
| Уставки меняются не часто, несколько раз в год, в зависимости от сезона, но заказчики не имеют собственного программиста, который мог бы сидеть вбивать эти уставки, поэтому задача стоит построить систему "на дурака", чтобы обслуживающий персонал имел возможность это сделать. То что 5к это очень мало я сам понимаю, но меня очень попросили влезть в эти рамки. |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Чт 30 Окт, 2008 22:29:48 Заголовок сообщения: |
|
|
| Цитата: | | Уставки меняются не часто, несколько раз в год, в зависимости от сезона |
Так это алармы или рецептуры, т.е. параметры технологического процесса? |
|
| Вернуться к началу |
|
 |
Med Частый гость


Зарегистрирован: Jul 26, 2008 Сообщения: 25 Рейтинг: +0/-0
|
Добавлено: Сб 01 Ноя, 2008 15:49:00 Заголовок сообщения: |
|
|
| это больше как параметры срабатывания аврийной сигнализации по измеряемым физическим параметрам (давление ,температура и тд). Как раз по этому поводу еще вопрос. Как сделать, чтобы введеные в запущенном проекте значения аналоговых тэгов не сбрасывались при перезагрузке проекта. Можно для хранения этих значений использовать какую-либо внешнюю таблицу Екселя? |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Сб 01 Ноя, 2008 16:21:52 Заголовок сообщения: |
|
|
Храните их в контроллере  |
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Пн 03 Ноя, 2008 9:13:32 Заголовок сообщения: |
|
|
| Med писал(а): | | Как сделать, чтобы введеные в запущенном проекте значения аналоговых тэгов не сбрасывались при перезагрузке проекта. Можно для хранения этих значений использовать какую-либо внешнюю таблицу Екселя? |
У RS была внешняя программа для этих целей - мне не понравилась.
Используй VBA - изменяй значения тега по умолчанию, пуск кода по закрытию экрана изменения тегов. |
|
| Вернуться к началу |
|
 |
DIMIOKS Эксперт


Зарегистрирован: May 14, 2005 Сообщения: 290 Рейтинг: +9/-0 Откуда: г.Самара
|
Добавлено: Вт 04 Ноя, 2008 18:38:54 Заголовок сообщения: |
|
|
| Цитата: | | Можно для хранения этих значений использовать какую-либо внешнюю таблицу Екселя? |
С помощью VBA так-же можно все енто дело вносить в текстовик, Ексель, какую-нибудь БД. Смотрите в примере, который идет вместе с RSView32.
Хотя я сам и не использую VBA на рабочих проектах, но ради интереса баловался, все получалось. |
|
| Вернуться к началу |
|
 |
Med Частый гость


Зарегистрирован: Jul 26, 2008 Сообщения: 25 Рейтинг: +0/-0
|
Добавлено: Вт 04 Ноя, 2008 19:54:13 Заголовок сообщения: |
|
|
| ясно, надо попробовать, может что и получится, правда сложновато будет, с синтаксисом VBA не знаком |
|
| Вернуться к началу |
|
 |
DIMIOKS Эксперт


Зарегистрирован: May 14, 2005 Сообщения: 290 Рейтинг: +9/-0 Откуда: г.Самара
|
Добавлено: Чт 27 Ноя, 2008 6:09:06 Заголовок сообщения: |
|
|
Привет всем!
Попутно касательно снижения количества тегов (для меня это тоже актуально)
можно привести следующий код:
| Код: | //Перевод знакового 4-байтного целого в строку как набор битов
function IntToStrBool(a:integer):string;
var
MyStr: string;
i, b, c, d: integer;
begin
try
MyStr := '00000000000000000000000000000000';
i := 0; b := 0; c := 0; d := 0;
for i := 31 downto 0 do
begin
b := a shr i; //Сдвигаем битовый массив a вправо на i-разрядов
c := b xor d; //Операция "исключающее ИЛИ"
case c of
0: begin
MyStr[32-i] := '0';
end;
1: begin
MyStr[32-i] := '1';
inc(d); //Увеличиваем на d +1
end;
end;
d := d shl 1; //Сдвигаем битовый d массив влево
end;
result := MyStr;
except
//Обработка исключений
end;
end;
//Перевод набор битов в строке в знаковое 4-байтное целое
function StrBoolToInt(MyStr: string):integer;
var
i, a: integer;
begin
try
i := 0; a := 0;
for i := 1 to 32 do
begin
a := a shl 1; //Сдвигаем битовый a массив влево на 1 разряд
if MyStr[i] ='1' then inc(a); //Увеличиваем a на +1
end;
result := a;
except
//Обработка исключений
end;
end; |
А вот кто приведет аналог на VBA, то было-бы вообще классно  |
|
| Вернуться к началу |
|
 |
|