| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
victor-palgov Новичок


Зарегистрирован: Dec 14, 2005 Сообщения: 8 Рейтинг: +0/-0
|
Добавлено: Пт 23 Dec, 2005 8:55:25 Заголовок сообщения: Определение тегов в RS5000 |
|
|
Вопрос: как определить теги
BOOL A[64]
INT B[4]
так, чтобы они указывали на одно и то же место в памяти. |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Пт 23 Dec, 2005 9:32:19 Заголовок сообщения: |
|
|
Просто ссылайтесь на эти биты массива INT и всё, как показано в строчке 0 программы.
Или сделайте 64 Alias'а для Boolean на массив INT и ссылайтесь на них, как показано в строчке 1.
Можете просто скопировать INT в BOOLEAN, но это будет не одно и то же место в памяти. _________________ Обращайтесь к профессионалам. |
|
| Вернуться к началу |
|
 |
victor-palgov Новичок


Зарегистрирован: Dec 14, 2005 Сообщения: 8 Рейтинг: +0/-0
|
Добавлено: Пт 23 Dec, 2005 12:27:22 Заголовок сообщения: Это я все понимаю. |
|
|
Но мне нужна косвенная адресация по BOOL и одновременно по INT.
Обьясняю: косвенная адресация по BOOL- это команды Modbus на управление COIL, а индексация по INT это команда Modbus на передачу данных. Данные в Modbus передаются словами, а управление принимается битами ( номер бита и его состояние 00 или FF ). |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Пт 23 Dec, 2005 12:53:02 Заголовок сообщения: |
|
|
Нужна адресация, как INT - пишите MyINT[3]
Нужна адресация к биту, как BOOLEAN - пишите MyINT[3].2
Если нужно - используйте непрямую адресацию:
MyINT[position+offset].[bit_number+ramp]
position, offset, bit_number и ramp определены, скажем, как DINT. _________________ Обращайтесь к профессионалам. |
|
| Вернуться к началу |
|
 |
victor-palgov Новичок


Зарегистрирован: Dec 14, 2005 Сообщения: 8 Рейтинг: +0/-0
|
Добавлено: Пн 26 Dec, 2005 14:54:23 Заголовок сообщения: Спасибо. |
|
|
| Спасибо. |
|
| Вернуться к началу |
|
 |
DIMIOKS Эксперт


Зарегистрирован: May 14, 2005 Сообщения: 290 Рейтинг: +9/-0 Откуда: г.Самара
|
Добавлено: Вт 25 Апр, 2006 14:59:01 Заголовок сообщения: |
|
|
| Существует большая пользовательская структура, в которой в основном тип BOOL (много-много меток). Мне необходимо использовать в подпрограмме только небольшую часть данных (примерно 20 типа BOOL, остальное удобнее отправлять в подпрограмму в виде индекса для адресации в подпрограмме). Каждый переход в подпрограмму использует одинаковое кол-во и типы данных из большой структуры, сами данные всякий раз разные (из разных частей большой структуры). Структуру переписывать поздно, по разным причинам. Для отправки в подпрограмму этих данных мне придется использовать множесво Input Par and Return Par. Есть возможность создать небольшую структуру или массив, или тип DINT, INT и прочее так, чтабы каждый бит был Alias для определенного бита в большой структуре? А подпрограмма будет уже работать с промежуточными данными. Цель - создание одной процедуры(подпрограммы), которая будет вызываться более 40 раз за один скан. Прописывать большое кол-во Input Par and Return Par отразится на производтельности составления программы. |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Вт 25 Апр, 2006 18:34:28 Заголовок сообщения: |
|
|
хм...
Можно создать тэг, указав ему в качестве Type созданную Вами "базовую" большую структуру. Можно, конечно, создать ещё кучу тэгов типа "Ваша структура". Но проблема в том, что нельзя создать другую структуру, в которой бы элементы были alias к элементам базовой.
Дело в том. что элементы структуры не могут быть alias к каким-то базовым тэгам, а должны быть именно базовыми тэгами.
Нельзя ли переупаковать (скопировать один раз) нужные биты "базовой структуры" таким образом, чтобы они "легли" побитно в DINT и вызывать DINT, зная, где в нём что лежит? _________________ Обращайтесь к профессионалам. |
|
| Вернуться к началу |
|
 |
