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


Зарегистрирован: Aug 07, 2007 Сообщения: 34 Рейтинг: +0/-0
|
Добавлено: Вт 07 Авг, 2007 13:56:58 Заголовок сообщения: Одинаковые элементы мозаичного щита |
|
|
Есть программа работающая с одним элементом МЩ,
обрабатывающая нажатия кнопок на нем, индикацию состояния, а также передачу команд другому контроллеру по RS485.
В конечном итоге требуется программа работающая с 30 аналогичными элементами.
Каждому элементу соответствуют свои адреса контактов модулей ввода/вывода и свои адреса команд для общения с другим контроллером.
Пожалуста, подскажите как бы это реализовать?
(контроллер SLC 5/04, ПО RSLogix500) |
|
| Вернуться к началу |
|
 |
Nikolay Частый гость


Зарегистрирован: Aug 07, 2007 Сообщения: 34 Рейтинг: +0/-0
|
Добавлено: Ср 08 Авг, 2007 6:09:03 Заголовок сообщения: Пробы |
|
|
Размножение элементов я в принципе реализовал с помощью
создания SLC library для одного элемента, и далее вставкой
созданного элемента несколько раз и индексирования адресов
(Adress Load Mode = Indexed) массивов.
Но есть много недостатков и недоработок:
1) для реализации этого все подпрограммы (LAD2-10) пришлось
скомпоновать в одну, иначе не возможно индексирование адресов;
2) все созданные элементы остаются приписаны к одним и тем же
адресам общения с другим контроллером.
Как обойти эти недостатки?
А особенно, как можно спараметрировать связь между элементами и адресам общения с другим контроллером? |
|
| Вернуться к началу |
|
 |
Krotyuk Постоянный участник


Зарегистрирован: Feb 20, 2006 Сообщения: 59 Рейтинг: +0/-0 Откуда: г. Мариуполь
|
Добавлено: Ср 08 Авг, 2007 6:12:30 Заголовок сообщения: |
|
|
Уважаемый Николай!
Учитывая Ваш предыдущий вопрос, я понимаю, речь идет о работе с контроллерами SLC500. Если у Вас имеется 30 однотипных объектов и Вы не хотите для каждого из них тиражировать ранги, я бы посоветовал Вам следующее: Написать отдельную процедуру, в которой бы разместил необходимые к выполнению алгоритмы и вызывал ее командой JSR. А для переключения между различными входами использовал индексную адресацию. Индексная адресация работает так: в месте, где будет переменная пишем вместо, например, N7:0 #N7:0. Тогда в данном месте программы произойдет обращение к адресу, смещенному в файле N7 на величину, которая располагается в S:24. Таким образом я последовательно сначала задавал бы смещение (S:24), а затем вызывал нужную подпрограмму JSR-ом. И таким образом бы решил проблему обработки разных адресов (входов/выходов) одним и тем же алгоритмом. |
|
| Вернуться к началу |
|
 |
Krotyuk Постоянный участник


Зарегистрирован: Feb 20, 2006 Сообщения: 59 Рейтинг: +0/-0 Откуда: г. Мариуполь
|
Добавлено: Ср 08 Авг, 2007 6:50:14 Заголовок сообщения: |
|
|
| Цитата: | 1) для реализации этого все подпрограммы (LAD2-10) пришлось
скомпоновать в одну, иначе не возможно индексирование адресов;
2) все созданные элементы остаются приписаны к одним и тем же
адресам общения с другим контроллером. |
Не совсем понимаю, в чем, собственно, проблема? Что касается п.1, то зачем все сливать в одну подпрограмму? Если Вам удобнее, оставьте несколько подпрограмм. Внутри подпрограмм везде используйте, например, #N7:0. Таким образом, как только Вы задаете S:24, у Вас при вызове всех подпрограмм будет вызываться обработка элемента 0 + смещение. И так будет до тех пор, пока Вы не перепишете S:24, задав тем образом ссылку на другой адрес.
Что касается п.2: вообще непонятно, как так получается, что индексацию Вы используете, а адреса остаются прежние? Опишите попонятнее проблему. |
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Ср 08 Авг, 2007 8:41:19 Заголовок сообщения: |
|
|
В SLC-5/04 начиная с OS401 есть косвенная адресация, что гораздо мощнее, чем индексная (S:24).
Можно косвенно изменять слот, слово, бит.
Например: самый полный вариант O:[N7:0].[N7:1]/[N7:2], потребует больше времени, чем индексная.
Но
Можно сделать так (быстрее и безопаснее):
O:1.0/[N7:2] - N7:2 продолжает указывать на номер бита.
При:
N7:0=0 -> O:1.0/0
N7:0=16 -> O:2.0/0, если модули на 16 разрядов в слотах 1 и 2.
и так далее...
Внимание на использование инструкций OTE при косвенном и индексном методе - адрес на который идет ссылка должен существовать. |
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Ср 08 Авг, 2007 8:43:52 Заголовок сообщения: Re: Пробы |
|
|
| Nikolay писал(а): | | А особенно, как можно спараметрировать связь между элементами и адресам общения с другим контроллером?[/u] |
Что есть другой контроллер?
У вас два SLC и их надо связать между собой? |
|
| Вернуться к началу |
|
 |
