Вход на форум 
В начало e-Mail

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  
Smart Solutions VDT :: Просмотр темы - Доступ к элементам модуля 1756-IF16
 FAQFAQ   ПоискПоиск   ГруппыГруппы   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Доступ к элементам модуля 1756-IF16
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Коллективный разум. Давайте посоветуемся!
Предыдущая тема :: Следующая тема  
Автор Сообщение
stAntonio
Новичок
Новичок


Зарегистрирован: Jun 17, 2008
Сообщения: 8
Рейтинг: +0/-0

СообщениеДобавлено: Вт 17 Июн, 2008 10:56:11    Заголовок сообщения: Доступ к элементам модуля 1756-IF16 Ответить с цитатой

В проекте присутствует модуль оцифровки входных аналоговых сигналов 1756-IF16. В списке тегов он отображается структурой, содержащей данные каждого канала:
Local:3:I.Ch0Data
Local:3:I.Ch1Data
Local:3:I.Ch2Data
...
...
Local:3:I.Ch15Data

Можно ли эти каналы перебрать в цикле? Т.е. данные с этих каналов необходимо переписать в массив, можно ли их перебрать по адресам или номерам?

Спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kempo
Эксперт
Эксперт


Зарегистрирован: Jul 10, 2006
Сообщения: 150
Рейтинг: +6/-0
Откуда: Украина, Алчевск

СообщениеДобавлено: Вт 17 Июн, 2008 11:08:52    Заголовок сообщения: Ответить с цитатой

Для какой цели необходимо их в массив загонять? Почему нельзя напрямую к каналу обращаться?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AgeevSlava
Постоянный участник
Постоянный участник


Зарегистрирован: Dec 13, 2005
Сообщения: 53
Рейтинг: +0/-0
Откуда: Украина, Мариуполь

СообщениеДобавлено: Вт 17 Июн, 2008 11:10:49    Заголовок сообщения: Ответить с цитатой

Привет! Создай массив из 16-и элементов минимум (в данном примере это AI_Data[]) и при помощи инструкции CPS организуй копирование данных из соответствующего модуля. А потом пользуй массив в цикле. Пример на ST, но та же инструкция применяется и в LAD.

//Чтение входных данных аналоговых каналов в буферную зону
CPS (Local:1:I.Ch0Data, AI_Data[0] , 16) ;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
stAntonio
Новичок
Новичок


Зарегистрирован: Jun 17, 2008
Сообщения: 8
Рейтинг: +0/-0

СообщениеДобавлено: Вт 17 Июн, 2008 11:39:12    Заголовок сообщения: Ответить с цитатой

Спасибо помощь.
Этот способ решения проблемы я тоже знаю.

Дело вот в чем, в проекте, который я дополняю, происходит опрос нескольких таких модулей. изначально было написано на LD. 37 шагов одинаковых инструкций. я нашел способ оптимизировать этот опрос. Вот как я попытался его решить:

FOR cnt1 := 0 TO 15 BY 1 DO
//0-15 0-15
ain_buf[cnt1].data := Local:3:I.Ch1Data;
ain_buf[cnt1].status := Local:3:I.Ch1Status;

//16-31 0-15
ain_buf[(16+cnt1)].data := Local:4:I.Ch1Data;
ain_buf[(16+cnt1)].status := Local:4:I.Ch1Status;

END_FOR;

FOR cnt1 := 0 TO 5 BY 1 DO
//32-37 0-5
ain_buf[(32+cnt1)].data := Local:5:I.Ch1Data;
ain_buf[(32+cnt1)].status := Local:5:I.Ch1Status;

ain_cfg[(32+cnt1)].SclMax := Local:5:C.Ch1Config.HighEngineering;
ain_cfg[(32+cnt1)].SclMin := Local:5:C.Ch1Config.LowEngineering;
END_FOR;

при этом необходимо менять номера каналов:
Ch0ata
Ch1Data
Ch2Data
....
Ch15Data

но как это сделать в цикле я не знаю.

вспоминая язык С++, у меня возникла идея обращаться по адресам в которых лежат эти элементы. Все элементы Real, лежат друг за другом в структуре, которая автоматически создается средой разработки для данного модуля. Но к сожалению я не смог найти способа это сделать.

Может вы знаете? заранее спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
stAntonio
Новичок
Новичок


Зарегистрирован: Jun 17, 2008
Сообщения: 8
Рейтинг: +0/-0

СообщениеДобавлено: Вт 17 Июн, 2008 11:43:40    Заголовок сообщения: Ответить с цитатой

И вообще возможно ли обращаться к тегам, и их элемента по адресам как это происходит в обычном программировании?

P.S. Изучать RS Logix я начал только недавно, так что всех тонкостей не знаю. Пардону просим! Confused
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
maxim
Эксперт
Эксперт


Зарегистрирован: Feb 16, 2007
Сообщения: 123
Рейтинг: +7/-0
Откуда: Енакиево

СообщениеДобавлено: Вт 17 Июн, 2008 12:24:01    Заголовок сообщения: Ответить с цитатой

[quote="stAntonio"]И вообще возможно ли обращаться к тегам, и их элемента по адресам как это происходит в обычном программировании?