DIMIOKS Эксперт


Зарегистрирован: May 14, 2005 Сообщения: 290 Рейтинг: +9/-0 Откуда: г.Самара
|
Добавлено: Вт 25 Апр, 2006 19:32:52 Заголовок сообщения: |
|
|
Спасибо за ответ. Конечно, оба способа я знаю, но первый способ сразу отпадает как нерациональный, а побитное копирование в начале каждого скана... не знаю, очень много операций прописывать (20битХ40), время скана опять-же, даже если использовать для этого пару XIC-OTE...
Наверно, раньше надо было думать.
Я сейчас уже изменяю тип структуры.
Вопрос в догонку: почему такую адресацию Logix берет:
Metki.Doz[ForNext].Numer_Dozator
а такую не хотит:
Sostav_tekush2[Metki.Doz[Numer_Uspokoi_Doz].Numer_Sostav]
?
При индексации он не берет вложенную индексацию индекса? |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Вт 25 Апр, 2006 19:38:32 Заголовок сообщения: |
|
|
Выходит так, что не хотит
Это уж вообще - индексация второго уровня!  _________________ Обращайтесь к профессионалам. |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Вт 25 Апр, 2006 19:39:37 Заголовок сообщения: |
|
|
Да, структуру изменить-то проще, чем потом мучаться.  _________________ Обращайтесь к профессионалам. |
|
| Вернуться к началу |
|
 |
DIMIOKS Эксперт


Зарегистрирован: May 14, 2005 Сообщения: 290 Рейтинг: +9/-0 Откуда: г.Самара
|
Добавлено: Вт 25 Апр, 2006 20:01:57 Заголовок сообщения: |
|
|
Ну чтож... Хотя идея в общем неплохая. Вместо полного текста использовать какие-то стандартные процедуры с фиксированным набором инструкций и промежуточные данные для каждой процедуры. Если-бы была возможность многоуровневой индексации... я бы в основном работал с организацией памяти.
И определение псевдонимов побитно между структурами и внутри одной структуры.
Одно радует: программное обеспечение от других производителей не тянет на сегодняшний Logix5000. |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Вт 25 Апр, 2006 20:10:56 Заголовок сообщения: |
|
|
Я второй день хожу по Ганноверской выставке. Ни у кого нет и близко ничего подобного контроллерам Logix.
Похоже, что Rockwell ушёл лет на 5 вперёд всех. _________________ Обращайтесь к профессионалам. |
|
| Вернуться к началу |
|
 |
Dvoeglazov Эксперт


Зарегистрирован: Mar 06, 2006 Сообщения: 278 Рейтинг: +1/-0 Откуда: г.Киров-Чепецк
|
Добавлено: Пт 28 Апр, 2006 13:51:27 Заголовок сообщения: |
|
|
А мне вот Triconex тоже очень понравился.
Хотя ничего плохого о ControlLogix сказать не могу. Им бы еще SCADA хорошую (мечтательно). |
|
| Вернуться к началу |
|
 |
oldDad Site Admin


Зарегистрирован: May 05, 2005 Сообщения: 2773 Рейтинг: +89/-5
|
Добавлено: Пт 28 Апр, 2006 14:32:22 Заголовок сообщения: |
|
|
Triconex - это что? Не DCS от Foxboro ли?
А SCADA у Rockwell Software - одна из двух наиболее продаваемых в мире  _________________ Обращайтесь к профессионалам. |
|
| Вернуться к началу |
|
 |
|