Nikolay Частый гость


Зарегистрирован: Aug 07, 2007 Сообщения: 34 Рейтинг: +0/-0
|
Добавлено: Чт 09 Авг, 2007 7:19:03 Заголовок сообщения: |
|
|
Другой контроллер это Sicam - насколько я понял он управляет некими механизмами. Состояние механизмов будут индицироваться на моих элементах, а также ими управляться.
Общение с Sicam происходит по IEC 101 (который тоже предстоит подробнее изучить ).
Пока вместо Sicam на соседнем компе стоит програмка эммулирующая прием и передачу сообщений от него. Общение с ней получается (наладил прием и отправку некоторых команд).
Спасибо за информацию по методам адресации
Буду пробовать.
Теперь я вижу следующий способ параметрирования:
Видимо нужно создать массив адресов Sicam,
и используя методы косвенной или индексной адресации каждый элемент (при своем проходе алгоритма) будет обращаться к Sicam по своим адресам.
Пока понятно, буду реализовывать. Информации мало, а что есть на англиском. Зато по ходу скоро и англиский выучу.  |
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Чт 09 Авг, 2007 8:07:47 Заголовок сообщения: |
|
|
Для общения с SICAM:
- CH0 () перевести в режим USER
- командами из категории ASCII программировать обмен
Неудобство - теряешь связь RSLogix500<>SLC по RS-232 DF-1.
Тебе для отладки стоит иметь Online с контроллером.
Значит надо приобретать у AB карту на DH+ (накладно) или 1746-BAS-T (имеет порт RS-485 и дешевле Prosoft) или у Prosoft-Technology MVI46-GSC или MVI46-ADM (имеют порты RS-232 или RS-485).
IEC 101 это не сокращение от IEC 60870-5-101?
Prosoft-Technology производит MVI46-101M (Master) и MVI46-101S (Slave) для IEC 60870-5-101. |
|
| Вернуться к началу |
|
 |
Nikolay Частый гость


Зарегистрирован: Aug 07, 2007 Сообщения: 34 Рейтинг: +0/-0
|
Добавлено: Чт 09 Авг, 2007 10:57:21 Заголовок сообщения: |
|
|
Да, полное название протокола - IEC 60870-5-101.
В состав моего контроллера входят:
- CPU SLC 5/04
- ком. модуль MVI46-101M (Master)
- и модули I/O
DF-1, DH+ - что такое в описании к CPU есть, честно что это пока для меня загадка.
Отлаживаю в Online. Одновременно общаюсь с эмулятором Sicam'a.
Мне эту работу из другого отдела перекинули, там их программист уволился. Сделано мало. Вопросов куча. До этого я только микроконтроллерами PIC от Microchip занимался.
Железо уже было выбрано до меня.
Также была написана тестовая програмка для одного элемента. Я по ней со всем разбираюсь.
Что такое CH0 () и категория ASCII пока незнаю , но буду искать.
Отправить и принять команду получается. Но чуствую все не так просто. Следует еще разобраться с потверждением получения команды, ее выполнения, и т.д..
Да, пожалуй для написания общего алгоритма следует хорошенько разобраться с Sicam.
Создам-ка отдельную тему по общению с Sicam  |
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Чт 09 Авг, 2007 11:46:11 Заголовок сообщения: |
|
|
| Nikolay писал(а): | ...- ком. модуль MVI46-101M (Master)
|
У тебя все Ok. Online редактирование штука мощная.
CH0 - порт RS-232, протокол можно выбрать.
CH1 - коммуникационный порт, для SLC фиксирован (в твоем DH+)
DF-1 - открытый протокол, имеет подварианты.
Помни про коварство инструкции OTE, при косвенной (индексной) адресации. |
|
| Вернуться к началу |
|
 |
