 | |
Предыдущие результаты
Хороший вопрос :) Сейчас попробую привести несколько общих соображений и рекомендаций.
Основное правило планирования вычислительной мощности мультизадачных проектов реального времени звучит так: „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?
Успехов! :)
|
Пожскажите, где можно найти информацию по програмированию 1756-MVI для работы в протоколе Modbus. Если возможно, то поделитесь опытом применения. Может кто-то писал драйвера для 1756-MVI.
|
IIS установлен и настроен, работает и показывает страничку Rockwell.
[quote:53ca9b2212]Message:
RSLinx Enterprise runtime service started successfully.[/quote:53ca9b2212]
Это запись из FT Diagnostic Viewer сразу, через секунду после сообщения [quote:53ca9b2212]Message:
No license was found for RSLinx Enterprise runtime service on 143-[/quote:53ca9b2212]
т.е. лицензия не найдена, но служба запущена.
RSLinx Classic в поставке на было. Вобщем, создается впечатление, что был прислан какой-то слишком уж урезанный пакет RSView SE (и к тому же версии 3.20, хотя уже есть 4.0).
|
[quote:cf2dcb8acf]When to install Microsoft Internet Information Server
You do not need to install Microsoft® Internet Information Server if you are creating RSView® Supervisory Edition™ stand-alone applications only.
You must install Microsoft Internet Information Server on the same computer as any RSView SE Server™ that is used in a distributed application.[/quote:cf2dcb8acf]
Это цитата из руководства по установке. Мне нужно для пробы создать хотя бы одно локальное приложение, пусть даже с 1 экраном и 1 сервером. Соответственно, IIS мне не нужен (хотя я и установил его для профилактики :) )
А вот что пишет FT Diagnostic Viewer.
[quote:cf2dcb8acf]Message:
No license was found for RSLinx Enterprise runtime service on 143-[/quote:cf2dcb8acf]
Вобщем, загадка.
|
А вот:
[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.
|
9310-TSTNDENE RSTeststand
9310-CPSAUTOENE RSTeststand Enterprise
а чем эти две версии отличаются? и как там с лицензиями? по числу копьютеров или нет ограничений на них?
|
Купить? Очень просто, можете заказать у нас.
9310-TSTNDENE стоит 2762 Евро.
Обращайтесь в любое наше представительство :)
|
Инсталлировали ли Вы продукты в полном соответствии с документацией по инсталляции VIEWSE-IN003E-EN-P Installation Guide?
Установлен ли IIS? Работает? Он должен быть установлен и запушен [u:e1f6b71825]до[/u:e1f6b71825] инсталляции RSViewSE.
FactoryTalk сконфигурировали?
Попробуйте вот что:
1. Деинсталлировать RSviewSE
2. Установить IIS из списка компонентов Windows
3. Установить RSViewSE заново.
Попробуйте проверить, есть ли этот сервер. Для этого в интернет-экспорере попробуйте набрать http://<Computer_Name_of_HMI_PC>/RSViewSE/ Должна появиться страница с RockwellSoftware.
Посмотрите, что пишется в логи Windows в момент, когда Вы появлятся это сообщение.
Посмотрите FactoryTalk Diagnostics.
И вот это почитайте:
[url=http://domino.automation.rockwell.com/applications%5Ckb%5CRAKB.nsf/0/91A82CFF0C995A7C85256DB3005C9482?OpenDocument]P59642703 - Domain account keeps getting locked and can't load an HMI server[/url]
[url=http://domino.automation.rockwell.com/applications%5Ckb%5CRAKB.nsf/0/C37CE6AF881CE35785256F87005C15A5?OpenDocument]P106442374 - Error Message: "Unable to create HMI Server.[/url]
Вообще, по поводу демо-режима в документации написано следующее:
[quote:e1f6b71825]Without activation, RSView runs in demo mode, allowing a maximum of five HMI servers per distributed application and two hours of use on a local RSView SE Client™. When in demo mode, each HMI server can contain only five graphic displays.[/quote:e1f6b71825]
|
Кто-нибудь работал с сабжем? интересует насколько полноможно имитировать с целью внедрения в учебный процесс..
|
Поздравляю! :)
По Вашим вопросам:
[quote:e5998db75e]1. Описание инструкций функциональной логики на русском языке.
2. Написание задач типа Event на русском языке. [/quote:e5998db75e]
Есть на английском. На русском будет только если кто-то переведёт :)
[quote:e5998db75e]3. Описание создания рутин типа Sequential Function Chart. [/quote:e5998db75e]
http://www.theautomationbookstore.com/idc/groups/literature/documents/pm/1756-pm001_-en-p.pdf
(Chapter 4)
и
http://literature.rockwellautomation.com/idc/groups/literature/documents/pm/1756-pm003_-en-e.pdf
[quote:e5998db75e]
4. Защита контроллера и содержащейся в нем программы от несанкционированного доступа(пароль например).
[/quote:e5998db75e]
Читайте в этом документе
http://www.theautomationbookstore.com/idc/groups/literature/documents/pm/1756-pm001_-en-p.pdf
раздел [u:e5998db75e]18 - Secure a Project[/u:e5998db75e]:
Нужно будет активировать опцию защиты так как это описано там на стр. 18-5.
[quote:e5998db75e]
5. Возможность и способы написания протокола связи контроллера с приборами др. фирм по RS-232 (допустим протокол другой фирмы для этого устройства прост и известен).[/quote:e5998db75e]
Есть несколько возможностей связать контроллер с приборами.
1. Использовать встроенный порт RS-232 и ASCII-инструкции типа AWD, ARL и т.п. Это если протокол обмена в ASCII.
2. Использовать модуль
[u:e5998db75e][url=http://www.prosoft-technology.com/content/view/full/2933]MVI56-BAS[/url][/u:e5998db75e]
или
[u:e5998db75e][url=http://www.prosoft-technology.com/content/view/full/2927]MVI56-GSC[/url][/u:e5998db75e]
[u:e5998db75e][url=http://www.prosoft-technology.com/content/view/full/5628]или другой подходящий[/url][/u:e5998db75e]
|
Предыдущие результаты
Ещё результаты |
|
| |
|