В ControlLogix 5550 распределение памяти - динамическое. Поэтому программист имеет доступ не к фиксированому адресу памяти , а к единице хранения данных - тэгу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
stAntonio
Новичок
Новичок


Зарегистрирован: Jun 17, 2008
Сообщения: 8
Рейтинг: +0/-0

СообщениеДобавлено: Вт 17 Июн, 2008 12:32:18    Заголовок сообщения: Ответить с цитатой

Спасибо, тогда еще вопрос:
Возможна ли навигация внутри тега по адресу?

Простите туплю. Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AgeevSlava
Постоянный участник
Постоянный участник


Зарегистрирован: Dec 13, 2005
Сообщения: 53
Рейтинг: +0/-0
Откуда: Украина, Мариуполь

СообщениеДобавлено: Вт 17 Июн, 2008 13:06:52    Заголовок сообщения: Ответить с цитатой

А собственно в чем конечная цель обращений в цикле к данным конфигурации, состояния каналов и к самим данным? Хотите написать процедуру однотипной обработки каналов?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
stAntonio
Новичок
Новичок


Зарегистрирован: Jun 17, 2008
Сообщения: 8
Рейтинг: +0/-0

СообщениеДобавлено: Вт 17 Июн, 2008 13:22:51    Заголовок сообщения: Ответить с цитатой

Да.
Либо придется описывать 160 каналов вручную либо как то оптимизировать их опрос.

Возможно ли использовать в этом случае псевдонимы?
Спасибо за ваши ответы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kempo
Эксперт
Эксперт


Зарегистрирован: Jul 10, 2006
Сообщения: 150
Рейтинг: +6/-0
Откуда: Украина, Алчевск

СообщениеДобавлено: Вт 17 Июн, 2008 13:29:11    Заголовок сообщения: Ответить с цитатой

А почему бы тогда просто не сделать подпрограмму и в ее теги вносить нужные вам? У нас так обрабатывается порядка 300 сигналов - все отлично работает
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
stAntonio
Новичок
Новичок


Зарегистрирован: Jun 17, 2008
Сообщения: 8
Рейтинг: +0/-0

СообщениеДобавлено: Вт 17 Июн, 2008 13:41:44    Заголовок сообщения: Ответить с цитатой

Извините, Кемпо, а можно пример?
что то я туго сегодня соображаю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
maxim
Эксперт
Эксперт


Зарегистрирован: Feb 16, 2007
Сообщения: 123
Рейтинг: +7/-0
Откуда: Енакиево

СообщениеДобавлено: Вт 17 Июн, 2008 13:54:23    Заголовок сообщения: Ответить с цитатой

Забросьте это в тело цикла и меняя "cnt1" заполняйте массив данными
ain_buf[cnt1].data := Local:3:I.Data[cnt1];
ain_buf[cnt1].status := Local:3:I.Status[cnt1];
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
stAntonio
Новичок
Новичок


Зарегистрирован: Jun 17, 2008
Сообщения: 8
Рейтинг: +0/-0

СообщениеДобавлено: Вт 17 Июн, 2008 14:08:08    Заголовок сообщения: Ответить с цитатой

К сожалению тагого члена "Local:3:I.Data[cnt1];" в теге Local:3:I нет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kondratiev
Постоянный участник
Постоянный участник


Зарегистрирован: Dec 04, 2005
Сообщения: 79
Рейтинг: +1/-0
Откуда: Мариуполь, Киев

СообщениеДобавлено: Вт 17 Июн, 2008 15:41:40    Заголовок сообщения: Ответить с цитатой

Действительно косвенная адресация в СontrolLogix только через массивы.
И если уж кортит обрабатывать каналы в цикле то через промежуточный буфер( буферы, например разные для статуса, ошибок, данных). Но обработка каждого канала отдельным рангом/рангами часто нагляднее, особенно если коменты хорошо написаны.
Конечно хочется загнать всю обработку входов в пару вложенных циклов, но "каждый выбирает по себе"...

Кстати объединияя все в цикл кроме красоты вы мало что выигрываете. сокрацается объем кода. зачем?? при объемах памяти CL это не столь важно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Kondratiev
Постоянный участник
Постоянный участник


Зарегистрирован: Dec 04, 2005
Сообщения: 79
Рейтинг: +1/-0
Откуда: Мариуполь, Киев

СообщениеДобавлено: Вт 17 Июн, 2008 15:48:40    Заголовок сообщения: Ответить с цитатой

ИМХО оптимальный вариант для программера: перебрать всю структуру аналогового модуля в подпрограмме.
А в нее передавать входными параметрами данные с разных модулей.
и выходными параметрами швырять куда вм там нужно.

А для эксплуатации, ежели ей код проги остается, милее всего каждый канал перебирать однотипными рангами/блоками рангов! Удобнее если что прослеживать путь сигнала
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Коллективный разум. Давайте посоветуемся! Часовой пояс: GMT + 1
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

Powered by phpBB © 2001, 2005 phpBB Group
Яндекс цитирования

Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany
Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de
Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна.
Открытие страницы: 0.150 секунды
/n