Nikolay Частый гость


Зарегистрирован: Aug 07, 2007 Сообщения: 34 Рейтинг: +0/-0
|
Добавлено: Пт 10 Авг, 2007 8:40:27 Заголовок сообщения: |
|
|
Еще раз спасибо за инфо про адресацию.
Протестил возможности косвенной реализации - работает.
Два элемента управляются единым алгоритмом. Одна подпрограмма, в которой вместо номеров битов стоят переменные (слова из массива N17), перед ее вызовом лишь меняю значения этих переменных(N17).
| dv_ писал(а): | | Внимание на использование инструкций OTE при косвенном и индексном методе - адрес на который идет ссылка должен существовать. |
Ради интереса попробовал номер бита (который хранится в N17:1) задать равным 255 - который неопределен. При выполнений на CPU горит FLT -"ошибка". И это происходит при обращении к нему (биту) любой командой не только OTE, но и OTL и OTU. Что в принципе логично.
Единственный подвох в команде OTE в том, что она выполняется даже если условие перед ней не выполнилось(только результат разный либо бит уст. в 1, либо в 0).
Я правильно понял? |
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Пт 10 Авг, 2007 9:16:50 Заголовок сообщения: |
|
|
| Nikolay писал(а): | [Ради интереса попробывал номер бита (который хранится в N17:1) задать равным 255 - который неопределен. При выполнений на CPU горит FLT -"ошибка". И это происходит при обращении к нему (биту) любой командой не только OTE, но и OTL и OTU. |
Правильно так и должно быть.
Но в OTE есть "подпольное действие".
Сделай три опыта с программой в одну строку и сравни:
1) LES N17:1 255 OTL B3:0/[N17:1]
2) LES N17:1 255 OTU B3:0/[N17:1]
3) LES N17:1 255 OTE B3:0/[N17:1]
B3:0 замени на свой файл данных
Только 3-ем случае будет FLT при N17:1=255 (этого бита нет). |
|
| Вернуться к началу |
|
 |
Nikolay Частый гость


Зарегистрирован: Aug 07, 2007 Сообщения: 34 Рейтинг: +0/-0
|
Добавлено: Пт 10 Авг, 2007 10:41:48 Заголовок сообщения: Извиняюсь |
|
|
В столовую позвали - сообщение не дописал. По возращении подредактировал. Не знаю застал ли ты следущие строки:
| Я писал(а): | Единственный подвох в команде OTE в том, что она выполняется даже если условие перед ней
не выполнилось(только результат разный либо бит уст. в 1, либо в 0).
Я правильно понял? |
|
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Пт 10 Авг, 2007 14:49:58 Заголовок сообщения: |
|
|
| Цитата: | Единственный подвох в команде OTE в том, что она выполняется даже если условие перед ней
не выполнилось(только результат разный либо бит уст. в 1, либо в 0). Я правильно понял?[/ |
Правильно! Не зависимо от состояния цепочки идет обращение к биту - поэтому адрес должен существовать. |
|
| Вернуться к началу |
|
 |
dv_ Эксперт


Зарегистрирован: Sep 14, 2006 Сообщения: 776 Рейтинг: +41/-1 Откуда: Донецк
|
Добавлено: Пт 10 Авг, 2007 14:50:09 Заголовок сообщения: |
|
|
| Цитата: | Единственный подвох в команде OTE в том, что она выполняется даже если условие перед ней
не выполнилось(только результат разный либо бит уст. в 1, либо в 0). Я правильно понял?[/ |
Правильно! Не зависимо от состояния цепочки идет обращение к биту - поэтому адрес должен существовать. |
|
| Вернуться к началу |
|
 |
|