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

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  


Предыдущие результаты



Предыдущие результаты



Предыдущие результаты

 Хороший вопрос :) Сейчас попробую привести несколько общих соображений и рекомендаций. Основное правило планирования вычислительной мощности мультизадачных проектов реального времени звучит так: „Don’t hog the CPU“, что означает «не заграбастывайте время процессора» :) Поэтому, чтобы минимизировать время скана, следует, в принципе, придерживаться следующих соображений: 1. Лучше использовать небольшое количество больших программ, чем большое количество маленьких. Чем больше задач, тем больше «накладных расходов», т.е. вычислительных ресурсов, требующихся процессору и операционной системе, чтобы отслеживать переключение задач, сохранения контекста, определения наиболее приоритетной готовой к выполнению задачи, сохранению контекста в стеки задачи, у которой система забирает процессор и т.п. 2. Если возможно, используйте только одну или как можно меньше задач. 3. Лучше использовать одну программу с вызовами подпрограмм (routines) чем несколько автономных задач со своими приоритетами, локальной областью данных и т.п. 4. Если Вам необходимо иметь в системе несколько задач с собственными приоритетами, то в каждой задаче лучше иметь только одну программу или пару программ. 5. Лучше применять «оборонительный» стиль планирования приоритетов и вычислительного процесса, чем «наступательный», т.е. присваивать задаче настолько маленький приоритет, насколько это возможно и имеет смысл, а не назначать каждой новой задаче (ещё) больший приоритет, чем предыдущей. 6. Старайтесь следовать следующей стратегии: задачи с относительно более высоким приоритетом должны обслуживать самые важные события во внешней среде, и быть настолько короткими, насколько это возможно. Чем выше приоритет, тем короче, лаконичнее и проще должна быть задача. 7. Поскольку резервированные процессоры постоянно заняты ещё и сравнением и выравниванием контекста, и это происходит с довольно высоким приоритетам (по вполне понятной причине – нужно постоянно быть наготове!) , очень критичным является время передачи массива данных (тэгов). Поэтому структурируйте данные так, чтобы иметь наименьшее количество тэгов. Это позволит уменьшить объём данных, передаваемых между основным и резервирующим процессором, а, следовательно, уменьшить время трансфера данных между контроллерами и увеличить быстродействие. 8. Удаляйте ненужные тэги. Поскольку они созданы, память под них отписана, и они участвуют в трансфере, т,к. Процессор не анализирует, используются ли они в действительности. 9. По этим же соображениям лучше использовать массивы тэгов вместо ряда индивидуальных тэгов. Каждый раз, когда Вы создаёте тэг BOOL, контроллер создаёт 4-байтовую структуру данных вместо 1 бита. Например, массив BOOL из 32 битов занимает 32 бита, т.е. 4 байта, а 3 независимых тэга типа BOOL занимают 3 тэга x 4 байта/тэг = 12 байт. 10. Старайтесь использовать биты в слове, а не отдельные битовые тэги. Если Вам необходимы тэги различного типа, то лучше создавать польовательские структуры данных, состоящие из тэгов и массивов разных типов, чем просто большое количество тэгов. Напирмер, структура может состоять из тэгов SINT, INT, DINT, REAL, COUNTER, TIMER. Менеджер памяти оптимизирует такие структуры, макчимально упаковывая данные вплотную друг к другу. 11. Если уж Вы создаёте единичные тэги, то лучше создавайте альянсы (aliases) к компонентам массивов. 12. Минимизируйте код программы, насколько это возможно. Если по какому-нибудь условия выполняются различные действия, то избегайте множественных проверок этого условия в разных строках программы, а лучше для всех этих действий используйте ветвление во второй половине строки проверки учловия. 13. По этой же причине минимизируйте применение конструкций вида «проверил условие – установил флажок – во многих местах пользуюсь этим флажком». Лучше избегать флажков и помещать инструкции выполнения впараллель в строчке проверки условия непосредственно после проверки этого условия. 14. Не выполняйте строчки программы, если это не нужно. Выполняйте действия только тогда, когда это действительно необходимо. Например, выполнение сложения после проверки необходимости сложения лучше, чем безусловное выполнение сложения без проверки этого условия. 15. При передаче данных между партнёрами-контроллерами данные делятся на пакеты по 256 байт. Каждый раз, когда производится запись, скажем, в 1 (один) бит, т.е. тэг типа BOOL, между контроллерами передаётся целый блок из 256 байт. Поэтому лучше осмысленно группировать данные таким образом, чтобы передавалось только то, что нужно, а не, например, одни и те же константы в одном и том же блоке. Иными словами, лучше располагать константы в одном блоке, медленно меняющиеся значения в другом, быстроменяющиеся – в третьем и т.п. в этом смысле. 16. Лучше использовать DINT, чем SINT или INT. Поскольку контроллер имеет 32-битную шину данных, его естественным форматом является именно DINT. Все остальные Ваши форматы контроллер вынужден перед использованием сперва преобразовывать в DINT, а потом снова в Ваш формат. Это занимает время. 17. Не нужно явно в программе преобразовывать SINT или INT в DINT. Контроллер делает это автоматически. В противном случае это занимает лишнее время. 18. При планировании Вашей системы пожалуйста не пренебрегайте всеми рекомендациями документа [url=http://literature.rockwellautomation.com/idc/groups/literature/documents/um/1756-um523_-en-p.pdf]1756-um523_-en-p.pdf[/url]. Настройки ControlNet тоже нужно оптимизировать с помощью RSNetworx for ControlNet. - Можно поварьировать NUT. - Очень часто недостаточная производительность сети связана с некачественным механическим её исполнением, например, нехорошим контактом в разъёме. Посмотрите в Station Diagnostics в RSLinx, нет ли плохих пакетов, "шума", ошибок? - Лучше располагать адреса в сети подряд, без промежутков. - Хорошо бы проверить в RSNetworx, корректно ли указаны максимальные сетевые адреса Max Scheduled и Max Unscheduled. - Если у Вас резервированная сеть, проверьте, установлено ли в Media Redundancy, что передача идёт по кабелям А и В. - Посмотрите, сколько реально байтов в секунду пропускает Ваша сеть в фазе unscheduled. Не получается ли так, что NUT слишком мал, чтобы пропустить все байты за один такт? Не слишком ли велик бесполезный запас? - Посмотрите характер загрузки сети: Average and Peak Scheduled Band Network. Чем ближе эти значения к 100%, тем тяжелее загружена сеть. Сколько у Вас рабочих станций в данном сегменте ControlNet? Что Вы используете - RSView32 или RSViewSE? Успехов! :)

 Попробуйте сделать вот что: [url=http://domino.automation.rockwell.com/applications/kb/RAKB.nsf/6ead4531e08f2074852569bb007630d5/fe509c794f5848ae85256f9000086911?OpenDocument]R107263064[/url]

 Просто ссылайтесь на эти биты массива INT и всё, как показано в строчке 0 программы. Или сделайте 64 Alias'а для Boolean на массив INT и ссылайтесь на них, как показано в строчке 1. [img:a8396b3634]http://vdt-automation.com.ua/ab_images/bool1.jpg[/img:a8396b3634] [img:a8396b3634]http://vdt-automation.com.ua/ab_images/bool2.jpg[/img:a8396b3634] Можете просто скопировать INT в BOOLEAN, но это будет не одно и то же место в памяти.

 Да, импорт ещё не отлажен как следует. Мы сперва экспортируем тэги, а потом их импортируем. А дисплеи включаем в состав проекта как обычно правым кликом. Ну и макро и т..п. копируем. Т.е. по частям. Имейте в виду при импорте вот это: http://domino.automation.rockwell.com/applications%5Ckb%5CRAKB.nsf/0/74567F277C95312A85256D0F006E77B9?OpenDocument http://domino.automation.rockwell.com/applications%5Ckb%5CRAKB.nsf/0/E1C156049520E90D85256F2600439F05?OpenDocument http://domino.automation.rockwell.com/applications%5Ckb%5CRAKB.nsf/0/4E2DC4C3531657CFC12570CF00820B91?OpenDocument По RSSQL есть вот что: [u:d24729fbda][url=http://vdt-automation.de/files/rssql-docs.rar]rssql-docs.rar[/url][/u:d24729fbda]

 Читайте [u:77524d1625][url=http://literature.rockwellautomation.com/idc/groups/literature/documents/um/enet-um001_-en-p.pdf]Раздел 3 User Manual[/url][/u:77524d1625] :)

 Да размышления были одни "почему не работает, если должно". А все делал по одной схеме: установка ОС - драйвера материнки, видео, сетевой и монитора - FT Automation Platform - RSView SE - RSLinx Enterperise. Все! Что б долго не мучаться, эксперименты проводил на виртуальной машине. Повторюсь, устанавливаеться все замечательно.. но вот проекты не создаются: "Unable to create HMI server", (кроме пробы с Windows XP SP2)

 Тахометры до 15000 об/мин имеются: [u:2eea4c28b0] [url=http://www.ab.com/catalogs/c114/7enc/704041.pdf]845PY[/url][/u:2eea4c28b0] [u:2eea4c28b0] [url=http://www.ab.com/catalogs/c114/7enc/704648.pdf]845T[/url][/u:2eea4c28b0] Для ввода сигнала тахометра можно использовать модуль ControlLogix 1756-HSC: [u:2eea4c28b0] [url=http://literature.rockwellautomation.com/idc/groups/literature/documents/um/1756-um007_-en-p.pdf]ControlLogix 1756-HSC High Speed Counter Module User Manual[/url][/u:2eea4c28b0]. Если бы Вы могли рассказать более подробно, что это за применение и что собственно нужно, мы могли бы посоветовать что-нибудь более предметно.

 Да, для PanelView 600 (Series C) такая возможность есть. Именно это и нужно: [url=http://literature.rockwellautomation.com/idc/groups/literature/documents/in/2711-in040_-mu-p.pdf#xml=http://127.0.0.1/texis/search/pdfhi.txt?query=2711-NL5&pr=literature.rockwellautomation.com&prox=page&rorder=500&rprox=750&rdfreq=0&rwfreq=0&rlead=250&sufs=1&order=r&cq=&id=42d8670fa]2711-NL5 Backlight[/url]

 На сайте RA есть только вот что: http://literature.rockwellautomation.com/idc/groups/literature/documents/br/1747-br017_-ru-p.pdf http://literature.rockwellautomation.com/idc/groups/literature/documents/in/1746-in003_-ru-p.pdf http://literature.rockwellautomation.com/idc/groups/literature/documents/in/1746-in016_-ru-p.pdf В принципе, снабжение клиентов литературой на локальном языке входит в обязанности того или иного представительства Rockwell. Все остальные переводы. которые мелькают, сделаны различными фирмами и частными лицами по заказу клиентов. Если Вам нужно что-нибудь конкретное, то пожалуйста сообщите. Мы посмотрим, чем смогли бы Вам помочь.

 А вот: [url=http://domino.automation.rockwell.com/applications/kb/RAKB.nsf/0/d8edaba6344a5f7285256e6f00655d7d?OpenDocument&Click=]Choosing your RSTestStand package[/url] RSTestStand Lite бесплатный, его можно применчть на неограниченном количестве компьютеров. Остальные - 1 лицензия на 1 компьютер. 9310-CPSAUTOENE стоит 7867 Евро, думаю, что он Вам ни к чему. Так что, я бы взял стандартный 9310-TSTNDENE, а то бы и вовсе Lite.



Предыдущие результаты


Ещё результаты



Предыдущие результаты



Предыдущие результаты



Предыдущие результаты



Предыдущие результаты




  
RA & VDT GmbH


Облако тэгов
Rockwell ProSoft Modbus Automation ControlLogix MVI56-MCM Allen-Bradley Logix Windows FactoryTalk PanelView VersaView ControlTower GuardLogix Compact Software Studio Designer 100-E 100-D SMC-50 Energy Saver 1756-RMS-SC Spectrum Encompass Level Ethernet Redundancy Stratix

Яндекс цитирования

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.155 секунды