Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 07.01.2012, 11:23  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

9.2. Исследуем особенности графики моделей переключателей в ISIS. Создаем графическую модель переключателя на 8 положений.
В качестве «мальчика для битья» в данном случае я избрал обычный однополюсный переключатель на два положения, именуемый в библиотеке ISISSwitches & Relays =› Switchesкак SW-SPDT. Втаскиваем указанный переключатель в пустой проект и применяем к нему опцию Decompose (Рис. 9-2-1).
Теперь заглянем в селектор символов, нажав в левом тулбаре кнопку с символом S, и обнаружим в селекторе два символа: SPDT_0 и SPDT_1. Эти символы, входящие в модель, появились там после Decompose переключателя. Я их разместил справа от разобранного переключателя на рисунке. Кроме того, я у выводов переключателя подписал их скрытые имена, хотя конкретное наименование в данном случае не носит обязательного характера.
Подведем итог предпринятым нами действиям. Графическое изображение переключателя содержит:
· непосредственно его изображение в одном из положений;
· выводы (PINS) имена которых могут быть любыми (в данном случае они стандартные для импортных: COM– общий, NC– нормально замкнутый, NO– нормально разомкнутый);
· уже знакомый нам маркер ORIGIN, по которому позиционируется компонент;
· разобранные в предыдущем параграфе активные маркеры INCREMENT и DECREMENT, которыми обеспечивается управление положением переключателя.
Поскольку переключатель на два положения, он имеет в своем составе два графических символа, отображающие два его положения. Имена их тоже могут быть другими, главное чтобы они были правильно прописаны на первой вкладке Make Device для данного компонента (Рис. 9-2-2).
Пока ничего нового я для вас не открыл, все это мы уже неоднократно проделывали в рамках FAQ по Протеусу. А теперь, руководствуясь нашими исследованиями, попробуем создать свою активную графику для переключателя, например, на 8 положений. В библиотеках ISISесть переключатели до 6 положений и обычно этого достаточно. Но, иногда этого бывает мало, да и выводы у него расположены не очень удачно. Поскольку я не привык делать пустяшную, никому не нужную работу мы выполним переключатель с более привычным для нас изображением и расположением выводов. Впоследствии его можно будет использовать в своих проектах, скажем, для подбора компонентов при симуляции, не останавливая таковую. Итак, приступим…
Для начала нарисуем полное графическое изображение нашего переключателя в режиме 2D Graphics Line Mode (кнопка с косой линией в левом тулбаре), поместим на него маркер ORIGIN и маркеры INCREMENT/DECREMENT.
На рисунке 9-2-3 слева размещена сырая заготовка переключателя на 8 положений. Я включил подсветку имен выводов в их свойствах, чтобы показать вам их и слегка отодвинул выводы от модели, чтобы надписи не пересекались с графикой. В качестве выводов использованы короткие SHORTпины из селектора при включенном режиме Device Pins Mode (кнопка с изображением операционника) левого панели ISIS. Перед созданием компонента мы уберем флажок Draw Name в свойствах выводов (Pins), чтобы не загромождать компонент излишней информацией. Кроме того, на рисунке слева расположены пассивные компоненты: резисторы, конденсаторы, индуктивности. Это тоже сделано не случайно. Я поставил в их свойствах флажок Hidden для Component Reference и максимально приблизил их друг к другу, но при этом так, чтобы видны были номиналы. Так я подобрал нужный мне шаг выводов переключателя по вертикали. Ну, уместно будет еще заметить, что при этом у меня к тому-же и снят флажок Show hidden text через меню Template =› Set Design Default.
В середине рисунка 9-2-3 расположено уже готовое для создания компонента графическое изображение нашего переключателя. Здесь, как я и заметил выше, имена выводов выключены, и они сдвинуты на свое законное место. Именно к этому изображению мы применим Make Device, но прежде необходимо подготовить графические символы, которые будут отображать различные положения нашего переключателя. Для создания символов выводы и маркеры INCREMENT/DECREMENTне нужны. Процедура Make Symbol просто вывесит предупреждение на их присутствие и откажется работать, поэтому я сделал еще одну копию графики (на рисунке справа) без этих элементов. Напомню, что маркер ORIGIN должен остаться на месте, поскольку по нему позиционируется изображение символа.
Ну что, пора создать графические символы нашего переключателя. Для этого выделяем правый исходник для символов (Рис. 9-2-3) и размножаем его через кнопку Block Copy верхнего меню нужное количество раз в свободном поле нашего проекта. Всего нам надо 8 символов (по числу положений переключателя), значит, после выделения и нажатия Block Copy щелкаем по левой кнопке «хвостатой» 8 раз, каждый раз смещая ее на свободное место. После этого смещаем горизонтальную черту замыкателя в каждом изображении на нужное место (Рис. 9-2-4).
Теперь приступаем непосредственно к созданию символов. Я не стану мудрствовать с названием и назову их просто SW8, а далее через нижнее подчеркивание нужный индекс. Вот тут и проявится предусмотрительно выбранное мной название выводов переключателя. Вспомните, верхний – первое положение – 0, нижний – восьмое положение – 7. Индексы символов у меня будут совпадать с именами соответствующих выводов. Это, конечно, не обязательное условие, но ориентироваться при таком варианте удобнее. Поехали… Выделяем первое изображение, клацаем правой лапой мыши и выбираем MakeSymbol(Рис. 9-2-5).
В строке Symbol Name вводим нужное нам имя и индекс SW8_0, оставляем флажок Graphic, а вот библиотеку я сменил на USERSYM, чтобы не засорять системную. Все, давим ОК. И так 8 раз, каждый раз меняя индекс. Не забывайте каждый раз после ОК нажимать верхнюю кнопку со стрелкой в левой панели инструментов, чтобы курсор мыши сменился с карандаша на нее, иначе вы не сможете выделить очередное изображение. Закончив эти действия, мы можем увидеть в селекторе символов (нажатая кнопка Sв левом тулбаре) все наши созданные символы.
Теперь можно создавать и сам компонент из того изображения, что на рисунке 9-2-3 в середине. Выделяем его полностью со всеми маркерами и … Make Device. На первой вкладке прописывем имя нашего компонента Device Name в библиотеке ISIS, префикс Reference Prefix, с которым он будет нумероваться в наших проектах, и обязательно заполняем Active Component Properties (Рис. 9-2-6). Там для Symbol Name Stemуказываем имя созданных нами символов, а в графе No of States их количество, учитывая символ с нулевым индексом. Все остальные вкладки пока «пролетаем», нажимая Next. На последней вкладке нам необходимо выбрать категорию и подкатегорию для нашего компонента и, по желанию, заполнить его описание Device Description. Сохраняем его ОК в библиотеке, допустим, в той же USRDVC. Все!
Ну вот, скажет кто-то, опять ничего нового. Все это мы уже неоднократно читали. Согласен, но поскольку все чаще на форуме появляются индивидуумы, которым «в лом» читать предыдущие xxxстраниц материала, мне приходится как попугаю повторять заученные фразы. Они не желают считать себя начинающими, они уже «виртуозы», раз соблаговолили установить эту программу на компьютер. Что-то не по-нашему – это глюк, что-то отсутствует – срочно выложите. Выкладываю, что могу в силу своих возможностей. Ну, ладно, это так – лирика, вернемся в тему.
Так вот, новое все же есть. Втащим наш свежеиспеченный переключатель из селектора в поле проекта и попробуем понажимать круглые кнопки INCREMENT/DECREMENT, даже не запуская симуляцию. Предвижу банальное: «Вау!». Переключатель работает! Но! Не спешите делать скоропалительных выводов. Работает активная графика, а если запустить симуляцию, то мы получим угрожающее No model specified for S1 в логе. Так и должно быть, ведь модель «внутренностей» переключателямы еще не создали. Этим мы займемся в следующем параграфе.
Ну а пока, тем, кто любит читать с конца, напомню, что максимальное количество символов, ну и соответственно положений переключателя, которое можно создать равно 32. Так что переключатель на 33 положения создать не получится.

Рисунки 9-2-1... 9-2-7
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 9-2-1.gif
Просмотров: 506
Размер:	14.3 Кб
ID:	30125   Нажмите на изображение для увеличения
Название: PIC 9-2-2.gif
Просмотров: 497
Размер:	21.6 Кб
ID:	30126   Нажмите на изображение для увеличения
Название: PIC 9-2-3.gif
Просмотров: 606
Размер:	20.1 Кб
ID:	30127  

Нажмите на изображение для увеличения
Название: PIC 9-2-4.gif
Просмотров: 512
Размер:	15.6 Кб
ID:	30128   Нажмите на изображение для увеличения
Название: PIC 9-2-5.gif
Просмотров: 511
Размер:	24.6 Кб
ID:	30129   Нажмите на изображение для увеличения
Название: PIC 9-2-6.gif
Просмотров: 489
Размер:	19.1 Кб
ID:	30130  

Нажмите на изображение для увеличения
Название: PIC 9-2-7.gif
Просмотров: 452
Размер:	22.4 Кб
ID:	30131  
Вложения:
Тип файла: rar 9_2.rar (10.8 Кб, 909 просмотров)
Реклама:

Последний раз редактировалось Halex07; 07.01.2012 в 11:28.
Halex07 вне форума  
Эти 17 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
aleksa-yar (23.01.2012), artman66 (13.01.2012), bi_max (10.01.2012), bozhko (07.01.2012), danilych2 (11.06.2014), grbizly (14.01.2012), haruta (07.01.2012), kittec (07.01.2012), kot-69 (07.01.2012), malyshevsergey (11.01.2012), MihailoMihalych (22.01.2023), nva11 (28.02.2012), otest (14.01.2012), saft (16.03.2016), Traan (16.09.2013), v4575820 (03.04.2012), Санёк1719 (01.09.2021)
Непрочитано 07.01.2012, 11:31  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

9.3. Создаем MDF-начинку для переключателя на 8 положений.
Для того, чтобы создать Schematic модель нашего восьмипозиционного переключателя нам придется еще раз вернуться к нашему «мальчику для битья» – SW-SPDT и нанести ему последний нокаутирующий хук, а точнее извлечь его MDF и по нему восстановить исходную схему дочернего листа модели. Мы уже не раз такое проделывали, поэтому заглядываем в свойства SW-SPDT в режиме Edit all properties as text и обнаруживаем строку MODFILE=SPDT. Нам осталось в папке MODELS найти файл LML-библиотеки, содержащий текст, а это ACTIVE.LML. Копируем его в какую-нибудь временную папку, туда же GETMDF.EXE и с ее помощью извлекаем из библиотеки все MDF, в том числе и нужный нам SPDT.MDF. Ох, опять я попугаем работаю… Все это мы уже проходили.
Полностью файл MDF есть в папке вложения SPDT_MDF, там же и проект с восстановленной по нему структурой переключателя. Ниже только список компонентов из этого файла:
Код:
*PARTLIST,2
SW1,RTSWITCH,RTSWITCH,PRIMITIVE=PASSIVE,R(0)=‹ROFF›,R(1)=‹RON›,STATE=‹STATE›,TSWITCH=‹TSWITCH›
SW2,RTSWITCH,RTSWITCH,PRIMITIVE=PASSIVE,R(0)=‹RON›,R(1)=‹ROFF›,STATE=‹STATE›,TSWITCH=‹TSWITCH›
Список не блещет разнообразием и содержит всего два примитива типа RTSWITCH, что расшифровывается как Real Time Switch или в нашем литературном варианте – переключатель в режиме реального времени. Данный примитив находится в библиотеке Modelling Primitives=›Real Time (Actuators) и является единственным для создания всех активных аналоговых переключающих элементов (переключателей, контактов реле и т.п.). Поскольку мы с ним еще не знакомы, остановимся подробнее. Примитив двухвыводный (Рис. 9-3-1) левый вывод имеет имя 1, правый имя 2 при внесении в список цепей (Netlist). При нажатии кнопкиHelp в свойствах мы автоматом попадаем в нужный нам раздел помощи ProSPICEPrimitives.
Теперь поговорим о параметрах примитива описанных и не описанных. В Help описаны всего два параметра:
· R(‹N›) – сопротивление резистора в зависимости от номера N состояния STATE. Применительно к окну Edit Component с рисунка 9-3-1 это Off ResistanceR(0)=100M – сопротивление ключа в выключенном состоянии 100 МегОм и On ResistanceR(1)=100m – сопротивление ключа во включенном состоянии 100 миллиОм. Здесь их всего два, но в действительности может быть и больше – R(2), R(3) и т.д. Таким образом, можно реализовать, например, переменный резистор. Однако, опять следует помнить, что STATE– это фактически номер символа в графическом изображении, а их для этого случая может быть всего 32 (от 0 до 31). Следовательно и резистор у нас получится не совсем плавным, а 32-х ступенчатым.
· TSWITCH – время переключения. Применительно к окну с рисунка это Switching Time – TSWITCH=1m, т.е. 1 миллисекунда по умолчанию.
Ну и теперь, включив галочку Edit all properties as text,можем увидеть то, что «скрыто от наших глаз», а именно STATE=‹STATE›. Мы уже знаем, что в угловых скобках указывается параметр, который задается извне. Так оно есть и в этом случае. НашеSTATE (состояние) прочно связано с тем состоянием, которое задается для графической модели в данный момент. Именно поэтому, если вы просто поставите в проект примитив RTSWITCH в поле проекта, запустите и потом остановите симуляцию – в логе появится желтое предупреждение – ParameterSTATEnot defined in STATE of SW1. ISIS нас предупреждает, что STATEне имеет конкретного (числового) значения для параметра STATEв компонентеSW1 (наш RTSWITCH единственный на листе и автоматом получил такое обозначение (ComponentReference). А получить он его может или из скрипта *DEFINE, находящегося на этом же листе, или из модели с родительского листа, т.к. RTSWITCH обычно используется для создания моделей и располагается в подсхеме на дочернем листе.
Ну, вот теперь пришел черед восстановленной схемы дочернего листа переключателя SW-SPDT (Рис. 9-3-2).
Подсхема проста «до неприличности», да и чему тут быть сложному, верхняя ветка с SW1 реализует NC контакт переключателя, а нижняя с SW2 – контакт NO. Единственное, на что я здесь хочу обратить ваше внимание, R(0) и R(1) для верхней и нижней веток строго противоположны по значению. Как раз так получается, что для состояния STATE=0 (символ с верхним положением движка переключателя) через SW1 замкнута цепь между терминалами COM-NC, а для состояния STATE=1 (символ с нижним положением движка) – через SW2 замкнута цепь COM-NO, а SW1 разомкнут. Ну и конечно, здесь слева присутствует скрипт *DEFINE, определяющий конкретные значения переменных в угловых скобках по умолчанию.
Пора на основе изложенного материала реализовать наш переключатель на 8 положений. Вынимаем его из закромов, входим в свойства и ставим флажок Attach hierarchy module. На дочернем листе составляем подсхему из примитивов RTSWITCH и терминалов DEFAULT (Рис. 9-3-3).
На что здесь следует обратить внимание.
Во-первых, чтобы не напрягать свои драгоценные руки и голову лишней работой проще рисовать следующим образом. Ставим в проект один RTSWITCH, входим в его свойства как текст и там прописываем все так, как прописано для SW1 на рисунке 9-3-3. Я умышленно убрал фигурные скобки по краям, чтобы сделать параметры видимыми на картинке, но можно этого и не делать, тогда подсхема или джига, как ее обозвали в VSM HELP сами производители, будет выглядеть компактнее. Теперь присоединяем к одному из выводов терминал DEFAULT пока без имени. Выделяем получившийся кусок схемы и через кнопку BlockCopy размножаем до 8-ми частей, а после дорисовываем недостающие связи к терминалу COM.
Во-вторых, имена терминалам присваиваем из выпадающего списка, чтобы не ошибиться. Если все в графической модели было сделано правильно, то в этом списке будут только те имена, которые мы присвоили выводам переключателя, т.е. COM и цифры от 0 до 7. Если там что-то отсутствует, или наоборот примешалось лишнее – что-то не так в графической модели, ищите ошибку. Соответственно в свойствах работающего с терминалом примитива SW нам придется вручную поправить две строчки. Для нулевого состояния R(0) всех SW, кроме первого поставить сопротивление ROFF, а для состояния по номеру совпадающего с номером терминала - RON.
В-третьих, помещаем на поле дочернего листа через кнопку TextScriptModeлевого тулбара текстовый скрипт следующего содержания:
Код:
*DEFINE
TSWITCH=1m
ROFF=100M
RON=0.1
Этим скриптом мы устанавливаем значения параметров по умолчанию для теста нашей джиги. Нет ничего страшного, что они впоследствии войдут в MDF, там будут иметь преимущество назначения из свойств модели с родительского листа. Но, без такого скрипта мы не сможем проверить нашу модель до создания файла MDF, потому что ISIS будет ругаться на отсутствие заданных значений.
Теперь можно уйти на родительский лист и навесить что-нибудь эдакое на наш переключатель для проверки его работоспособности. Я не стал мудрить и повесил обычные светодиоды, причем даже без резисторов – все равно в симуляторе «не задымят». Результат переключения во второе положение представлен на рисунке 9-3-4. Рекомендую проверить все возможные варианты, чтоб потом не гадать – почему в готовой модели что-то не работает. На этом подготовительные работы заканчиваются и пора создавать MDF-файл нашей модели.
Мы снова идем на дочерний лист переключателя и оттуда нажимаем в верхнем меню Tools =› ModelCompiler…. Я и здесь не стал мудрить и оставил файлу имя SW_8, а расширение MDFкомпилятор приделает сам. Если необходимо, чтобы модель была доступна в любом проекте, путь к файлу не меняем, т.е. сохраняем MDF-файл в папке MODELS, которую компилятор откроет по умолчанию.
Ну вот, почти все. Нам осталось еще раз запустить для нашего переключателя MakeDeviceи на третьей вкладке добавить необходимые параметры и прописать файл модели. Все параметры будут точно такими же, как у любого из переключателей, например, того же SPDT. На рисунках 9-3-5 … 9-3-9 отражен весь процесс. Свойства MODFILE и STATE присутствуют в выпадающем списке, остальные через New=›Blank Item набираем вручную. Не забудьте, что RON, ROFF и TSWITCH - дробные и могут принимать только положительные значения, т.к. это сопротивление и время. Поэтому задаем им Float, Positive, Non-Zero.
Ну, вот и закончена модель переключателя на 8 положений. В папке вложенияSW_8_Child представлен проект с дочерним листом, с которого создавался MDF. В папке SW_8_MDF представлен готовый переключатель, там же есть и готовый файл MDF. Кому лень делать его самостоятельно, но хочется иметь в библиотеке ISIS, могут просто прогнать MakeDeviceдля переключателя из последнего проекта до конца, ничего не меняя, и перенести SW_8.MDF из этой же папки в папку MODELS установленного Протеуса.
Рисунки 9-3-1... 9-3-9
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 9-3-1.gif
Просмотров: 404
Размер:	31.1 Кб
ID:	30388   Нажмите на изображение для увеличения
Название: PIC 9-3-2.gif
Просмотров: 413
Размер:	6.9 Кб
ID:	30389   Нажмите на изображение для увеличения
Название: PIC 9-3-3.gif
Просмотров: 518
Размер:	27.8 Кб
ID:	30390  

Нажмите на изображение для увеличения
Название: PIC 9-3-4.gif
Просмотров: 383
Размер:	9.9 Кб
ID:	30391   Нажмите на изображение для увеличения
Название: PIC 9-3-5.gif
Просмотров: 456
Размер:	22.3 Кб
ID:	30392   Нажмите на изображение для увеличения
Название: PIC 9-3-6.gif
Просмотров: 421
Размер:	20.9 Кб
ID:	30393  

Нажмите на изображение для увеличения
Название: PIC 9-3-7.gif
Просмотров: 358
Размер:	22.1 Кб
ID:	30394   Нажмите на изображение для увеличения
Название: PIC 9-3-8.gif
Просмотров: 361
Размер:	22.3 Кб
ID:	30395   Нажмите на изображение для увеличения
Название: PIC 9-3-9.gif
Просмотров: 350
Размер:	22.5 Кб
ID:	30396  

Вложения:
Тип файла: rar 9_3.rar (24.9 Кб, 873 просмотров)

Последний раз редактировалось Halex07; 14.01.2012 в 09:21.
Halex07 вне форума  
Эти 15 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
120147 (11.01.2012), 47petr (17.02.2014), aleksa-yar (23.01.2012), artman66 (13.01.2012), bozhko (08.05.2012), danilych2 (11.06.2014), grbizly (14.01.2012), kittec (12.01.2012), kot-69 (12.01.2012), malyshevsergey (13.01.2012), MihailoMihalych (22.01.2023), nva11 (28.02.2012), otest (14.01.2012), Traan (16.09.2013), v4575820 (03.04.2012)
Непрочитано 12.01.2012, 22:24  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

9.4.Несколько слов о моделях переменных резисторов в ISIS. Реинкарнация активной схематичной модели потенциометра.
Если заглянуть в библиотеку Resistors =› Variable, то среди большого списка переменных резисторов фирмы Bourns, представленных моделями с PCB, т.е. с футпринтами для печатного монтажа, можно встретить только одну модель, помеченную как ACTIVE. Это потенциометр POT-HG, имеющий VSM DLL Model и расположенный в самом низу указанной подкатегории компонентов. Именно им мы и пользуемся сейчас в своих проектах, если нужно применить переменник с изменяемым в процессе симуляции сопротивлением. Особенно останавливаться на нем не буду, поскольку свойства этого компонента говорят сами за себя (Рис. 9-4-1).
Мы можем выбрать одну из трех характеристик Law Type изменения сопротивления движка модели: линейную, логарифмическую или анти-логарифмическую. Кроме того, в ниспадающем списке Advaced Properties можно задать минимальное сопротив ление между движком и крайним выводом и время переключения (Switching Time). Вот, собственно, и все, что доступно в этой модели для изменения. Аббревиатура HG– High Granulate на конце названия модели, говорит сама за себя, сопротивление меняется с шагом всего 1% при щелчке мышью по одному из актюаторов: вверх или вниз (Рис. 9-4-2). На каждые 5 или 10 процентов происходит и визуальное изменение положения движка резистора на экране. Для большинства применений при моделировании этой модели более чем достаточно.
Однако, пользователи, которые давно пользуется Протеусом, помнят, что в библиотеке фигурировали еще две активных модели POT-LIN (линейный) и POT-LOG– логарифмический потенциометры. Они были достаточно грубыми, полная регулировка осуществлялась всего за 10 шагов, но ведь были… и работали.
Открою вам маленький секрет Лабцентра – никуда они не делись, живут и здравствуют и даже «дают потомство» в виде тех же переменников фирмы BOURNS. Далее все экстперименты я буду проводить с моделью, которая числится в библиотеке под скромным названием POT, и имеет Schematic Model. Желающие могут проделать те же действия с любым переменным резистором BOURNS, т.к. они абсолютно идентичны, только имеют каждый свой PCB.
Итак, втаскиваем в поле проекта POTи … нахально запускаем для него Make Device. Смотрим на первую вкладку (Рис. 9-4-3). Вот так номер! Оказалось модель содержит в себе графические символы, и ни много, ни мало – целых 11 штук.
Значит, если как следует «вдарить по ней молотком» (Decompose), мы получим их в селекторе символов, если перейдем в соответствующий режим в левом тулбаре. Проделаем эту операцию…. Так оно и есть! Я вытащил все эти символы в поле проекта и разместил их на рисунке 9-4-4 для всеобщего обозрения. Среднему положению движка соответствует символ POT_5. Поскольку всего символов 11, то и параметр STATE старой модели мог принимать такое количество значений, т.е. модель потенциометра имела по пять шагов вниз/вверх от среднего положения. Грубовато, конечно, но во многих случаях вполне достаточно.
Продолжаем добывать «подарки из мешка Деда Мороза». А пройдем-ка мы для модели POT до третьей вкладки Make Device и посмотрим, что нас ждет там. Дошли и увидели, что модель имеет полный набор параметров, типичный для активной схематичной модели, только вот MODFILE прописан как-то необычно (Рис. 9-4-5).
Здесь я хочу остановиться подробней, потому что с такой записью мы еще не сталкивались. Да собственно почти весь сыр-бор с потенциометром я затеял в основном из-за нее. Обратите внимание, что для MODFILE выбрано описание Law (порядок, характеристика). Именно с таким названием появляется в свойствах POT строка с ниспадающим списком для выбора типа характеристики потенциометра. Принять она может только два значения Linearи Log, которым в строке Keywordsстрого сопоставлены имена файлов MDF соответственно: POT_LIN и POT_LOG. Для того, чтобы пользователь не мог в эту строку что-то вбивать самостоятельно верхний Type выбран как Keyword (Non-Editable) – ключевое слово (не редактируемое). Ну и в графе Default Keyword выбрано значение по умолчанию Linear, т.е. при добавлении в проект модели она принимает линейную характеристику и обращается к файлу POT_LIN.MDF.
Так…, – скажут скептики, – картина Репина – «приплыли». А где взять файлы MDFот старого Протеуса? Спешу Вас обрадовать, файлы тоже находятся на месте, т.е. там, где и раньше – в библиотеке ACTIVE.LML. Лабцентр настолько «лихо» печет свежие версии, что не успевает убирать тот «мусор», который накопился за годы существования программы. В доказательство я извлек эти файлы, они нам понадобятся для исследования чуть ниже, и добавил в папку POT_MDF вложения. Если открыть их в текстовом редакторе, то вверху можно обнаружить, что созданы они еще весной 1999 года.
Так что же у нас получается? Лабцентр вообще не трогал эту модель, а просто тихо «заныкал» актюаторы у модели переменного резистора? Так оно и есть на самом деле. Поэтому, все, что нам потребуется, чтобы восстановить модель POT-LIN – это добавить к той «разбомбленой» модели POT маркеры-актюаторы INCREMENT-DECREMENT, затем выделить все это, включая скрипт, с помощью мыши и прогнать процедуру Make Device от начала до конца, ничего не меняя. Хотя, нет, - имя на первой вкладке мы все же поменяем на POT-LIN. После этого можно протестировать модель на работоспособность любым удобным способом. Я это проделал в папке вложения TEST_POT_LIN в файле Test_lin.DSN.
Ну а мы далее в качестве познавательного материала на базе файла POT_LIN.MDF реконструируем подсхему дочернего листа потенциометра, чтобы узнать, как он устроен и работает. Тем более, что этот материал тесно переплетается с подсхемой переключателя, рассмотренного выше. Поехали….
PARTLIST файла POT_LIN.MDF, как и у переключателя, содержит всего два примитива типа RTSWITCH. Вот только параметров там побольше, и часть из них в процессе симуляции вычисляется по соответствующим формулам в зависимости от состояния STATE. Реинкарнированная схема представлена на рисунке 9-4-6 и в проекте вложения POT_LIN_Child.DSN папки POT_REPAIR на дочернем листе.
Итак, схема очень похожа на переключатель, только здесь средний терминал 3 – это движок потенциометра, левый терминал 1 – это нижний вывод потенциометра, а терминал 2 – верхний. В зависимости от состояния STATE, а соответственно и индицируемого в симуляции символа сопротивление левого и правого по схеме плеч вычисляется по обратно пропорциональным формулам. Так, для состояния 0 – движок резистора в самом нижнем положении, сопротивление между выводами 1 и 3 будет равно
R(0)=0,001*‹VALUE› (надеюсь, понятно, что малое mна картинке означает приставку мили), а между выводами 3 и 2 –
R(0)=0,999*‹VALUE›. Значение сопротивления VALUE мы задаем, когда добавляем потенциометр в проект. По умолчанию оно прописано 1k.

Ну, вот, собственно, и весь материал по переменным резисторам, который я хотел до вас довести. В заключение несколько полезных замечаний тем, кто будет самостоятельно что-то делать на основе этого материала.
Первое касается файла POT_LOG.MDFдля логарифмического потенциометра. Не знаю, с какого бока там затесался в свойствах RTSWITCH параметр PARENT=‹ACTUATOR›, в симуляции он как бы не мешает, но после останова в логе вылезает предупреждение о том, что он не задан. Возможно, он и жил когда то в старых версиях, но сейчас он нужен там «как рыбе зонтик», так что эту фразу можно тихо удалить из MDF.
Возможно, кому-то захочется сделать большее количество ступеней регулирования. Для этого достаточно наделать дополнительно промежуточных графических символов со смещенным движком переменного резистора. Может кому-то придется по вкусу идея с цифровым отображением сопротивления в процентах. Так как в данном случае графические символы жестко связаны с соответствующими формулами в MDF, это тоже можно сделать. Для этого придется пересобрать (DecomposeMakeSymbol) графические символы, поместив на соответствующие изображения цифровое значение в процентах.
Короче, простора для творчества непочатый край. А мы в следующем параграфе рассмотрим активные модели электромагнитных реле в ISIS.

Рисунки 9-4-1 ... 9-4-6
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 9-4-1.gif
Просмотров: 616
Размер:	21.7 Кб
ID:	30460   Нажмите на изображение для увеличения
Название: PIC 9-4-2.gif
Просмотров: 635
Размер:	9.7 Кб
ID:	30461   Нажмите на изображение для увеличения
Название: PIC 9-4-3.gif
Просмотров: 468
Размер:	18.9 Кб
ID:	30462  

Нажмите на изображение для увеличения
Название: PIC 9-4-4.gif
Просмотров: 547
Размер:	16.1 Кб
ID:	30463   Нажмите на изображение для увеличения
Название: PIC 9-4-5.gif
Просмотров: 467
Размер:	25.9 Кб
ID:	30464   Нажмите на изображение для увеличения
Название: PIC 9-4-6.gif
Просмотров: 589
Размер:	11.6 Кб
ID:	30465  

Вложения:
Тип файла: rar 9_4.rar (16.0 Кб, 889 просмотров)

Последний раз редактировалось Halex07; 14.01.2012 в 09:35.
Halex07 вне форума  
Эти 13 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (23.01.2012), alevch76 (17.01.2012), bozhko (08.05.2012), danilych2 (11.06.2014), grbizly (02.02.2012), kot-69 (14.01.2012), malyshevsergey (13.01.2012), MihailoMihalych (22.01.2023), nva11 (28.02.2012), otest (14.01.2012), Traan (16.09.2013), v4575820 (03.04.2012)
Непрочитано 14.01.2012, 09:48  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

9.5. Активные модели электромагнитных реле в Протеусе.
Раз уж мы «вляпались» в раздел Switches & Relays библиотек ISIS, есть смысл рассмотреть и другие активные модели из этого раздела, чтобы больше туда не возвращаться. В этом параграфе мы познакомимся с моделированием электромагнитных реле из подраздела Relays (Generic), а следующий параграф посвятим клавиатурам из подраздела Keypads. Приступаем…
Активных, т.е. способных менять свое состояние визуально в процессе симуляции моделей реле в Протеусе всего две. Это модели Relay с одной группой контактов на переключение и Relay2P с двумя группами контактов на переключение из уже упомянутого мною подраздела Relays (Generic). Остальные реле из этой подгруппы и из подраздела Relays (Specific), имеющие Schematic Model визуально не меняют положения контактов, хотя и имитируют их состояние в зависимости от приложенного к катушке напряжения.
Никаких особых премудростей в этих моделях нет, и этот материал я подготовил исключительно для того, чтобы обзор раздела Switches & Relays был полным. Обе модели реле в ходят в библиотеку ACTIVE.LML, а извлеченные из нее оригинальные MDF-файлы как обычно приложены в папке RELAY_MDF вложения к этому параграфу. Мы к ним еще вернемся, а пока давайте заглянем в свойства модели RELAY и рассмотрим, какие из них на что влияют (Рис. 9-5-1). Параметров совсем немного:
Component Value – в этой графе указано рабочее напряжение реле, определяющее его поведение. Если не указаны отдельно, т.е. оставлены по умолчаниюDefaultпараметры Activate Voltage (VON - напряжение срабатывания) и Drop Out Voltage (VOFF - напряжение отпускания), то они вычисляются от указанного в этой графе напряжения в соответствии с заданными в разделе *PROPERTIES файла MDF формулами. Там задано срабатывание VON=0.8*‹VALUE› (для 12Vэто будет 9,6V) , отпускание - VOFF=0.5*‹VALUE› (для 12V оно равно 6V). Для схематичных моделей конкретных типов реле, где в графе Component Value указан их тип, этот параметр вынесен в другую строку и определен как Nominal Coil Voltage.
Coil Resistance – сопротивление обмотки реле постоянному току. По умолчанию 240 Ом.
Два из параметров раскрывающегося списка Advanced Properties я уже отметил ранее и там остался еще один – Contact Resistance. Mы с ним уже знакомы по переключателям, это сопротивление замкнутых контактов, которое по умолчанию равно 0,1 Ом.
Для схематичных моделей реле параметр VON называется как Turn On Voltage, а параметр VOFF как Holding Voltage. Кроме того, там добавлен параметр времени срабатывания Switching Time.
Теперь применим к нашему Relay операцию Decompose. В панели символов появятся три символа с именем RELAY, которые изображены на рисунке 9-5-2.
Базовый символ RELAY_Cнеизменен и содержит изображение обмотки и короткие отрезки, облегчающие позиционирование выводов. Два символа различных положений контактов реле содержат изображение контактов и замыкающей черты в разных положениях. Если применить к модели Make Device, то мы на первой вкладке увидим, что именно эти два изменяемых символа и прописаны в области Active Component Properties – количество 2. Я не стал здесь акцентировать внимание на положении маркера ORIGIN, но надеюсь, после многократных упражнений все уже уяснили, что это тоже важно и вы об этом не забываете. Вот собственно и все особенности графики, у реле с двумя группами контактов символы отличаются только количеством контактов. Перейдем к анализу файла MDF, точнее восстановлению «джиги» по нему. Файл содержит следующий список компонентов:


*PARTLIST,6
AVS1,AVS,"ABS(V(A,B))",PRIMITIVE=ANALOGUE
R1,RESISTOR,‹RCOIL›,PRIMITIVE=ANALOG
S1,VSWITCH,VSWITCH,PRIMITIVE=ANALOGUE,ROFF=‹ROFF›, RON=‹RCONTACT›,
VH=(‹VON›-‹VOFF›)/2,VT=(‹VON›+‹VOFF›)/2
S2,VSWITCH,VSWITCH,PRIMITIVE=ANALOGUE,ROFF=‹RCONTA CT›,RON=‹ROFF›,
VH=(‹VON›-‹VOFF›)/2,VT=(‹VON›+‹VOFF›)/2
S3,VSWITCH,VSWITCH,PRIMITIVE=ANALOGUE,ROFF=1M,RON= 1,VH=(‹VON›-‹VOFF›)/2,VT=(‹VON›+‹VOFF›)/2
VP1,RTVPROBE,ACTIVE_VPROBE,LOAD=1k,MAX=1.0,PRIMITI VE=ANALOG

Восстановим по имеющемуся ниже списку цепей (*NETLIST) исходную схему (Рис. 9-5-3).
Рассмотрим, как работает данная подсхема, поскольку здесь есть некоторые нюансы. Терминалы C1 и C2 соответствуют выводам обмотки реле. Резистор R1 с номиналом RCOIL имитирует сопротивление обмотки реле постоянному току. Управляемый напряжением источник напряжения AVS1 в данном случае служит как преобразователь полярности. Обратите внимание, что формула преобразования записана как ABS(V(A,B)). Здесь ABS() означает абсолютное, т.е. модуль выражения в скобках. Надеюсь, вы помните, что для обычных электромагнитных реле полярность напряжения, приложенного к обмотке, не имеет значения. Вот этот элемент нам и обеспечивает такую независимость. Неважно как приложено напряжение к терминалам C1 и С2 (они же пины А и Bу AVS1), на его выходе «+» всегда будет аналогичный по уровню положительный потенциал относительно вывода «-». Это напряжение подается на входы трех управляемых напряжением переключателей VSWITCH. Два из них (S1 и S2) имитируют непосредственно сами контакты – нормально разомкнутый и нормально замкнутый. Поэтому для них параметры ROFF и RON записаны строго наоборот. Третий переключательS3 служит для управления активным пробником напряжения RTVPROBE. От того подано или нет на него напряжение от терминала питания +1Vзависит отображаемый в этом момент графический символ контактов RELAY_0 или RELAY_1. Вот и вся премудрость этой джиги.
Конечно, все параметры, записанные в угловых скобках, берутся по умолчанию из текстового скрипта *DEFINE, расположенного на дочернем листе модели. В файле MDFон преобразуется в раздел *PROPERTIES и представлен ниже.

*PROPERTIES,5
RCOIL=100
RCONTACT=0.1
ROFF=100M
VOFF=0.5*‹VALUE›
VON=0.8*‹VALUE›

Вот и нашлись те наши формулы напряжения срабатывания и отпускания, которые я приводил выше. Ну и конечно, мы их можем прописать на третьей вкладке Make Device для оперативного изменения при моделировании, что и сделано в конечной модели реле. Вот, вкратце, и все премудрости данной модели.
Если необходимо иметь реле с двумя группами контактов, то изменяются графические символы (добавляется еще одна группа), а в «джиге» соответственно добавляются элементы аналогичные S1 и S2, привязанные к соответствующим терминалам и наименованиям пинов полного графического изображения модели.
Хочу в заключение отметить для тех, кто будет изучать самостоятельно моделирование по старому оригиналу Proteus VSM HELP, который еще можно встретить в сети, что там разобрана более сложная модель реле с имитацией индуктивных свойств обмотки реле. Видимо присутствие индуктивности отрицательно сказывалось на быстродействии, и в более новых версиях она трансформировалась в ту, которую мы сейчас разобрали.
Надеюсь, что из этого материала понятен ответ на однажды возникавший на форуме вопрос об отдельно стоящих обмотке и контактах реле в проекте. Графическое изображение привязано к маркеру ORIGIN, поэтому такие вариации невозможны.
Во вложении Relay_Repairк данному материалу представлен проект, в котором для реле имеется восстановленная подсхема на дочернем листе.
Рисунки 9-5-1 ... 9-5-3
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 9-5-1.gif
Просмотров: 508
Размер:	25.1 Кб
ID:	30786   Нажмите на изображение для увеличения
Название: PIC 9-5-2.gif
Просмотров: 438
Размер:	11.3 Кб
ID:	30787   Нажмите на изображение для увеличения
Название: PIC 9-5-3.gif
Просмотров: 611
Размер:	12.6 Кб
ID:	30788  

Вложения:
Тип файла: rar 9_5.rar (13.4 Кб, 937 просмотров)

Последний раз редактировалось Halex07; 22.01.2012 в 18:08.
Halex07 вне форума  
Эти 13 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (23.01.2012), artman66 (29.01.2012), bozhko (08.05.2012), danilych2 (11.06.2014), grbizly (02.02.2012), kittec (22.01.2012), kot-69 (22.01.2012), malyshevsergey (23.01.2012), MihailoMihalych (22.01.2023), pav_vl (25.11.2019), Traan (16.09.2013), v4575820 (03.04.2012)
Непрочитано 22.01.2012, 18:07  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

9.6. KEYPAD.DLL - матричные клавиатуры на любой вкус.
-Не любите кошек? Да Вы просто не умеете их готовить.
(избитая шутка)

В процессе разработки электронных устройств очень часто возникает потребность в имитации работы многокнопочных матричных клавиатур. Это всевозможные пульты управления, кодовые замки, телефонные тастатуры и прочие наборы кнопок, набранных матрицей из нескольких строк и столбцов. Зачастую начинающие используют для этих целей модель активной кнопки BUTTON, набирают нужное количество кнопок, располагают их в нужном порядке и соответственно соединяют. Согласитесь, что «джентльменский набор» из 10-ти цифровых кнопок, изображенный на рисунке 9-6-1, выглядит не только «устрашающе», но еще и не очень удобен для использования, да и места на листе проекта он займет не мало. Тем не менее, аналогичную «конструкцию» часто можно встретить в проектах пользователей Протеуса.
Обычно такие матрицы подключают к цифровым дешифраторам или портам микроконтроллера для определения конкретной нажатой кнопки. И, не знаю из каких соображений, стараются обходить стороной существующие в стандартной поставке Протеуса модели клавиатур на основе программной библиотеки KEYPAD.DLL. Попробую здесь показать – как много они потеряли.
В стандартной поставке Протеуса все три модели клавиатур расположены в подразделе Keypads библиотеки Switches & Relays. Это телефонная клавиатура и две «калькуляторные», одна из которых слегка урезанная. Все они представлены на рисунке 9-6-2.
Для начала уясним – что же могут эти стандартные модели на основе KEYPAD.DLL, ну а потом попробуем сотворить нечто свое, оригинальное. А могут эти клавиатуры практически все, что и обычные кнопки BUTTON и даже несколько более того. Итак, каждая из представленных клавиатур имеет выводы строк – A, B, C, Dи выводы столбцов 1, 2, 3 и т.д. При наведении курсора на соответствующую кнопку и нажатии левой кнопки мышки происходит коммутация (замыкание) соответствующего вывода строки и столбца. Однако, в отличие от других, рассмотренных выше, переключателей это возможно только при запущенной симуляции, т.е. нажатой кнопке Play. Так, например, при нажатии кнопки 1 на левой телефонной клавиатуре рисунка 9-6-2 окажутся замкнутыми выводы A и 1, а при нажатии кнопки 8 выводы Cи 2. Естественно, данная клавиатура, как и настоящая, выполнена с не фиксируемыми в нажатом положении кнопками, т.е. при отпускании лапки мышки выводы разомкнутся. В остальном же KEYPAD-PHONE, например, полностью идентична матрице из одиночных BUTTON, которая приведена на предыдущем рисунке и даже более того имеет две дополнительных кнопки «звездочка» и «решетка». Ну а дальше, как в популярной телепередаче «Магазин на диване» - но и это еще не все…. Все клавиатуры на основе KEYPAD.DLLспособны коммутировать как цифровые, так и аналоговые сигналы, хотя в их свойствах и стоит PRIMITIVE=DIGITAL. Чтобы проверить это, я «сваял» небольшой тестовый проект Key_Signals.DSN (Рис. 9-6-3). В этом проекте к выводам строк клавиатуры подключены различные источники сигналов (терминал питания +10V, аналоговые генераторы синуса и импульсов, цифровой генератор импульсов DCLOCK), а к выводам столбцов нагрузочные резисторы и осциллограф. Нажимая различные кнопки нклавиатуры, вы можете убедиться, что она пропускает разные сигналы на выходные нагрузочные резисторы и осциллограф. Кроме того, по показаниям милиамперметров и вольтметра можно судить об их уровнях. Проект представлен в папке Research вложения.
Далее опять напрашивается «телемагазинная» фраза – но и это еще не все…. Немного о том, о чем скромно умолчали в Helpразработчики. Раз клавиатура способна пропускать аналоговые сигналы, значит можно попробовать определить и сопротивление в замкнутом состоянии. Я собрал еще одну тестовую схему в проекте Key_Resist.DSN той же папки Research. Скриншот тестовой схемы при запущенной симуляции и нажатой кнопке 1 приведен на рисунке 9-6-4.
Учитывая, что падение напряжения в точке присоединения вольтметра соответствует ровно половине питающего можно сделать вывод, что сопротивление R1 и сопротивление «замкнутых контактов» клавиши 1 равны и составляют 1 Ом. Тот же вывод напрашивается и из обычного закона Ома для участка цепи от вольтметра Rкноп.=Uвольм./Iцепи=0,5/0,5=1. Ладно, достаточно упражнений в физике средней школы, идем дальше. Раз у кнопок клавиатуры присутствует сопротивление, значит, оно задается каким-то параметром, хотя его и нет в доступных свойствах модели. Попробуем предположить, что разработчик модели не очень «запаривался» на эту тему и задал его так же, как у обычных переключателей. Для клавиатуры в схеме с рисунка 9-6-4 наберем в окне Other Properties строку RON=1m. Надеюсь, из предыдущего материала вы уже поняли, что я пытаюсь задать сопротивление контактов во включенном состоянии 0,001 Ом. Запускаем симуляцию, нажимаем кнопку 1 и, о чудо - видим, что вольтметр стал показывать ноль, т.е. мы добились желаемого. Картинку этого эффекта не привожу, можете попробовать сами в примере Key_Resist.DSN. Ну и, конечно, раз существует RON, то существует и ROFF, которое по умолчанию равно 100М и его тоже можно менять. Правда, здесь есть одно но… Создать клавиатуру на размыкание, установив RON намного больше ROFF, как в простых примитивах переключателей не получится. В программной модели KEYPAD.DLL этот трюк не работает.
Да, клавиатура вещь неплохая, – скажут теперь скептики, – но, зачем мне как минимум двенадцать клавиш в проекте, да еще и разрисованных цифрами, нам и надо всего три-четыре кнопки. Да я и не пытаюсь вас заставить использовать готовое решение. По моделям клавиатур на основе KEYPAD.DLL есть достаточно подробный HELP. В него можно попасть прямо из окна свойств клавиатуры, нажав соответствующую кнопку. Можно и вообще, не открывая ISIS, через Пуск =› Все программы =› Proteus… =› Proteus VSM Model Help зайти непосредственно в хелп Universal Keypad Model. Счастливые знатоки языка Шекспира могут прочитать хелп в оригинале, а для знатоков только «русского и матерного» в моей вольной интерпретации основные положения этого документа с соответствующими пояснениями изложены ниже.
Кстати, в преамбуле того хелпа разработчиками прямо сказано:
« In many cases it may be simpler to decompose an existing keypad and modify it to your needs…» (В большинстве случаев может быть проще DECOMPOSE имеющуюся клавиатуру и модифицировать ее под свои нужды). Я нарочно оставил без перевода одно слово – вот Вам прямое указание к действию от Лабцентра.
Прежде, чем мы начнем упражняться в дизайнерских разработках, рекомендую зайти в свойства, например, той же телефонной клавиатуры и включить флажок Edit all properties as text (Рис. 9-6-5).
В окне свойств появились двенадцать (по числу кнопок) строк в фигурных скобках (скрытые) в которых и описаны кнопки модели. Попробуем расшифровать одну строку, чтобы узнать принцип такой записи для моделей на основе KEYPAD.DLL. Итак, первая строка:
{A1=ROUND,300,-300,300,1}
Слева от знака равно стоит A1. Напомню, что у модели есть выводы строк, обозначенные именами букв латинского алфавита A, B, C…, и столбцов с именами в виде цифр 1, 2, 3… (не путайте Name и Number в свойствах выводов! Здесь именно цифра в строке Name свойств пина). Вот эта строка и описывает замкнутое состояние выводов матричной клавиатуры A и 1. Соответственно следующая строка для выводов A и 2, и т.д. до последней, назначенной для выводов Dи 3. Естественно, строк и столбцов у матричной клавиатуры может быть намного больше. При желании можно разрисовать хоть всю стандартную клавиатуру компьютера в 102 клавиши, хватило бы терпения и внимательности. Да, и сразу оговорюсь, – расположение выводов у моделей клавиатур никак не влияет на их работоспособность, просто в приведенных моделях они расположены так для наглядности. Вы можете собрать их к одной стороне или вообще загнать в шины BUS.
Теперь посмотрим на то, что справа от знака равенства, а там несколько параметров, разделенных запятыми. Сначала идет слово ROUND (круг, круглый). Ну, это и понятно – наши кнопки имеют форму круга. Допустимо использовать три формы клавиш: SQUARE – квадратная,OBLONG – прямоугольная, ROUND – круглая. Для квадратной задаются координаты центра и длина одной из сторон, для прямоугольной – центр, длина по Х, высота по Y, а для круглой – центр и диаметр. Вот как раз следующие два числа через запятые за словом ROUND, т.е. числа 300 и -300 и есть координаты по X и Yсоответственно центра нашей круглой кнопки, а далее еще одно число 300 – это ее диаметр. Обратите внимание, в других строках описания кнопок координаты меняются, а диаметр для всех наших кнопок одинаковый. Для квадратных кнопок здесь будет фигурировать тоже одно число, поскольку стороны квадрата равны. А вот если мы будем использовать прямоугольные кнопки, то придется задать два параметра, разделенные запятыми. Так сделано, например, для кнопки «+» модели большой клавиатуры калькулятора (Рис. 9-6-2). Запись там выглядит следующим образом:
{D5=OBLONG,1900,-1300,300,700}
где 300 – ширина прямоугольника, а 700 – его высота.
Но, вернемся к телефонной клавиатуре, где в конце записи после диаметра фигурирует еще одна однозначная цифра, а для некоторых строк символ. Это назначенный данной кнопке символ клавиатуры компьютера. Совсем не обязательно давить на кнопки модели мышкой, можно использовать и клавиатуру, но здесь надо быть предельно осторожным, иначе последствия непредсказуемы. Дело в том, что многие клавиши уже назначены различным функциям интерфейса Протеуса. Так, в частности, сейчас мы опять вспомним про клавишу «О», назначающую фальшивую точку отсчета координат. Кто подзабыл – рекомендую перечитать п.8.11. Клавиша задана не в сочетании с чем-то вроде CTRL или ALT, а непосредственно. А теперь представьте, что вы назначите ту же «О» в модели клавиатуры как символ соответствующий ее кнопке. Ну, и «куда крестьянину (имеется ввиду - Протеусу) податься?» Так что прежде чем задавать такое назначение кнопке модели, убедитесь, что эта клавиша по умолчанию не используется для чего-то другого. А то можно нечаянно и уничтожить все плоды труда своего, например, задав клавишу «Q», которая по умолчанию – выход из программы. Перечень уже заданных по умолчанию клавиш и их сочетаний можно посмотреть через меню System =› Set Keyboard Mapping. Там же можно переназначить клавиатуру по своему, но перед этим я все же рекомендую сделать резервную копию через кнопку Options внизу слева этого окна (Рис. 9-6-6). Если что-то не понравится, всегда легко восстановите умолчания.
Чтобы окончательно покончить с заданием свойств клавиатуры, вернемся на некоторое время к рисунку 9-6-4 и обратим внимание на первые две строчки в окне All Properties:
{PRIMITIVE=DIGITAL,DLL}
{MODDLL=KEYPAD}
Мы уже не раз создавали модели и знаем, что эти строчки соответствуют выбору на третьей вкладке Make Device через кнопку New стандартных пунктов PRIMITIVE и MODDLL, причем для первого из них достаточно задать значение DIGITALбез добавки через запятую DLL, как это сделано в моделях калькуляторных клавиатур. Кроме того, на первой вкладке Make Device необходимо установить связь сDLL, а количество символов KEYPADзадать равным нулю, ведь мы их создавать не будем (Рис. 9-6-7). Вот и все премудрости задания свойств для собственной модели клавиатуры.
Ну, а теперь займемся дизайнерской разработкой непосредственно картинки. И здесь я опять начну с небольшого «лирического отступления». Кнопки клавиатуры не меняют свой цвет, форму и пр. при их нажатии, поэтому нам не надо создавать их графические символы. По сути, сами кнопки только ограничивают область экрана относительно маркера ORIGIN всей модели, при нажатии на которую левой кнопкой мышки мы активируем замыкание прописанного ей сочетания внешних выводов модели. Это означает, что фактически кнопки ПРОЗРАЧНЫ, а то, что нарисовано в этой области просто просвечивается сквозь них. Это означает, что нам достаточно нарисовать 2D-изображение модели и выделить каким-либо образом те области, которые соответствуют прописанным в свойствах размерам и форме клавиш. Так что создание графики для модели клавиатуры – «легкая прогулка» по сравнению с другими моделями. Мало того, сейчас я подтолкну вас еще к одной идее, которую в этом случае можно реализовать, а точнее она уже реализована самими разработчиками.
Давайте заглянем в любой стандартный пример Протеуса, касающийся шахмат. Это может быть и SAMPLES\VSMforAVR\TinyChess и SAMPLES\VSMforPICMICRO\VSMforPIC18\TinyChess, – кому на какой платформе нравится. Надеюсь, уже пробовали играть, активируя фигуры на экране LCD (шахматной доске) щелчками мышки. А полюбопытствовали – как это реализовано? Ну вот вам подсказочка на рисунке 9-6-8.
Да, да!!! Загляните в селектор девайсов. Там в списке моделей есть CHESS-KEYPAD, которая, если ее отдельно вытащить в поле проекта – контур квадрата, размером по экрану LCDcвыводами матрицы 8х8. А если войти в ее свойства, то увидим теперь знакомые нам записи (Рис. 9-6-9).
Ну, что, любители «тачскринов»? Идея ясна? Чем не матричный тачскрин? Конечно, он достаточно примитивный, но все же лучше, чем совсем ничего. Нарастить количество строк и столбцов матрицы на основе этого материала теперь не проблема. А раньше, в материале про LCD-дисплеи я расказывал – как увеличить размер экрана модели LCD. Но, оставим эту идею энтузиастам, а сами займемся «изготовлением» простой модели клавиатуры. В большинстве случаев нам требуется не так уж много кнопок, а на основе KEYPAD.DLL можно сделать модель даже начиная от одной - одна строка, один столбец. Если кнопки нашей клавиатуры имеют общие выводы, то делаем их так же, как и в рассмотренном выше примере. Но, вот еще одна полезная идея – допустим, требуется клавиатура из четырех кнопок, имеющая независимые выводы у каждой. Тоже не проблема. Каждой кнопке назначаем отдельные выводы строк (А, B, C, D) и столбцов (1, 2, 3, 4). Делать пример с большой клавиатурой я, пожалуй, не буду, чтобы не загромождать материал крупными рисунками, а вот на четыре кнопки сейчас «состряпаем».
Итак, предположим, что у нас есть часы, или еще какой прибор, в котором надо увеличивать, уменьшать значение, фиксировать его и иметь возможность сбросить. Хочу четыре кнопки: «ВВЕРХ», «ВНИЗ», «ВВОД», «СБРОС». Сделаем два варианта: с одним общим выводом и отдельными.
Рисуем клавиатуру с двумя квадратными и двумя прямоугольными клавишами. Первые две будут со стрелками, а прямоугольники с надписями. Совсем не обязательно придерживаться того, что кнопки с разными латинскими символами в именах должны располагаться в разных строках, а с одинаковыми – в одной, главное – правильно их прописать в свойствах. Именно поэтому для левой заготовки клавиатуры с рисунка 9-6-10 я приму следующее расположение: A1 – стрелка вверх; A2 – стрелка вниз; A3 – ввод; A4 – сброс. Для правого варианта клавиатуры выводы просто расположены напротив соответствующих кнопок. Я оставил имена выводов включенными, но это только для наглядности. Во второй модели их можно было сделать и скрытыми, там и так ясно – что чему соответствует. Да и в первой модели они не больно нужны, а если у нас клавиатура подсоединяется шлейфом, то проще «скрыть» имена, а «засветить» номера проводов этого шлейфа и пронумеровать пины в нужном порядке.
Весь процесс «рисования» занял не более получаса. Теперь на одной из моделей клавишей «O» ставим фальшивый маркер ORIGIN поверх настоящего и начинаем «возюкать» мышкой, определяя координаты центров наших кнопок и их размеры. Не забываем, что для координаты Y надо будет оставить знак минус, она ниже фальшивой точки начала координат. Результаты фиксируем на бумажке. Более продвинутые пользователи могут сразу набрать нужные строки в текстовом редакторе, том же Блокноте, а потом перекопировать в свойства, лес надо беречь и «не фига переводить бумагу». Да, чуть не забыл еще нюанс – реально у квадратных кнопок на рисунке сторона равна 200 пикселей, но в свойствах будет стоять 300. Аналогично у прямоугольных при ширине 600 пикселей поставим 700. Так сделано в имеющихся моделях, ну и я пошел на поводу у разработчиков. Технологический запас на «кривые глаза и дрожащие с бодуна руки» по 50 пикселей с каждой стороны не помешает, особенно у нас в России. В результате для левой модели у меня получился вот такой список параметров кнопок:
A1=SQUARE,300,-300,300
A2=SQUARE,700,-300,300
A3=OBLONG,500,-700,700,300
A4=OBLONG,500,-1100,700,300
Обратите внимание, что пробелов после запятых нет. Для правой модели все будет также, но слева от знака равенства будут стоять A1, B2, С3 и D4. Эти записи, когда их немного, можно сразу добавить в третьем окне Make Device через кнопку New =› Blank Item сначала добавляем с Name - A1, установив ему в Default Value значение SQUARE,300,-300,300, затем с NameA2 и т.д.Главное не забудьте поставить им нижний параметр Type в Hidden, и в графе Visibility выбрать Hide Name & Value, чтоб они потом не светились «как голый зад при луне» серым цветом поблизости от модели и в окне свойств. Но, при большом количестве строк, это довольно нудное занятие. Поэтому я поступаю следующим образом. Сначала прогоним процедуру Make Device, назвав левую 4KEYS-COM, а правую 4KEYS-SPLIT, ну и соответственно заполним нужные графы в первой вкладке, а на третьей добавим только PRIMITIVE и MODDLL. Получили готовые модели, но без описания самих кнопок. Теперь в их свойствах, копируя из текстового файла, добавляем весь список заготовленных координат в окно OtherProperties. Гоним для каждой модели еще раз Make Device, и на третьей вкладке они уже будут присутствовать. Остается для каждой из этих только скорректировать Type в Hidden и в Visibility выбрать Hide Name & Value– а это всего четыре «притопа лапкой» мышки в двух строчках для каждой кнопки. Заготовки этих «клав» находятся в папке вложения Temlate_Keypad_4, а готовые модели с приделанными для тестирования схемами в папке Test_Keypad_4. Желающие могут просто прогнать для них еще раз Make Device и сохранить в своих библиотеках, но, поверьте на слово – создать собственную модель клавиатуры с нужными кнопками, чтобы приятно удивить «заказчика» или преподавателя, – процедура ненамного более длительная.

Рисунки 9-6-1 ... 9-6-11
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 9-6-1.gif
Просмотров: 370
Размер:	10.8 Кб
ID:	31371   Нажмите на изображение для увеличения
Название: PIC 9-6-2.gif
Просмотров: 378
Размер:	17.5 Кб
ID:	31372   Нажмите на изображение для увеличения
Название: PIC 9-6-3.gif
Просмотров: 391
Размер:	11.1 Кб
ID:	31373  

Нажмите на изображение для увеличения
Название: PIC 9-6-4.gif
Просмотров: 405
Размер:	54.8 Кб
ID:	31374   Нажмите на изображение для увеличения
Название: PIC 9-6-5.gif
Просмотров: 463
Размер:	25.1 Кб
ID:	31375   Нажмите на изображение для увеличения
Название: PIC 9-6-6.gif
Просмотров: 354
Размер:	21.5 Кб
ID:	31376  

Нажмите на изображение для увеличения
Название: PIC 9-6-7.gif
Просмотров: 360
Размер:	22.5 Кб
ID:	31377   Нажмите на изображение для увеличения
Название: PIC 9-6-8.gif
Просмотров: 462
Размер:	27.6 Кб
ID:	31378   Нажмите на изображение для увеличения
Название: PIC 9-6-9.gif
Просмотров: 369
Размер:	27.6 Кб
ID:	31379  

Нажмите на изображение для увеличения
Название: PIC 9-6-10.gif
Просмотров: 373
Размер:	22.0 Кб
ID:	31380   Нажмите на изображение для увеличения
Название: PIC 9-6-11.gif
Просмотров: 355
Размер:	23.6 Кб
ID:	31381  
Вложения:
Тип файла: rar 9_6.rar (41.5 Кб, 873 просмотров)

Последний раз редактировалось Halex07; 06.02.2012 в 07:32.
Halex07 вне форума  
Эти 17 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (06.02.2012), bozhko (08.05.2012), danilych2 (11.06.2014), grbizly (11.04.2012), JekaKey (21.12.2012), kot-69 (06.02.2012), kuksin (10.03.2012), malyshevsergey (06.02.2012), MihailoMihalych (22.01.2023), nva11 (28.02.2012), sslobodyan (10.03.2012), Traan (16.09.2013), v4575820 (03.04.2012), vik1977ck (18.03.2012), vladh (23.03.2012), VO-VAN (08.04.2012)
Непрочитано 08.04.2012, 16:31  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

Заключение к разделу 9.

Конечно, можно было бы расширить количество примеров создания активных моделей, да и некоторые мои личные приемы работы при создании моделей оказались бы полезными, но тогда мы рискуем завязнуть в этой теме надолго. Не все оказалось мне под силу рассмотреть в изложенном материале, но то, что осталось «за кадром» либо требует ухода в такие дебри программирования, причем на C++, что многим покажется «неподъемным», либо настолько тривиально, что заострять на этом ваше внимание отдельно не имеет смысла. Так, в библиотеках тех же переключателей SWITCH, я совершенно упустил из виду активные четырехбитные логические THUMBSWITCH (Рис 9-7-1).
Причем, я даже не обращал на них внимания, и сейчас даже не могу точно сказать, в какой из последних версий Протеуса они там появились. А штуковина, между тем, при отладке полезная, поэтому решил все-таки продемонстрировать их возможности. Переключатели четырех видов. Те, что сBCDв названии формируют двоично-десятичный код на выходе, а те, что с HEX– шестнадцатеричный. Кроме того, два из них (с символом С в конце) имеют по дополнительному входу. В зависимости от логического уровня на этом входе, выходной код будет представлен либо активными нулями, либо активными единицами. Выходы этих двух переключателей, которые не задействованы в основном коде, находятся в третьем (высокоимпедансном) состоянии – серые значки. Вообще, странная какая-то иногда логика в классификации девайсов у разработчиков. Вот если бы эти переключатели появились в библиотеке DebuggingTools, где им по их прямому назначению самое место, то я бы их не прозевал. Ну да ладно, будем иметь в виду, что они существуют и находятся в Switches & Relays =› Switches.
Как видите, разработчики Протеуса тоже не топчутся на месте и постепенно добавляют что-то новое, ну и совершенствуют то, что есть. Иногда и я не успеваю отследить очередные новшества. Поэтому, пока закончим с активными моделями и пойдем дальше.
Я уже совсем хотел было заняться рассмотрением обещанного EasyHDL, как вдруг «с ужасом» заметил, что большинство вопросов, появляющихся на форуме в последнее время, так или иначе связано с отсутствием навыков поиска ошибок и багов в своих разработках. Причем, некоторые из них с помощью имеющегося инструментария, отладочных функций ISIS или графиков ищутся в течение нескольких секунд, ну максимум – 3-5 минут. Вывод напрашивается сам собой, пользователь не умеет, а иногда и не знает как, применять виртуальные инструменты и графики для отладки. Тема наболевшая, актуальная, так что отложим еще на пару-тройку недель EasyHDL в долгий ящик и займемся ей.
Рисунок 9-7-1
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 9-7-1.gif
Просмотров: 415
Размер:	12.4 Кб
ID:	33561  
Halex07 вне форума  
Эти 6 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
aleksa-yar (23.04.2012), bozhko (08.05.2012), MihailoMihalych (22.01.2023), S[lver (06.09.2015), Traan (16.09.2013), v4575820 (09.04.2012)
Непрочитано 08.04.2012, 17:00  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

10 Отладка проектов в ISIS. Виртуальные инструменты и генераторы в подробностях. Анализ с помощью графиков. Управление симуляцией в реальном времени, анализ поведения схем на основе встроенной диагностики.

«Этим полукреслом мастер Гамбс начинает новую партию мебели».
И.Ильф, А.Петров «Двенадцать стульев»

Многое из того, что войдет в этот раздел, уже было мной частично рассмотрено в предыдущих частях в прямом или слегка завуалированном виде. Возможно, будут некоторые повторы в изложении материала, но это продиктовано стремлением собрать в единый раздел наиболее полную информацию по приемам отладки в ISIS. Здесь будет представлен материал как на базе встроенного в программу HELP, так и моего личного опыта использования ISIS. Я постараюсь снабдить каждый раздел максимально подробными примерами. Чтобы обезопасить вас от часто повторяющихся ошибок, наряду с правильными примерами Good_examples во вложениях будут присутствовать и примеры, вызывающие проблемы. Последние будут собраны в папки Bad_examples. Надеюсь, что для вас не составит труда выучить два английских слова: good – хороший и bad – плохой. Я же по прежнему буду следовать однажды принятому для себя правилу – не называть папки и файлы по-русски и не использовать в их названиях пробелов и спецсимволов, исключая общепринятый еще со времен DOS символ подчеркивания.

10.1.Виртуальный инструментарий. Приборы для аналоговых исследований.

Я долго обходил этот вопрос стороной в надежде на то, что применение виртуальных инструментов не вызовет у пользователей ISIS непреодолимых затруднений. Вольтметры и амперметры настолько тривиальны, что «воткнуть» их в схему может даже школьник, владеющий первичными познаниями в физике или электротехнике. Осциллографом вряд ли будет пользоваться человек, который не прикасался к «живому» прибору, соответственно он должен иметь представление о предназначении ручек и кнопок, а они у виртуального прибора аналогичны реальному. Для остальных виртуальных приборов создатели Протеуса предусмотрели разделы встроенного Help, в который всегда можно заглянуть из контекстного меню правой кнопки мыши (Display Model Help или клавиши CTRL+H), если данный объект выделен или по кнопке Helpиз окна его свойств. Однако все чаще на форуме стали возникать вопросы по применению виртуальных приборов, и я решил включить соответствующий материал в FAQ. Приступим…
Все виртуальные приборы, имеющиеся в ISIS, доступны для выбора из селектора устройств при нажатии на соответствующую кнопку левого тулбара Virtual Instrumets Mode с изображением стрелочного тестера. Всего в селекторе представлено 12 приборов, и условно их можно разбить по назначению на три группы (Рис 10-1-1). Приборы для аналогового анализа – это вольтметры и амперметры переменного и постоянного тока, генератор сигналов и осциллограф. Последний, конечно, универсален и его можно применить и для цифрового анализа, но в данный момент я его отнесу именно к этой группе. Приборы для цифрового анализа – это: универсальный счетчик-таймер (он же частотомер), логический анализатор и генератор последовательностей импульсов. Приборы для анализа специализированных протоколов – это виртуальный терминал последовательного порта, отладчик протокола SPI и отладчик протокола I2C. Именно в таком порядке по группам мы их и рассмотрим.
Начнем с группы аналоговых приборов и для начала с самых простых – вольтметров и амперметров. Как я уже упоминал, подключение данных приборов к участкам схемы не вызывает особых сложностей. Как и обычные реальные приборы, вольтметры подключаются параллельно участку исследуемой цепи, а амперметры – последовательно в цепь. Ну, о том, что DC в названии означает Direct Current (постоянный ток), а AC Amplitude Current (переменный ток), это тоже многие знают, но напомнить не лишне. Теперь заглянем в свойства одного из приборов постоянного тока, например, вольтметра постоянного напряжения DC-VOLTMETER (Рис. 10-1-2).
Как видим, в свойствах имеется раскрывающийся список Display Range, в котором можно выбрать диапазон отображаемых прибором величин: Volts – вольты, Millivolts – милливольты, Microvolts – микровольты. Максимально отображаемое дисплеем число – 999, при превышении загорается надпись MAX. Десятичная точка позиционируется автоматически. Ниже расположено окно Load Resistance. Это входное сопротивление прибора, которым он нагружает исследуемый нами участок цепи. По умолчанию оно задано равным 100 мегом, однако окно доступно для редактирования, и вы можете задать там свое значение. Ну и еще можно отметить, что заранее включен флажок Exclude from PCB Layout, а значит «случайно забытый» в проекте прибор не вызовет конфликта при передаче схемы в ARES, т.к. будет исключен из списка цепей.
Все отличие амперметра от вольтметра в отсутствии окна Load Resistance, потому что он включается в цепь последовательно и не должен обладать собственным сопротивлением, чтобы не «подсаживать» протекающий в цепи ток.
Для вольтметров и амперметров переменного напряжения в окне свойств присутствует еще одна величина – Time Constant, равная по умолчанию 100m(миллисекунд). Это время, в течение которого производится вычисление среднеквадратичного значения измеряемой величины. Оно также доступно для изменения пользователем. Напомню поклонникам имитации промышленной сети ~220В, что амплитудное значение сетевого напряжения около 310В, а период составляет 20 миллисекунд. Таким образом, для имитации сети нам нужен синусоидальный генератор с амплитудой около 310В, а подключенный к нему вольтметр будет показывать нужные нам 220 и вычислять среднее значение за 5 периодов, если Time Constant оставлено по умолчанию(Рис. 10-1-3).
Ну и еще одно маленькое замечание – в отличие от реальных тестеров виртуальные не имеют ограничения частотного диапазона, т.е. вы можете померять ACвольтметром переменное напряжение и 5 и 50 кГц, результат будет адекватен. Единственное, что вас остановит в этом, – предел возможностей вашего компьютера. Почему то многие забывают про то, что в реальном времени ISISдаже на достаточно мощном компьютере способен обработать синусоидальный сигнал с частотой всего несколько килогерц. Я уже приводил выдержку из HELPв п. 3.1 этого FAQ. Видимо многие считают, что это их не касается, ведь там про PentiumIII600МГц – это же древняя рухлядь, а у нас супер-пупер Corei7, четыре ядра и тактовая под 3400. Ну и что? Даже грубая арифметика, довольно утрированная дает нам следующее. Там речь шла от 2кГц синуса, у нас тактовая в 5,6 раза выше – 2х5,6=11,2 кГц. Допустим, хотя реально это и не так, что вычисления равномерно раскинуты на 4 ядра и увеличим еще в 4 раза – получим 44,8 кГц синуса, которые способна обработать программа в реальном времени при стопроцентной загрузке компьютера. И вот на форуме появляется вопрос – почему-то осциллограф в Протеусе глючит. Открываем, выложенный проект, а в нем на входе каскада на составном транзисторе, да еще с трансформаторным выходом синусоидальный генератор 500 (!!!) кГц. Я включил этот опус XXX.DSN в папку Bad_examples к этому параграфу. Все, что подвергнуто в нем изменению – добавлены мои комментарии и график. Желающие могут «протестировать» свой компьютер на «вшивость», но не советую – результат расстроит. Ну вот, в ходе этого лирического отступления мы и подобрались к следующему виртуальному прибору. Итак, осциллограф.
Во всех седьмых версиях Протеуса он имеет 4 канала, хотя в старых версиях имел только 2. Возможно, по этой причине его так и не оснастили встроенным файлом помощи. Модель OSCILLOSCOPE, которую мы добавляем в проект, имеет 4 входа обозначенные латинскими буквами A, B, C, D. Цветовая гамма лучей (каналов), принятая по умолчанию: A – желтый, B– синий, C– пурпурный, D– зеленый. Цвета можно менять в настройках прибора, как в режиме паузы, так и непосредственно при симуляции проекта. Для этого кликаем правой лапкой мышки в любом месте окна Digital Oscilloscope и выбираем в открывшемся меню Setup. В результате попадаем в окно цветовых настроек (Рис. 10-1-4).
Тут все интуитивно понятно. Для изменения цвета соответствующего луча достаточно кликнуть мышкой в нужный квадратик и выбрать цвет из раскрывшейся палитры цветов. Два флажка перевода в черно-белый режим (Black and White) и центровки изображения экрана (Center on Zoom) относятся к печати осциллограммы. При этом в черно-белой распечатке трассы лучей будут воспроизведены одним цветом, но разными типами линий (пунктирной, штрих-пунктирной и т.п.).
Еще один нюанс, иногда ставящий в тупик начинающих. Если Вы случайно или намеренно закрыли окно осциллографа в режиме симуляции, повторный вызов его возможен через верхнее меню Debug, где внизу этого меню будет соответствующая опция. Это относится и к другим виртуальным инструментам, которые имеют всплывающие окна и будут рассматриваться далее.
Тем, кто часто пользовался импортными осциллографами, следующий материал может быть не интересен, остальным поясню назначение ручек и кнопок осциллографа. Панель управления условно разделена на 6 частей и максимально напоминает реальный прибор. Слева две панели управления запуском и частотой горизонтальной развертки. Они общие для всех четырех каналов. Итак, по порядку.
Панель Trigger (Рис. 10-1-5).
· Ручка Level (уровень) позволяет сдвигать по вертикали (т.е. напряжению) уровень запуска канала горизонтальной развертки. При вращении ее вверх/вниз зажатой левой лапкой мышки, на сигнале, выбранном для синхронизации переключателем Source , появляется серая горизонтальная линия уровня запуска, которая по умолчанию находится на нулевом уровне напряжения для этого сигнала.
· Переключатель Source (источник) – выбор того канала, по которому устанавливается уровень запуска прибора.
· Переключатель AC/DC – определяет, присутствует ли в сигнале уровня запуска постоянная составляющая сигнала синхронизации. В реальном приборе режим ACэквивалентен подключению разделительного конденсатора на входе канала горизонтальной развертки.
· Переключатель фронтов уровня запуска выбирает, от какого фронта сигнала, выбранного Source, запускается канал горизонтальной развертки.
· Переключатель Auto/One-Shot (автоматический/однократный) определяет режим развертки. В автоматическом режиме (по умолчанию) развертка воспроизводится многократно с заданным периодом, в однократном – картинка прорисовывается единожды и как-бы «запоминается» на экране. Для совсем «чайников» отмечу, что для запуска луча(ей) как в Auto, так и в One-Shot необходимо обязательное появление на канале, установленном переключателем Sourceсигнала с уровнем равным или превышающим установленный ручкой Level. Иначе вы просто не дождетесь картинки на экране осциллографа.
· Фиксируемая кнопка Cursors позволяет включить режим расстановки курсоров на экране осциллографа. Курсоры расставляются в местах, выбранных перекрестием по левому клику мыши. Причем, если выбрано место на осциллограмме одного из каналов, то рядом с перекрестием появляется числовое отображение времени и уровня для данного сигнала (курсоры, которые я пометил 1 и 2 на рисунке 10-1-6). Для установки курсора 3 я выбрал просто пустое место экрана, поэтому в нем числовое отображение только времени развертки. Кликнув в режиме Cursorsправой лапкой мыши в поле экрана, можно во всплывающем меню удалить ошибочно установленный курсор – Delete Cursor (мышь должна быть предварительно наведена на него), или сразу все Clear All Cursors. Из этого же меню можно распечатать осциллограмму вместе с установленными курсорами. Именно фрагмент такой распечатки, выведенный в цвете на виртуальный PDFпринтер, я использовал в качестве рисунка 10-1-6 – оцените удобство использования.

Панель Horizontal (Рис. 10-1-6).
· Переключатель Source(источник) – выбор режима работы горизонтальной развертки. По умолчанию в левом положении – от внутреннего источника линейно нарастающего (а уж если точно говорить, то пилообразного) напряжения. Это основной режим работы, как реального, так и виртуального прибора. Период этого генератора определяется переключателем времени развертки в этой панели и количеством делений (клеток) экрана по горизонтали. Так, для нашего виртуального осциллографа количество клеток равно 20, соответственно полный период луча осциллографа при установке переключателя в положение 1msсоставит 20ms. Переключение этого Source в режим развертки от какого-либо канала, позволяет использовать специальные методы исследований. В частности, в таком режиме можно получить знаменитые фигуры Лиссажу (Рис. 10-1-7 ). Одноименный пример есть во вложении.
· Регулятор Position позволяет сдвигать осциллограмму на экране осциллографа влево и вправо. По умолчанию окно осциллографа запускается так, что вертикальная пунктирная линия, соответствующая нулевой отметке этого регулятора позиционируется по центру экрана. Соответственно метки времени для курсора слева от нее будут со знаком «минус», а справа со знаком «плюс».
· Двойной переключатель/регулятор времени развертки. Внешнее кольцо переключателя позволяет выбирать соотношение времени развертки на деление экрана (т.е. 1 клетку) дискретно в соответствии с круговой шкалой. Внутренняя ручка позволяет плавно увеличивать время/дел при вращении против часовой стрелки. Точно заданное время/дел отражается в дополнительном окошке под переключателем. Когда внутренняя ручка находится в крайнем правом положении (как на рисунке 10-1-7), цена деления совпадает с установленной по шкале дискретным переключателем.


Панель Channel A (B, С, D) (Рис. 10-1-9).
Все четыре канала почти одинаковы, поэтому рассмотрим назначение ручек и кнопок на одной паре A и B. Для каналов С и D они аналогичны.
· Регулятор Position позволяет плавно сдвигать положение луча канала по вертикали.
· Четырехпозиционный переключатель AC/DC/GND/OFF управляет режимом работы соответствующего канала. AC/DC – соответственно закрытый (только переменная составляющая) или открытый (учитывается постоянная) вход канала. В реальных осциллографах режим AC также реализуется разделительным конденсатором, отсекающим постоянную составляющую. Положение GND привязывает луч к земляному потенциалу, но не выключает его, а положение OFF полностью выключает соответствующий канал (луч).
· Кнопка Invert позволяет инвертировать (отразить) сигнал канала по вертикали, т.е. положительные значения напряжения на входе канала будут сдвигать луч вниз по экрану.
· Кнопка A+B(для другой пары С+D) позволяет перевести соответствующие пары каналов в дифференциальный режим. В совокупности с кнопками Invert это позволяет получить двухпроводные входы, о чем чуть ниже в этом материале.
· Переключатель/регулятор усиления. Он аналогичен рассмотренному выше для горизонтальной развертки, но в данном случае управляет ценой деления (клетки) в вольтах или милливольтах вертикальной развертки соответствующего канала. Также как и там, внешним кольцом выбирается V/дел или mV/дел дискретно по круговой шкале, а внутренней ручкой регулируется плавно. В дополнительном окошке под переключателем отражается текущее значение.

Ну вот, с управлением разобрались, теперь поговорим об особенностях измерений виртуальным осциллографом. Все четыре входа прибора однопроводные, но это не означает, что он не имеет физической связи с терминалом питания GND. Именно относительно него и происходит измерение уровней сигнала на этих входах, т.е. подразумевается, что второй провод каждого входа физически заземлен – об этом не следует забывать, подключая входы к схеме. Не всегда это удобно, а порой и просто неприемлемо. Типичная ошибка начинающих – прямая попытка измерения осциллографом сигналов в схеме с питанием от батареи или генератора двухполюсника не имеющих заземленного вывода (пример вложения OSC_GEN.DSN). Что при этом наблюдается видно из рисунка 10-1-10. Имеем два абсолютно одинаково настроенных генератора синусоидального сигнала амплитудой 1V, работающих на одинаковую нагрузку. Генератор V1 имеет связь с земляным терминалом, V2 – нет. Меряем осциллографом напряжение на том и другом с установкой усиления Y-входов 0,2V/дел. Для заземленного V1 имеем сигнал с удвоенной амплитудой 10 клеток, т.е. 2V, ну и соответственно амплитудный размах от 0V как и положено 1V. У генератора V2 исследуемый сигнал на экране осциллографа выглядит вдвое меньше, хотя на самом деле они заданы одинаковыми.
Аналогичная картина наблюдается и с моделью батареи питания (пример вложения OSC_BAT.DSN) BATTERY (Рис. 10-1-11). Здесь я установил все лучи по вертикали на центр экрана при отсутствии сигнала. Синий канал оставлен заземленным (GND), остальные в режиме измерения DC (входы открыты для постоянной составляющей сигнала). Усиление 2 V/дел, соответственно 12V – это 6 клеток, 6V – 3 клетки. Как видно из рисунка, у незаземленной батареи питания выводы имеют симметричный потенциал относительно терминала GND, так что любителям «пихать» в свои проекты модели батарейки есть над чем задуматься. Легко можно пойматься на неадекватных измерениях, как с помощью пробников напряжения, так и с помощью виртуальных приборов. И не надо при этом ссылаться на то, что программа работает неправильно. Это «грубая ошибка», но не разработчиков программы, а тех «использователей», которые смутно представляют то, что они пытаются моделировать. Теперь рассмотрим, как избавиться от подобных ляпсусов в своих разработках.
Первый способ «классический» для реальных осциллографов с дифференциальными входами, и те, кто пользовался по жизни таковыми приборами, о нем хорошо знают. Вот тут и пригодится возможность использования «пары» входов. Включаем, например пару A+B, а для канала B выбираем режим Invert. Каналы подключаем к соответствующим проводам исследуемого двухполюсника, все того же генератора синуса (пример вложения DIFOSC_GEN.DSN). Вуаля, получили реальную картину (Рис. 10-1-12).
Ну а теперь метод, который возможен только в «виртуальном мире». Вспомним примитивы AVCVS, да можно и просто VCVS (п.4.8. FAQ). Эти Источники Напряжения Управляемые Напряжением (ИНУН) являются идеальными гальваническими разделителями и имеют двухполюсные входы/выходы с бесконечно большим сопротивлением. Ставим такой разделитель с коэффициентом передачи 1.0 на однопроводный вход осциллографа, и один из выводов на выходе привязываем к земле. Осциллограф, как и положено, меряет на выходе сигнал относительно GND, а мы имеем двухпроводный вход, который можем подключить к любым точкам исследуемой схемы. Теперь уже не важно, имеет ли она гальваническую связь с землей. По этому поводу, чуть более сложный пример. Рассмотрим транзисторный каскад, у которого есть резистивные нагрузки, как в цепи эмиттера, так и коллектора. Исследуем форму напряжения Uэб и Uэк этого каскада при подаче на его вход сигнала от генератора импульсов с параметрами: нижний порог – 150mV, верхний – 750mV, длительность импульса 20ms, период 40ms. Генератор подключен относительно минусового полюса источника питания и не связан с землей. Вот тут и придут нам на помощь ИНУН, иначе наличие в цепи эмиттера резистора испортило бы нам всю картинку, даже при условии заземления минуса питания. Данный пример в проекте ISOl_INPUT.DSN вложения, а получившаяся картина на Рис. 10-1-13.
На этом, пожалуй, закончим рассмотрение модели виртуального осциллографа из комплекта инструментов ISIS, но в заключение этого материала я хотел бы коснуться еще пары важных моментов практического применения его в ваших проектах.
Первый из них заключается в том, что и осциллограф и другие виртуальные приборы создают дополнительную нагрузку на ЦП компьютера, ну и на видеокарту естественно, поскольку выводят показания в режиме реального времени. Ускорению симуляции проекта это никак не способствует, скорее наоборот. Особенно эта неприятность проявляется при симуляции проектов содержащих достаточно высокочастотные генераторы и совсем не обязательно только аналоговые. Чтобы не навешивать лишних килобайт во вложение, сошлюсь на стандартный пример Frequency Meter.DSN с таймером 555, расположенный в папке SAMPLES\InteractiveSimulation\CounterTimer\ Протеуса. В нем имеются виртуальные осциллограф и частотомер. Проведите простой опыт. Запустите симуляцию данного проекта и запомните или запишите нагрузку на ЦП (CPULoad), отражающуюся в трее окна ISIS. Теперь, не останавливая симуляции, просто закройте окно осциллографа, кликнув мышью по кресту в его верхнем правом углу, и зафиксируйте изменение нагрузки. Остановите симуляцию, войдите в свойства осциллографа и установите флажок Exlude from simulation. Еще раз запустите симуляцию и проверьте нагрузку ЦП. На моем, надеюсь, не совсем слабеньком нетбуке эти действия дали следующие результаты: 63% - 58% - 44%. Т.е. 19% нагрузки дает только один осциллограф – такова «плата за удобства в номере гостинницы». Если вырубить еще и частотомер, то нагрузка вообще падает до 32%, практически вдвое от первоначальной. Вот такая информация к размышлению, - ставить или не ставить. Для меня лично, она давно решена не в пользу виртуальных приборов и, если есть возможность использовать графический анализ, я пользуюсь только им.
Второй момент связан с началом прорисовки осциллограммы после запуска симуляции. Луч начнет прорисовываться на экране осциллографа, когда время симуляции перевалит за нулевую отметку времени на экране осциллографа. Расшифрую этот постулат. Напомню, что по умолчанию маркер нулевой отметки (вертикальный серый пунктир) расположен по центру экрана. Допустим, что время развертки установлено 20ms/дел, т.е. 10 клеток от левой части экрана до середины составят 200ms или 0,2 сек. Пока счетчик реального времени в трее не перевалит за эту отметку, на экране осциллографа будет пусто. Если симуляция заторможена и выполняется с «горчичником» Simulation is not running in real time due excessive CPU load, то появления осциллограммы иногда приходится ждать достаточно долго. Это уже зависит от мощности вашего компьютера.
Вот в принципе и весь материал по применению осциллографа, который мне хотелось довести до вашего сведения, а применять или нет эту модель для исследования своих проектов, предстоит решать вам самостоятельно.

Рисунки 10-1-1 ... 10-1-13
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 10-1-1.gif
Просмотров: 651
Размер:	20.7 Кб
ID:	33562   Нажмите на изображение для увеличения
Название: PIC 10-1-2.gif
Просмотров: 437
Размер:	24.2 Кб
ID:	33563   Нажмите на изображение для увеличения
Название: PIC 10-1-3.gif
Просмотров: 432
Размер:	10.6 Кб
ID:	33564  

Нажмите на изображение для увеличения
Название: PIC 10-1-4.gif
Просмотров: 607
Размер:	63.0 Кб
ID:	33565   Нажмите на изображение для увеличения
Название: PIC 10-1-5.gif
Просмотров: 448
Размер:	22.3 Кб
ID:	33566   Нажмите на изображение для увеличения
Название: PIC 10-1-6.gif
Просмотров: 401
Размер:	18.2 Кб
ID:	33567  

Нажмите на изображение для увеличения
Название: PIC 10-1-7.gif
Просмотров: 409
Размер:	18.7 Кб
ID:	33568   Нажмите на изображение для увеличения
Название: PIC 10-1-8.gif
Просмотров: 437
Размер:	90.0 Кб
ID:	33569   Нажмите на изображение для увеличения
Название: PIC 10-1-9.gif
Просмотров: 509
Размер:	44.7 Кб
ID:	33570  

Нажмите на изображение для увеличения
Название: PIC 10-1-10.gif
Просмотров: 540
Размер:	85.1 Кб
ID:	33571   Нажмите на изображение для увеличения
Название: PIC 10-1-11.gif
Просмотров: 411
Размер:	74.1 Кб
ID:	33572   Нажмите на изображение для увеличения
Название: PIC 10-1-12.gif
Просмотров: 469
Размер:	79.2 Кб
ID:	33573  

Нажмите на изображение для увеличения
Название: PIC 10-1-13.gif
Просмотров: 429
Размер:	74.6 Кб
ID:	33574  
Вложения:
Тип файла: rar 10_1.rar (64.5 Кб, 824 просмотров)

Последний раз редактировалось Halex07; 11.05.2012 в 11:59.
Halex07 вне форума  
Эти 11 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (23.04.2012), bozhko (08.05.2012), cnc10 (14.05.2012), danilych2 (11.06.2014), kittec (08.04.2012), kot-69 (08.04.2012), MihailoMihalych (22.01.2023), ticksp (29.09.2013), Traan (16.09.2013), v4575820 (09.04.2012)
Непрочитано 08.04.2012, 18:23  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

10.2. Виртуальный инструментарий. Аналоговый генератор сигналов и цифровой счетчик-таймер-частотомер.

В этом параграфе мы рассмотрим еще два прибора. Генератор сигналов SIGNAL-GENERATOR, конечно-же надо было рассматривать в предыдущем материале об аналоговых приборах, но тот материал и так получился достаточно объемным, поэтому я опишу его здесь, так что получится переходный материал от аналоговых приборов – к цифровым.
Итак, для начала закончим с аналоговыми приборами и рассмотрим SIGNAL-GENERATOR. Для этого виртуального прибора доступен файл помощи на английском языке, как всегда вызываемый или из окна Propertiesмодели генератора, или при щелчке правой лапкой мыши по модели из всплывающего меню (опция Display Model Help (Ctrl+H)). Всплывающее окно панели управления (Рис. 10-2-1) доступно только при запущенной симуляции и также как у осциллографа может выключаться кликом по перекрестию X в правом верхнем углу и повторно вызываться через меню Debug. Модель генератора сигналов – это стандартный функциональный генератор, способный выдавать на выходе сигналы пилообразной, треугольной, прямоугольной и синусоидальной формы. Весь диапазон частот генератора от 0 до 12 МГц разбит на 8 поддиапазонов, выбираемых левым переключателем Range-Frequency. Плавно в пределах поддиапазона частота подстраивается вращением ручки самого левого регулятора Centre. Точное значение частоты отображается на цифровом дисплее под этой ручкой.
Аналогично, только четырехдиапазонным переключателем Range-Amplitude и вращением ручки Level, устанавливается амплитуда выходного сигнала.
Справа на всплывающей панели управления генератора находятся две кнопки. Верхней кнопкой Waveform устанавливается форма выходного сигнала. Переключение осуществляется последовательно, а активный в данный момент сигнал подсвечивается соответствующим ярко-зеленым индикатором (на рисунке 10-2-1 – синусоидальный). Нижней кнопкой Polarity выбирается полярность выходного сигнала из двух возможных: Bi и Uni. Здесь остановимся немного подробней. Выход генератора двухпроводный – это выводы «+» и «-» справа у модели, об этом не стоит забывать. Если необходимо подавать сигнал между двумя точками вашей схемы, то используем двухпроводное подключение. Если же подразумевается выходной сигнал относительно земли, то выход «-» генератора надо соединить с GND. Именно относительно выхода «-» и переключается полярность сигнала на выходе «+». При этом в положении Uni он будет смещен в положительную область на половину установленной амплитуды. В положении Bi сигнал будет симметричный относительно уровня земли. На рисунке 10-2-2 оба генератора имеют одинаковые настройки – частота 500 Гц, амплитуда – 5 В, только у G1 установлен режим Bi, а у G2 – режим Uni.
По поводу этого рисунка и прилагаемого примера SG_Bi_Uni.DSN еще одно небольшое «лирическое отступление». Обратите внимание, что я использовал для демонстрации интерактивный график, а не просто аналоговый. Все дело в том, что SIGNAL-GENERATOR предназначен именно для интерактивного моделирования, или иначе Real-Time Simulation, и на обычном аналоговом графике сигнал от него воспроизводиться не будет. Можете сами убедиться в прилагаемом примере. Для чисто графического моделирования лучше применить генераторы из закладки GENERATORS левого тулбара. Учитывайте этот момент в своих разработках. Второй важный момент – ручкой амплитуда у SIGNAL-GENERATOR выставляется удвоенная амплитуда сигнала, т.е. если поставить 5 В, то для режима Bi сигнал будет меняться от -2,5 до +2,5 вольт, у генератора же SIN из закладки GENERATORS, например,в окошке Amplitude выставляется амплитуда полуволны, но к этому мы еще вернемся позже при рассмотрении этих генераторов.
Ну, и в заключение материала по SIGNAL-GENERATOR остановимся еще на возможности модуляции выходного сигнала. Для этой цели служат два входа модели: AM (амплитудная модуляция) и FM (частотная модуляция). На эти входы,, имеющие бесконечный импеданс, можно подавать модулирующий сигнал с размахом до +/-12 В, например, от еще одного сигнал-генератора или от генераторов из закладки GENERATORS левого тулбара. При этом усиление модулирующего сигнала (глубина модуляции) устанавливается соответствующим переключателем Frequence-Range(для FM) или Amplitude-Range (для АМ).
Сначала рассмотрим пример частотной модуляции приведенный в конце HELP по SIGNAL-GENERATOR. Приведу дословный перевод: «Если частота генератора установлена 1 kHz и верньер частоты установлен в положение 2.0, то уровень модулирующего напряжения 2V даст на выходе генератора сигнал частотой 4 kHz». Проверяем на практике (рис. 10-2-3). Пример SG_FM.DSN находится во вложении. В данном случае я использовал для подачи модулирующего напряжения генератор DC из левого тулбара GENERATORS. Если подать на вход FM сигнал-генератора линейно изменяющийся сигнал (пила или треугольник) с амплитудой от -2 до +2 вольт получим на выходе частотно-модулированный сигнал с несущей 2 кГц и девиацией +/- 2 кГц. Немного подробнее о том, как это вычисляется. Положение ручки переключателя Range-Frequency является как бы множителем для управляющего напряжения на входе FM. В нашем случае она находится в положении 1, таким образом, при управляющем напряжении +2 В имеем сдвиг частоты вверх относительно установленной регулятором Centre (2K) – 2+2x1=4 кГц. Если подать на вход FM напряжение -2 В частота будет равна 2+(-2x1)=0 кГц. Можете проверить это самостоятельно в прилагаемом примере.
Аналогично и для амплитудной модуляции, но в качестве умножающего коэффициента используется положение ручки Range-Amplitude. Пример SG_AM.DSN амплитудной модуляции находится во вложении, а получившийся для частоты 38кГц и модулирующего сигнала 1кГц с амплитудой 1В интерактивный график на рисунке (рис. 10-2-4).
На этом, пожалуй, можно закончить материал по использованию модели виртуального сигнал-генератора. Однако, предчувствуя ретивость наших отечественных пользователей, позволю еще одно маленькое замечание. Возможность частотной модуляции у некоторых может вызвать желание использовать модель в качестве свип-генератора, например, для снятия АЧХ. Тем более в графиках имеется специально «заточенный» под это FREQUENCY. Вынужден заранее вас расстроить… Сигнал-генератор можно использовать только в интерактивной симуляции и добавить его сигнал в качестве задающего в график нельзя. Вспомните, что мне пришлось задействовать выше интерактивный график для демонстрации сигнала на выходе генератора. В другие графики его сигнал добавить не получится, а виртуального интерактивного анализатора спектра в Протеусе нет, во всяком случае, пока он в списке приборов не значится.
А теперь переходим к одному из популярных, по крайней мере, у меня, приборов – универсальному таймеру-счетчику и цифровому частотомеру в одном лице и озаглавленном в списке цифровых приборов как COUNTER-TIMER. И сразу-же одно маленькое замечание. Чуть выше я уже использовал его, для индикации частоты на выходе генератора сигналов. Вернемся еще раз к рисунку 10-2-3. Обратите внимание на параметры амплитуды выходного сигнала, заданного на выходе генератора (я подсветил их желтым цветом). На выходе установлен униполярный сигнал с амплитудой 6 вольт. Это сделано неспроста. Дело в том, что входы таймера-счетчика воспринимают цифровые уровни сигналов и об этом стоит всегда помнить, когда вы используете данный девайс. Именно поэтому для индикации частоты на выходе сигнал-генератора я перевел последний в режим однополярного сигнала и синусоида на выходе меняется в диапазоне от 0 до 6 вольт, т.е. гарантировано захватывает «цифровой» диапазон 0-5 вольт. Ну а как быть, если мы хотим проконтролировать аналоговый двухполярный сигнал, например, ту же сеть 220В? Тут уместны те же приемы, что мы использовали с осциллографом. Берем все тот же примитив AVCVS и используем его в качестве понижающего, а попутно и уровне-сдвигающего «трансформатора». В сто первый раз напомню, что амплитуда сетевого напряжения составляет около 310 вольт, соответственно удвоенная от вершины отрицательного полупериода до вершины положительного вдвое больше, т.е. ~620 вольт. Вот ее-то нам и надо подогнать под «цифровые параметры». Сделать это достаточно просто – делим на 100 и прибавляем 3 вольта. Таким образом, формула, которую мы впишем в параметрах AVCVS примет вид: (V(A,B)/100)+3. На рисунке 10-2-5 и в прилагаемом проекте TC_220V.DSN приведена тестовая схема, а также аналоговый график, на котором видно как наш AVCVS преобразует сигнал по приведенной формуле. Левая вертикальная шкала напряжений относится к входному сигналу (зеленая трасса), а правая к выходному (желтая трасса). Правая часть схемы заземлена только потому, что я использовал аналоговый график и зонд напряжения U1 в этой части схемы, так что можно было этого и не делать.
Но, что-то я «с места в карьер» взялся описывать приемы применения COUNTER-TIMER, а сам этот виртуальный прибор и его параметры не описал. Исправим положение. Итак, универсальный таймер-счетчик и частотомер предназначен для измерения интервалов времени, частоты сигналов, а также для подсчета количества импульсов.
В режиме таймера измерения временных интервалов доступны два диапазона: Time (secs) – секунды с разрешением 1 микросекунда (по умолчанию) и Time (hms) – часы, минуты, секунды с разрешением 1 миллисекунда.
В режиме частотомера Frequency прибор измеряет частоту цифровых импульсов на счетном входе CLKс разрешением 1 Гц.
В режиме счетчика Counter импульсов прибор подсчитывает количество импульсов, поступающих на вход CLK с пределом счета 99 999 999.
В отличие от других виртуальных приборов, таймер-счетчик подобен «двуликому Янусу», т.е. он самодостаточен уже просто помещенный в окно проекта, поскольку имеет активный цифровой индикатор, но также имеет и всплывающую панель управления с дублирующим увеличенным индикатором и кнопками управления. Всплывающая панель управления (Рис 10-2-7) по умолчанию не активна и может быть вызвана как традиционным способом через меню Debug опцией VSM Counter Timer, так и просто кликом левой кнопки мышки по графическому изображению модели прибора. Напомню, что при этом симуляция должна быть запущена кнопкой Play.
Установка режима работы прибора Operating Mode, а также выбор активного уровня управляющего сигнала на входе разрешения счета CE (Count Enable Polarity) и активного фронта сигнала сброса на входе RST (Reset Edge Polarity) доступны предустановкой из окна Edit Properties (Рис. 10-2-6).
Те же действия можно проделать, не останавливая симуляции соответствующими кнопками всплывающей панели управления (Рис. 10-2-7). Активные режимы в этой панели подсвечиваются ярко-зелеными круглыми индикаторами. Из этой панели доступен дополнительно ручной сброс, который можно произвести в любой момент кнопкой MANUAL RESET.
Еще один интересный момент, отраженный на рисунке 10-2-7. Поскольку по умолчанию таймер-счетчик находится в режиме TIME (secs), то будучи просто помещенным в поле проекта он при запуске симуляции будет дублировать время от начала запуска симуляции кнопкой Play, которое отражается в трее окна программы. Полезная опция для тех, у кого, как и у меня, зрение изрядно подпорчено долговременными посиделками за компьютером. Ну, и еще несколько примеров и приемов использования данного девайса в различных режимах.
Режимы таймера временных интервалов: TIME (secs) и TIME (hms). В этих режимах активны цифровые входы CE и RST, вход CLK не используется. В зависимости от предустановленного в параметре Count Enable Polarity сигнала или путем выбора кнопкой GATE POLARITY отсчет начинается при появлении на входе CE либо логической единицы, либо логического нуля. Если вход CE висит в воздухе или находится в неопределенном состоянии (серый квадратик), то также происходит отсчет времени. Сброс таймера в нулевое состояние возможен как по переднему, так и по заднему фронту сигнала на входе RST, а также вручную кнопкой MANUAL RESET. Характерный пример использования COUNTER-TIMER в этом режиме имеется в стандартном примере Timer Mode.DSNв папке SAMPLES\InteractiveSimulation\CounterTimer. Как он работает ясно из рисунка 10-2-8.
В той же папке стандартных примеров Протеуса есть пример Frequency Meter.DSN применения таймера-счетчика в качестве частотомера (режим FREQUENCY). В этом режиме наоборот неиспользуемыми являются входы СE и RST, а исследуемый сигнал подается на счетный вход CLK. Никаких особенностей он не имеет, и останавливаться на нем подробно я не буду. Хотя, возможно кому-то покажется странным, что чуть выше я рекомендовал приводить уровни входного сигнала для частотомера к стандартным логическим, а здесь на вход подаются импульсы амплитудой около 12 вольт. Но, тем не менее, и в данном случае «статус кво» не нарушен, ведь понятие цифрового сигнала подразумевает импульсы нижний порог которых находится в положительной области близко к нулю или равен ему, а верхний должен превышать область неопределенного цифрового сигнала, т.е. быть чуть выше +3,5 В, что в данном случае соблюдается. Для проверки данного утверждения во вложении имеется тестовый проект FMETER_LEVEL.DSN. В нем импульсный сигнал с генератора импульсов 100 Гц 5 В подается одновременно на вход частотомера и осциллографа через делитель напряжения на потенциометре (Рис. 10-2-9). Чувствительность осциллографа установлена 0,5 В на 1 клетку. Как только мы приподнимаем уровень импульсного сигнала чуть больше 7 клеток (это и есть 3,5 В), частотомер начинает работать.
Еще одна особенность частотомера, о которой не следует забывать – значение частоты на индикаторе появится только тогда, когда время симуляции, отображаемое в трее окна ISIS, превысит 1 секунду. Если ваш проект не слишком нагружен аналоговыми компонентами и симуляция выполняется практически в реальном времени, то этот фактор не сказывается, но если она заторможена, и загрузка ЦП близка к 100%, показаний на табло частотомера иногда приходится ждать достаточно долго. Можете попробовать самостоятельно изменить частоту альтернатора (генератора синуса) в примере TC_220V.DSN, с которого я начал материал по таймеру-счетчику, например, с 50Hz на 50kHz и проверить в режиме симуляции – сколько придется ждать показаний частоты.
Ну и последнее, на чем хочу остановиться при рассмотрении режима частотомера, это на измерении частоты слабых сигналов. Один из способов приведения сигнала к логическим уровням я уже показал в начале материала по таймеру-счетчику. Правда, там мы не усиливали, а наоборот ослабляли сигнал, но ничего не стоит операцию деления заменить операцией умножения. В хелпе по таймеру-счетчику разработчики рекомендуют несколько иной способ – применить одноразрядный примитив ADC из библиотеки Modelling Primitives =› Mixed Mode. Что можно сказать по этому поводу – «на вкус и цвет… джентльменов нет». И в этом случае не обойдется без лишних «телодвижений», и, во избежание лишних вопросов, я их здесь укажу. Во-первых, вам придется привязать терминалы питания V+ и V- примитива ADC к терминалам питания проекта. Если этого не сделать, то при запуске симуляции ISIS «грязно ругнется» соответствующими красными сообщениями об ошибках. Привязать можно или через меню Design =› Configure Power Rails, или в окне свойств так, как показано на рисунке 10-2-10. Соответствующий проект Freq_ADC.DSN находится во вложении.
Кроме привязки Hidden Pins необходимо также выставить такие уровни для переключения ADC, чтобы они находились внутри амплитуды входного сигнала и были максимально приближены к его верхнему и нижнему уровням. Так, для синусоидального сигнала амплитудой 0,25Vя выставил нижний порог переключения ADC -0.2V, верхний порог 0.2V, а гистерезисы переключения обнулил. Что из этого получилось видно на рисунке 10-2-11. Там же на графиках виден и еще один характерный момент, на котором я хочу заострить ваше внимание. Сигнал на выходе примитива ADC чисто цифровой. Частотомер, который является «цифровым» прибором его видит, виден он и на цифровой трассе смешанного (нижний график на рисунке) или цифрового графика. НО!!! Если попробовать завести его на вход осциллографа, или поместить в аналоговый график (верхний на рисунке), мы его не увидим. Я специально подключил в проекте Freq_ADC.DSN на выход ADC осциллограф, можете запустить симуляцию и убедиться в этом самостоятельно, а на будущее старайтесь заранее определить, какой тип сигнала вы исследуете, чтобы не попасть как Винни-Пух в гостях у Кролика «в безвыходное положение».
В завершение материала нам осталось рассмотреть режим счетчика Count универсального таймера-счетчика. В этом режиме подсчитываемые импульсы подаются на вход CLK. В зависимости от предустановок логическая единица (или ноль) на входе CE разрешает подсчет импульсов. Также в зависимости от предустановок положительным или отрицательным перепадом (фронтом) логического сигнала на входе RST счетчик сбрасывается в 0. Сброс можно произвести и кнопкой MANUAL RESET из всплывающей панели управления. Пример подсчета импульсов от цифрового генератора CLOCK 1 Гц приведен в COUNTER.DSN вложения и на рисунке 10-2-12. Других особенностей этот режим не имеет, и я не вижу смысла останавливаться на нем более подробно. Надеюсь, применение в своих проектах десятичному счетчику с индикацией, входом разрешения счета и входом сброса вы найдете сами.
На этом мы закончим рассмотрение данного девайса, тем более, что у меня фактически получился полный вольный перевод на наш великий и могучий прилагаемого к нему хелпа, да еще и с дополнительными подробностями и примерами. Все примеры по сигнал-генератору находятся в папке SG вложения к этому материалу, а примеры с таймером-счетчиком соответственно в папке TC.
Рисунки 10-2-1...10-2-12
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 10-2-1.gif
Просмотров: 434
Размер:	29.4 Кб
ID:	34163   Нажмите на изображение для увеличения
Название: PIC 10-2-2.gif
Просмотров: 353
Размер:	19.6 Кб
ID:	34164   Нажмите на изображение для увеличения
Название: PIC 10-2-3.gif
Просмотров: 360
Размер:	25.9 Кб
ID:	34165  

Нажмите на изображение для увеличения
Название: PIC 10-2-4.gif
Просмотров: 377
Размер:	20.8 Кб
ID:	34166   Нажмите на изображение для увеличения
Название: PIC 10-2-5.gif
Просмотров: 372
Размер:	34.5 Кб
ID:	34167   Нажмите на изображение для увеличения
Название: PIC 10-2-6.gif
Просмотров: 340
Размер:	18.3 Кб
ID:	34168  

Нажмите на изображение для увеличения
Название: PIC 10-2-7.gif
Просмотров: 344
Размер:	20.6 Кб
ID:	34169   Нажмите на изображение для увеличения
Название: PIC 10-2-8.gif
Просмотров: 356
Размер:	35.8 Кб
ID:	34170   Нажмите на изображение для увеличения
Название: PIC 10-2-9.gif
Просмотров: 368
Размер:	88.2 Кб
ID:	34171  

Нажмите на изображение для увеличения
Название: PIC 10-2-10.gif
Просмотров: 316
Размер:	29.4 Кб
ID:	34172   Нажмите на изображение для увеличения
Название: PIC 10-2-11.gif
Просмотров: 319
Размер:	21.1 Кб
ID:	34173   Нажмите на изображение для увеличения
Название: PIC 10-2-12.gif
Просмотров: 325
Размер:	24.9 Кб
ID:	34174  

Вложения:
Тип файла: rar 10_2.rar (560.7 Кб, 885 просмотров)

Последний раз редактировалось Halex07; 11.05.2012 в 12:00.
Halex07 вне форума  
Эти 15 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (28.04.2012), bozhko (08.05.2012), cnc10 (14.05.2012), Cyber_RAT (28.04.2012), danilych2 (11.06.2014), grbizly (10.05.2012), kittec (26.04.2012), kot-69 (26.04.2012), kuksin (29.04.2012), malyshevsergey (26.04.2012), MihailoMihalych (22.01.2023), skver (03.05.2012), Traan (16.09.2013)
Непрочитано 08.05.2012, 08:41  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

10.3. Виртуальный инструментарий. PATTERN GENERATOR – генератор цифровых последовательностей и Logic Analyser *– логический анализатор сигналов.

Ну, вот мы плавно переместились к знакомству с цифровыми измерительными приборами. В этом параграфе пойдет речь о двух приборах, которые имеют несколько схожий функционал, только с точностью до наоборот. Один из них вырабатывает многоразрядные цифровые сигналы, а другой позволяет их вывести на экран в виде многоразрядной осциллограммы.
Начнем с генератора цифровых последовательностей, который в меню виртуальных приборов представлен, как PATTERN GENERATOR.Слово pattern в переводе с английского означает «образец, модель, набор», но согласитесь, что как-то кривовато и непонятно звучит на русском – «генератор цифровых образцов». Поэтому, я на свой страх и риск исказил дословный перевод, дабы он звучал более благозвучно и был логически понятным. PATTERN GENERATOR имеет свой собственный файл помощи на английском языке. Материал по нему и по всем последующим приборам будет построен аналогично рассмотренному выше таймеру-счетчику, – «вольный перевод» английского хелпа в моем исполнении с некоторыми комментариями, подробностями и примерами. Приступим…
Если рассмотренный ранее сигнал-генератор мы использовали для выработки аналоговых сигналов, то PATTERN GENERATOR, имеющий даже немного похожий реал-тайм интерфейс с ручками-регуляторами и кнопками (Рис. 10-3-1), мы будем использовать для генерации цифровых многоразрядных сигналов. В принципе его можно использовать и как одноразрядный генератор цифровой последовательности, задействовав только один разряд, если кому-то такой режим потребуется.
Основные возможности генератора цифровых последовательностей:
· Возможность использования как в режиме реал-тайм симуляции, так и для анализа с помощью графиков. Это главное его отличие от аналогового «собрата» - вспомните, что тот генератор для графического анализа использовать было нельзя.
· Внутренние и внешние режимы тактирования и сброса в начало последовательности. Здесь и далее в материале по этому прибору я английское слово trigger заменил нашим сочетанием «сброс в начало» - оно более реально отражает суть этой операции в данном случае. Кстати и сами разработчики в свойствах модели используют термин reset, а в графическом интерфейсе прибора – trigger.
· Настройка тактирования и сброса вращающимися ручками в режиме реал-тайм.
· Шестнадцатеричный и десятичный режимы дисплея в графическом интерфейсе прибора.
· Непосредственный ввод значений для лучшей наглядности.
· Возможность сохранения в файле и загрузки текстовых скриптов выводимых цифровых сигналов объемом до 1024 байт.
· Ручное ограничение длительности периода последовательности.
· Пошаговый вывод, позволяющий контролировать введенные значения.
· Дисплей-подсказка, позволяющий видеть точно положение на сетке.
· Возможность внешним сигналом удержать вывод последовательности в текущем состоянии.
· Команды редактирования блоков в сетке, позволяющие ускорить процесс задания последовательности.
На правой стороне модели PATTERN GENERATOR, которую мы помещаем в поле проекта, выбрав в селекторе виртуальные инструментов, находятся восемь однопроводных выходов Q0…Q7 и восьмиразрядная выходная шина B[0..7]. Выходы отдельных разрядов и шины полностью дублируют друг друга, и вы вольны использовать те, которые в данный момент удобнее или оба выхода одновременно. По умолчанию в свойстве Output Configuration генератора включены как те, так и другие – Output to Both Pins and Bus (оба выхода – отдельные выводы и шина), но при желании в этой строчке через раскрывающееся меню кнопки с треугольником можно выбрать и что-то одно: Output to Pins Only – вывод только на отдельные выходы, или Output to Bus Only – вывод только на шину.
С левой стороны модели находятся две группы выводов внешнего управления, функционально разделенные по назначению на входы и выходы. Я опишу их назначение, а с использованием познакомимся в процессе.
Входы:
· CLKIN(Clock Input) – вход внешней тактовой частоты;
· HOLD – вход удержания текущих данных на выходах;
· TRIG – вход внешнего сброса генератора в начало цифровой последовательности;
· OE(Output Enable) – вход разрешения трансляции на выходы Qи Bтекущего значения из последовательности данных. Если вывод не подключен, или на нем лог. 1 – вывод разрешен.
Выходы:
· CLKOUT(Clock Out) – выход внешней тактовой частоты. Сигналы тактовой частоты – меандр с периодом, заданным параметром Clock Rate будут присутствовать на нем только в том случае, если для генератора выбран режим внутреннего тактирования (Clock Mode Internal) и в параметре Clock out Enabled in Internal Mode (выход тактовой разрешен в режиме внутреннего генератора) установить Yes (по умолчанию стоит No);
· CASCADE– выход для каскадирования с аналогичным генератором. С его помощью можно увеличить разрядность выходных данных с 8-ми до 16 и более, но об этом чуть позже на конкретном примере.
Немного остановимся на окне свойств модели PATTERN GENERATOR, в котором, как и у рассмотренного ранее счетчика-таймера можно произвести предустановки режима генератора, не запуская симуляции. Оно представле но на том же рисунке 10-3-1 справа. Кстати, при использовании генератора в качестве источника для графического анализа – это единственная возможность задать параметры выдаваемого сигнала. При симуляции в режиме реального времени PATTERN GENERATOR имеет всплывающее окно с панелью управления и дисплеем ввода генерируемых сигналов (Рис. 10-3-2). Окно отключается и включается, как и у ранее рассмотренных приборов. Чтобы не описывать одно и то же дважды, на рисунке 10-3-2 в скобках синим цветом указано соответствие назначения ручек и кнопок параметрам из окна Edit Properties модели генератора.
Параметры Clock Rate и Clock Mode определяют соответственно частоту и режим тактового сигнала. Максимальная частота может достигать 12 МГц.
А сейчас ВНИМАНИЕ!!! Хотя, как мне кажется, PATTERN GENERATOR и является одним из самых продуманных и совершенных виртуальных инструментов Протеуса с точки зрения графического интерфейса, но и здесь, к сожалению, не обошлось без ложки дегтя со стороны разработчиков. Причина заключается в том, что если в режиме симуляции реального времени ручку регулятора частоты Vernier установить в крайнее левое положение 0, то частота и период на микро-дисплеях панели Clock принимают значение OFF (выключено), а симулятор почти моментально впадает в неисправимую ошибку. Повторно запустить симуляцию уже не удастся до тех пор, пока PATTERN GENERATOR не будет удален из листа проекта. Никакие превентивные меры, вроде исправления частоты через окно Edit Properties, при этом не помогут – только удаление модели из окна проекта и повторная ее установка из левого тулбара. К сожалению, самостоятельно исправить модель нам не удастся, поскольку она находится в системной библиотеке, недоступной для редактирования. Придется подождать, пока на это обратят внимание разработчики.
Итак, примите к сведению, что тактовая частота Clock Rate не может быть нулевой. В режиме симуляции реального времени частота грубо выставляется переключателем тактовой частоты Clock на серой панели слева внизу, определяющим множитель, а плавно ручкой соответствующего регулятора Vernier. Между этими ручками находятся два микродисплея. На верхнем микродисплее отражается текущее значение тактовой частоты, а на нижнем - периода. Аналогично построена и панель регулировки частоты сброса в начало бледно-салатового цвета с переключателем Trigger и регулятором Vernier, поэтому отдельно я ее описывать не буду. Только в ней установка Vernier в нулевое положение не приводит к фатальным последствиям, хотя при этом частота и период принимают отрицательные значения, что тоже выглядит некорректно. Чтобы иметь доступ к панели и заранее установить требуемые значения достаточно запустить симуляцию кнопкой Pause.
Хочу отметить еще один способ точной установки, как тактовой частоты, так и частоты сброса доступный только в PATTERN GENERATOR. Если дважды кликнуть левой кнопкой мыши по ручке соответствующего переключателя или верньера, то под окном микродисплея частоты появляется всплывающее окно непосредственного ввода значения, что очень удобно для точной установки нужной частоты. К сожалению, хоть мы и будем оперировать в этом приборе больше с периодами, их таким образом ввести невозможно, поэтому каждый раз придется пересчитывать нужный временной интервал в частоту для непосредственного ввода последней.
Режим Clock Mode в окне Edit Properties может принимать следующие значения: Internal– внутренний генератор тактовой частоты, External Pos Edge – внешний по переднему фронту (0-›1) или External Neg Edge – внешний по заднему фронту (1-›0). В режиме внешнего генератора соответствующий импульсный тактовый сигнал подается на вход CLKIN. В онлайн панели генератора на рисунке 10-3-2 те же режимы выбираются последовательно нажатием кнопки CLOCK вверху слева, а отображается текущий режим ярко-зеленым светящимся индикатором. На той же панели имеется кнопка STEP, с помощью которой можно в режиме внутреннего тактового генератора, находясь в паузе симуляции (кнопка Pause активна) выдать на выходы генератора текущий сигнал, находящийся в самой правой колонке.
Параметры Reset Rate и Reset Mode в окне Edit Properties определяют частоту и режим сигнала сброса к началу цифровой последовательности. В панели управления генератора частота выставляется переключателем Trigger грубо и вращением регулятора Vernier плавно. Доступен также и непосредственный ввод при двойном щелчке левой кнопкой по одной из ручек установки частоты сброса.
Режим сброса Reset Mode может быть внутренним Internal от встроенного генератора сигнала сброса, либо внешним по переднему или заднему фронту сигнала на входеTRIG. Кроме того, здесь может использоваться асинхронный и синхронный режимы сброса. Что это означает? Здесь пора использовать конкретный пример, и он есть во вложении PG_SYNC_RESET.DSN. Предположим, что наш генератор выводит 4 байта информации: 0x01, 0x02, 0x03 и 0x04. Тактовая частота внутреннего генератора равна 1 Гц, т.е. 4 байта будут передаваться 4 секунды. Мы включим режим вывода тактовой частоты на вывод CLKOUT, т.е. в свойствах для Clock out Enabled in Internal Mode выберем Yes. Установим на вход TRIG внешний генератор, вырабатывающий импульс сброса через 3,5 сек, т.е. до окончания вывода четвертого байта. Теперь попробуем установить асинхронный и синхронный сброс в начало по переднему фронту сигнала и результаты выведем на два цифровых графика. Результат представлен на рисунке 10-3-3. Во-первых, на этих графиках хорошо видно, что в режиме внутреннего тактового генератора смена данных (я использовал зонд на шине B[0..7], но это характерно и для отдельных выводов данных) происходит по заднему спадающему фронту тактового сигнала CLKOUT. Во-вторых, на верхнем графике хорошо видно, что в асинхронном режиме данные на выходе, сигнал тактовой частоты и выходной сигнал каскадирования СASCADE перезапустились сразу же по приходу переднего фронта импульса на входеTRIG, в то время, как в синхронном сброс произошел по окончании очередного тактового импульса на входе CLKOUT. Аналогичная картина наблюдается при выборе асинхронного и синхронного сброса по заднему фронту. Графики приводятся в HELP, и я не буду здесь загромождать материал лишними рисунками, которые каждый может посмотреть самостоятельно на своем компьютере. В панели управления генератора цифровых последовательностей (Рис. 10-3-2) режим сброса в начало устанавливается двумя независимыми кнопками в панели TRIGGER слева посередине и индицируется соответствующими ярко-зелеными индикаторами.
Ну, а теперь перейдем непосредственно к тому, как задать требуемую последовательность вывода цифровых сигналов, сохранить ее и вывести на выход генератора именно требуемое количество байт. Для этой цели служит дисплей, разбитый клетками на байты (вертикальные колонки) в панели управления PATTERN GENERATOR (Рис. 10-3-2). Каждая закрашенная клетка соответствует единичному биту информации, незакрашенная – нулевому. Самый первый выводимый байт с адресом 0x00 расположен справа, а всего их может быть 1024. В самом байте (колонке) нулевой разряд расположен сверху, а старший - 7-й бит снизу. Над клетчатым полем расположена шкала, отображающая с определенным интервалом номера байтов по умолчанию в шестнадцатеричном формате. Под колонками-байтами отображается их текущее значение также по умолчанию в шестнадцатеричном формате.
Если кому-то больше по душе десятичный формат, то его можно установить по всплывающему меню правой кнопки мыши, щелкнув внутри сетки дисплея (Рис. 10-3-4). Установив флажок Decimal Display, получим десятичное отображение шкалы адресов наверху и шкалы значений внизу сетчатого дисплея. Это меню заслуживает особого внимания, поэтому ниже рассмотрим, что еще можно сделать с его помощью.
Опция Clear Pattern позволяет мгновенно очистить (сбросить в нули) весь сетчатый дисплей, т.е. все 1024 колонки.
Опции Load Pattern, Save Pattern и Save Pattern As позволяют соответственно загрузить последовательность из файла или сохранить подготовленную последовательность в файле. Файл будет иметь расширение .PTN и представляет собой обычный текстовый файл, в котором шестнадцатеричные значения выводимых байтов разделены запятыми. В каждой строчке находится по 8 байтов и всего в файле будет 128 строк со значениями и две строки в начале: первая – заголовок, начинающийся с точки с запятой, а вторая пустая. Приведу пример первых четырех строк для файла из примера с «бегущей единицей», который мы будем рассматривать чуть ниже. Хочу сразу отметить, что независимо от того, сколько байт информации мы будем выводить, файл, сохраненный опциями SavePattern и Save Pattern As, будет иметь полный объем в 1024 значения. Незадействованные байты, находящиеся за маркером-ограничителем, будут нулевыми.
Код:
 
; Saved at 21:40 on 29/04/2012.
 
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
Ну, и еще один комментарий по этому поводу. Если кому-то претит тыкать мышкой, набирая последовательность в дисплее панели PATTERN GENERATOR, то можно войти в режим паузы, сохранить «пустой», т.е. со значениями типа 0x00 файл формата .PRN, а затем открыть его в любимом текстовом редакторе и задать нужные значения уже с клавиатуры. Но, продолжим знакомство с опциями меню…
Опция Color Configuration позволяет при движении по стрелке выйти в еще одно подменю установки цветов сетчатого дисплея. Там вы можете выбрать цвета отображения для логической единицы (по умолчанию черная), для логического нуля (по умолчанию белый), а также для сетки (Grid), для фона (Background) и выделяемого блока (Tagbox). Например, на рисунке 10-3-4 я изменил цвет нулей на синий, а единичек на красный, т.е. так, как они отображаются у выводов логических элементов.
Флажок, установленный у Decimal Display или Hex Display, определяет режим отображения данных на шкалах над и под сетчатым дисплеем.
Если установить кликом мышки флажок у Tooltip Display, то при наведении курсора мыши на клетку сетки в панели дисплея PATTERN GENERATOR рядом с курсором будет отображаться дополнительное окно-подсказка. В нем будут три строки: Column Number – номер колонки в сетке дисплея, Row Number – номер строки в сетке дисплея, а также Hoz. Byte Count – номер строки и номер позиции в строке (в угловых скобках) для байта этой колонки в файле формата .PRN.
Действие опций Insert Column (вставить колонку) и Remove Column (удалить колонку) рассмотрим по рисунку 10-3-5. Для этого установим маркер ограничитель последовательности и попутно познакомимся с ним. Маркер-ограничитель ставится одиночным кликом левой лапкой мыши в нужном месте в поле шкалы номеров байтов над сеткой дисплея и выглядит как стрелка указатель вниз с вертикальной пунктирной линией ограничения в сетке (Рис. 10-3-2). Более наглядно в цвете это ограничение выглядит на «раскрашенном» дисплее (Рис. 10-3-5). На этом же рисунке показан процесс вставки и удаления колонок. Сразу же хочу пояснить, что общее количество колонок (байтов) не меняется, оно, как было 1024, так и останется. Процесс вставки/удаления затрагивает только активные (находящиеся справа от маркера-ограничителя) колонки последовательности. Именно эти колонки (байты) и будут воспроизводиться генератором на его выходах. В ходе воспроизведения в режиме реал-тайм дисплей PATTERN GENERATOR будет последовательно сдвигаться вправо и байт, находящийся в самой правой колонке в текущий момент будет выдаваться на выходы генератора. Чуть ниже мы рассмотрим это на примере, а пока давайте закончим с контекстным меню правой кнопки мыши.
Опции BlockSet (блок установить) и Block Clear (блок очистить) призваны облегчить нам редактирование. Если выбрать одну из этих опций, то можно, удерживая нажатой левую лапку мыши, в сетчатом поле дисплея выделить прямоугольный блок клеток, который соответственно либо установится в единицы, либо сбросится в нули.
Ну и последняя опция Restore Default Settings сбросит дисплей PATTERN GENERATOR в исходное состояние, т.е. черно-белое отображение сетки и шестнадцатеричный формат отображаемых чисел. Замечу, что данные, набранные в поле дисплея, при этом не сбрасываются, меняются только цвета и формат чисел. Курсор ограничения также остается на том месте, куда вы его установили.
Настал черед примера действия курсора-ограничителя, а заодно и наглядного вывода данных генератором последовательностей. Здесь мы снова вернемся к использованию внутренних генераторов тактовой частоты и сброса, и от нас потребуется некоторое напряжение ума в области арифметических действий. Тем, кто изучает FAQв процессе длительных ночных посиделок за компьютером, рекомендую принять что-нибудь бодрящее, чтобы расшевелить засыпающий мозг. Сейчас мы будем производить некие арифметические действия с частотами и периодами, и придется пошевелить извилинами. Итак, попробуем вывести на выход генератора «бегущую единицу», т.е. как бы имитируем регистр сдвига единицы от нулевого разряда до седьмого. Помещаем в поле проекта PATTERN GENERATOR и запускаем его кнопкой Pause, чтобы иметь доступ к панели генератора.Данные, которые при этом нам предстоит набрать представлены в верхней части рисунка 10-3-6 и занимают 8 колонок (байтов) в сетчатом поле дисплея.
Курсор ограничитель установим за восьмым по счету байтом. Обратите внимание, девятый байт я установил в 0xFF, но он пока находится за активной областью воспроизведения и понадобится нам чуть позже. Чтобы наглядно видеть изменения на выходах генератора в режиме реального времени установим низкую тактовую частоту 1 Гц. Проще всего это сделать непосредственным вводом, т.е. двойным кликом по одной из ручек в панели Clock и вводом точного значения с клавиатуры. Теперь нам предстоит выбрать частоту внутреннего генератора сброса для того, чтобы воспроизводились все 8 нужных байтов. Сделать это нетрудно, но придется посчитать. Период тактовой частоты составляет 1 сек (нижний микро-дисплей в панели Clock), т.е. для воспроизведения 8 байтов потребуется период 8 сек. Вспоминаем школьный курс физики, период и частота связаны формулой F=1/T. Делим единицу на 8 и получаем 0,125 Гц. Это значение устанавливаем для Trigger, можно тоже через непосредственный ввод. Только не забудьте, что в качестве десятичного разделителя в Протеусе используется точка, а не запятая. После этого запускаем симуляцию (снимаем с паузы) и смотрим, что у нас получилось. Поскольку я не могу здесь использовать кино, ограничусь приведением цифрового графика (Рис. 10-3-7), на котором кроме сигналов разрядов и шины я еще добавил для наглядности вывод тактовой частоты CLKOUTи сигнала CASCADE.
Теперь увеличим частоту сброса вдвое, а все остальное оставим на местах (Рис 10-3-8 ). Период сброса в начало при этом тоже уменьшится до 4 секунд, и генератор за этот период успевает вывести только первые 4 байта, затем цикл повторяется.
В качестве следующего этапа изучения наоборот увеличим период сигнала сброса до 10 секунд, для чего нам потребуется ввести частоту Trigger 0,1 Гц. Естественно, все остальные параметры пока не трогаем. Этот момент проиллюстрирован графиком на рисунке 10-3-9. Теперь наш генератор проходит всю цифровую последовательность до конца и на последнем байте стоит до прихода сигнала сброса.
Ну, и в завершение нашего эксперимента оставим период сброса равным 10 секундам, а маркер-ограничитель сдвинем на 1 байт влево, т.е. добавим в последовательность колонку 0xFF. Проверяем – рисунок 10-3-10. Так и есть, байт появился в нашей последовательности, а поскольку всего у нас стало 9 байтов, то при периоде тактовой частоты 1 секунда и интервале между сигналами сброса – 10 секунд на него приходятся два последних такта, т.е. он длится 2 секунды до прихода очередного сигнала сброса.
Все рассмотренные примеры находятся в файле 4xPG_1Hz.DSN вложения. Окна панелей генераторов там отключены, чтобы не загромождать ими проект в режиме симуляции. Включить окно нужного в данный момент генератора можно через верхнее меню Debug. Все доступные всплывающие окна находятся в самом низу этого меню, мы уже не раз обсуждали данный момент, и подробно останавливаться на нем я не буду.
Дополнительно замечу только, что в данных примерах я использовал асинхронные режимы, но частоты (периоды) подбирал кратными, поэтому у меня на графиках фронты четко совпадают. Если использовать для сигнала сброса частоту, которая окажется дробной по отношению к тактовой, то в асинхронном режиме последний тактовый импульс будет «подрезаться» сигналом сброса. Отдельно такой пример находится в файле PG_DROP_RESET.DSN вложения.
Немного остановимся на использовании внешнего файла цифровой последовательности, поскольку я упустил некоторые нюансы его использования, а заодно и закрепим знания примером. Во-первых, числа в файле совсем не обязательно должны быть в шестнадцатеричном формате. Можно использовать и десятичные числа и даже двоичные, формата %00000001, генератор благополучно их «скушает». Во-вторых, первые две строчки, дата создания и пустая, генерируются, когда вы создаете файл из дисплея генератора последовательностей, и могут отсутствовать, если файл создается вручную, например, сразу в блокноте Notepad. Ну и наконец, в-третьих, при создании файла вручную совсем незачем набивать именно 1024 байта, если они вам не нужны. Если, например, мне нужно выводить числа от нуля до девяти, то я их так и набью в блокноте: «0,1,2,3,4,5,6,7,8,9,». Естественно, кавычек быть не должно (они для наглядности ограничивают вводимую информацию), да и запятая в конце может отсутствовать, это не критично. Но есть одна особенность использования внешнего файла, о которой не могу не упомянуть, чтобы потом не было лишних вопросов. Если последовательность загружена из заранее созданного файла через опцию Load Pattern, то сам файл в окне Edit Properties не добавляется. Эта последовательность сохраниться после остановки симуляции в «теле» проекта, и будет воспроизводиться при последующем запуске симуляции. Но, если файл последовательности добавлен в окне Edit Properties, то при каждом запуске симуляции информация будет добавляться из него. Кроме того, файл, добавленный в окне Edit Properties, используется для графиков. Другими словами…. Допустим, у меня в Pattern Generator Script окна Edit Properties прописан файл count.PRN. Этот файл всегда при запуске реал тайм кнопками Playили Pause будет загружаться, и последовательность в дисплей Pattern Generator будет добавляться из него. Но, если я поставлю симуляцию в Pause, то могу через Load Pattern загрузить последовательность из другого файла или просто руками что-то поправить в уже загруженной и до тех пор, пока я не нажму кнопку Stop симуляции, будет работать эта скорректированная последовательность. При следующем запуске опять загрузится информация из файла count.PRN. В приложенном примере PG_file.DSN по умолчанию загружается файл с десятичной последовательностью dec_file.PRN, но в папке с этим примером есть примеры файлов в шестнадцатеричном hex_file.PTN и двоичном bin_file.PTN форматах, которые вы можете подключить самостоятельно.
Теперь рассмотрим пример внешнего управления выдачей данных из PATTERN GENERATOR (пример вложения Ext_control.DSN). В нем я задействовал все внешние входы управления (Рис. 10-3-11). На вход CLKIN подается тактовая частота 1Гц от внешнего генератора CLOCK. Логические переключатели на остальных входах обеспечивают управление генератором. На рисунке на вход удержания HOLD подана логическая единица, т.е. вывод последовательности приостановлен, а текущий байт (самый правый в дисплее панели генератора) находится на его выходах. Для наглядности я повесил на них семисегментные BCD индикаторы. Поскольку и режим сброса установлен внешним, то при достижении маркера-ограничителя генератор не возвратится к началу, а будет ждать внешнего сигнала сброса на входе TRIG. Последний выданный байт 0xF0 будет при этом присутствовать на выходах. Сброс в начало произойдет при отпускании предварительно нажатого мышкой логического переключателя на входе TRIG, т.е. по заднему фронту импульса на этом входе. Логическая единица на входе OE разрешает выдачу сигналов на выходы генератора. Если логический переключатель на этом входе установить в 0, то последовательность будет сдвигаться, но выходы по ближайшему тактовому сигналу перейдут в третье (серое) состояние. Обратите внимание, что при внешнем управлении уже не важно, что выставлено ручками Clock и Trigger внизу панели генератора. Но, при желании, можно использовать внешнее управление и частично (только сброс или только тактовая частота), тогда те ручки, для которых в левых панелях выбран режим Int(внутренний) будут активны.
Следующий пример, как я и обещал, посвящен каскадированию, т.е. наращиванию числа выводимых разрядов. В примере Cascade.DSN два генератора соединены таким образом, чтобы работать одновременно (Рис. 10-3-12).
Для этого выход CLKOUT ведущего генератора соединяется с выходом CLKIN ведомого. При этом не забудьте, что у ведущего генератора в свойствах надо разрешить выдачу тактового сигнала на этот выход, т.к. по умолчанию она отключена. Кроме того, выход CASCADE ведущего генератора соединяется с входом TRIG ведомого. Ведущий генератор может управляться как угодно и внутренними (как в примере) генераторами Clock и Trigger и внешними, а вот для ведомого генератора необходимо только внешнее управление. При этом очень важно не «напороть косяков» с фазами управляющих сигналов, иначе получим нестыковку во времени. Так, например, мы уже знаем, что в режиме внутреннего тактового генератора смена сигналов происходит по заднему фронту импульса, поэтому для ведомого я выбрал этот режим. А вот сброс ведомого пришлось поставить по переднему фронту, иначе последний сигнал на нем длился 2 такта. Чтобы проверить себя я рекомендую пользоваться цифровым графиком. В частности, для данного примера он представлен на рисунке 10-3-13. На важные моменты в нем я указал стрелками. Это переход с последнего разряда генератора 1 на нулевой разряд генератора 2 и момент сброса в начало обоих генераторов. В данном примере последовательность имеет вид бегущей единицы и хорошо видно, что смена разрядов и сброс проходят корректно.
Ну, кажется, материал по PATTERN GENERATOR я «разжевал» до такой степени, что его «проглотит» даже беззубый грудной младенец. Надеюсь и взрослые «дяди и тети» студенты им не подавятся, поскольку последнее время они обратили на этот прибор внимание, а может преподаватели их «обратили». А нам пора перейти и к следующему прибору, именуемому LOGIC ANALYSER или логический анализатор сигналов. Здесь все несколько проще, и интерфейс прибора и его подключение, поэтому я не стану так подробно его рассматривать, а остановлюсь только на наиболее важных особенностях его применения. Да и родной Helpанализатора не блещет подробностями, да в придачу содержит некоторые «атавизмы» от древних версий. Так, там до сих пор речь идет про 8 однопроводных входов, хотя на самом деле их 16. Итак, приступим…
Логический анализатор сигналов LOGIC ANALYSER (Рис. 10-3-14)предназначен для исследования многоразрядных цифровых сигналов. Принцип работы прибора основан на непрерывной записи в буферную память выборок входного сигнала с заранее предустановленным разрешением с последующим выводом ее на дисплей анализатора. Сразу же поясню, что термин «непрерывная» относится именно к выборкам (сэмплам), т.е. буфер не обновляется непрерывно в процессе реал-тайм симуляции, а заполняется после нажатия кнопки Capture (захват) и, когда он заполнен полностью (кнопка изменит цвет с розового на зеленый), производится вывод записанного в буферную память сигнала. Следующая запись будет произведена после очередного нажатия Capture. После того, как запись произведена, мы можем исследовать записанные сигналы, масштабируя и сдвигая экран дисплея, производить временные измерения с помощью курсоров, но данные в буфере будут оставаться неизменными. Я хочу особо обратить ваше внимание на эту особенность.
Возможности логического анализатора следующие:
· 16 индивидуальных входов сигналов A0A15 и 4 входных восьмиразрядных шины B0B3.
· Буферная память на 40000 выборок (сэмплов).
· Возможность установки разрешения записи от 0,5 нс до 200 мкс на одну выборку. При этом время записи (захвата) составит соответственно от 10 нс до 4 с. Обращаю ваше внимание, что здесь, как и ранее, надо учитывать время, прошедшее по таймеру в трее окна ISIS. А это значит, что 4 секунды при заторможенной симуляции могут превратиться в реальные 40 и больше, а то потом опять начнутся «страшилки про глюки Протеуса».
· Изменение масштаба экрана дисплея возможно от 1000 выборок на одну клетку, до 1-й выборки на клетку.
· Установка совпадения для захвата по логическому AND (И) для комбинации входов в различных сочетаниях низкий/высокий логический уровень или передний/задний фронт импульса, а также совпадения по цифровому значению сигнала на шинах.
· Изменение позиции захвата в пределах от -50% до +50% буфера памяти.
· Простые измерения временных характеристик сигналов с помощью устанавливаемых курсоров.
В отличие от других виртуальных приборов,LOGIC ANALYSER не имеет в окне Edit Properties заранее прописанных строк параметров предустановки. Все установки прибора ведутся из панели, открывающейся при запуске симуляции (Рис. 10-3-14 справа), хотя позже их скрытые значения появляются в окне (Рис. 10-3-15). Соответствие появившихся там параметров установкам прибора на его панели я укажу в процессе изучения последних.
А изучение кнопок и ручек управления мы начнем с ползунков (слайдеров), расположенных напротив соответствующих им индивидуальных входов. Эти ползунки имеют пять положений и по умолчанию стоят в самом левом, т.е. возможность захвата любого сигнала на соответствующем входе (Рис. 10-3-16). Именно ими можно установить совпадение по логическому AND (И) для одного или группы входов, которое потом будет расположено в позиции с нулевым временем (вертикальный пунктир в центре дисплея на рисунке 10-3-16). Все курсоры, устанавливаемые слева от этого пунктира, будут показывать отрицательные значения времени, а справа – положительные.
Положение пунктира нулевого отсчета времени по умолчанию принято посередине дисплея, что соответствует значению TRIGGERPOS=100 в окне Other Properties (Рис. 10-3-15). В том же окне положению ползунков соответствует параметр MODE cномером входа. Если слайдер находится в самом левом (по умолчанию нулевом) положении, то захват сигнала происходит при любом уровне на соответствующем входе(ах). Выставив ползунки на нужных входах соответствующим образом, можно добиться, чтобы захват происходил именно при этом сочетании сигналов. Например, необходимо, чтобы захват сработал на состояние, когда A0=0, A1=1, а на A2 происходит спад сигнала (задний фронт). Тогда нам необходимо поставить движок напротив A0 на зеленую черту, движок A1 на красную, а ползунок на A3 сдвинуть вправо до упора, чтобы он оказался под спадающим фронтом импульсного сигнала, изображенного вверху окна. Результат приведен на рисунке 10-3-17 и в примере вложения LA_capture.DSN.
Чуть ниже ползунков для индивидуальных входов (Рис. 10-3-14) расположены четыре окна с раскрывающимися списками для шинных входов B0B4. Для них нельзя установить совпадения по фронтам, но можно выставить совпадение по цифровому значению из выпадающего списка в диапазоне 00 до FF. В окне Other Properties (Рис. 10-3-15) эти установки соответствуют параметру BUSMODE с соответствующим номером шины и по умолчанию равны -1, что эквивалентно All (любое) в окнах панели управления.
Вообще с установкой AND-совпадений как по сочетанию на индивидуальных входах, так и на шинах я рекомендую быть предельно аккуратными, т.к. можно случайно поставить такое сочетание, которое не встречается во входных сигналах, и захват не произойдет никогда. Если у вас кнопка Capture надолго зависла в розовом состоянии и симуляция при этом не заторможена, то внимательно проверьте сочетание ползунков и значений на шинах или попробуйте вернуть их в исходное состояние.
В правой части панели LOGIC ANALYSER расположены следующие органы управления:
Кнопка Capture, по нажатию которой происходит заполнение буферной памяти анализатора. Вы уже догадались из предыдущего материала, что это самая главная кнопка на панели. После нажатия она становится розовой и происходит заполнение памяти выборками, затем она становится зеленой – захват завершен, и трассы графиков выводятся на дисплей.
Кнопка Cursors (расстановка курсоров) по умолчанию активна (розовая) и позволяет расставлять на дисплее анализатора курсоры (вертикальные зеленые линии на рисунке 10-3-16 ), над которыми отражается числовое значение времени и четырехзначное числовое значение состояние индивидуальных входов в шестнадцатеричном формате. Эта опция позволяет легко проделать временные измерения сигналов и полностью аналогична такой-же опции у виртуального осциллографа. По меню правой кнопки мыши в поле дисплея анализатора курсоры можно удалять как полностью, так и по одному. Отмечу еще, что курсоры, установленные слева от пунктирной линии нулевой точки захвата, будут иметь отрицательное значение времени.
Ниже кнопок расположено колесико сдвига экрана дисплея Position. По умолчанию оно стоит на отметке 50, что соответствует значению HORIZPOS=0 в окне Other Properties (Рис. 10-3-15). При этом нулевая отметка времени расположена в центре экрана. Эта функция также идентична аналогичной у осциллографа. Замечу только, что если полностью все содержимое буфера памяти расположено на экране в мелком масштабе, то сдвиг влево-вправо этим колесом невозможен, ведь мы имеем дело с записанным, а не онлайн, как у осциллографа сигналом.
Нам осталось рассмотреть две сдвоенных (переключатель/регулятор) ручки также похожие на аналогичные у осциллографа.
Переключатель-регулятор DisplayScale позволяет устанавливать горизонтальный масштаб дисплея анализатора, т.е. какое количество выборок из буферной памяти приходится на одну клетку экрана. Текущее установленное числовое значение отображается на микродисплее под ручкой. Эта опция влияет только на отображение на дисплее и никак не затрагивает содержимое буферной памяти прибора.В окне Other Properties (Рис. 10-3-15) установленному значению соответствует параметр HORIZSCALE.
Переключатель-регулятор Capture Resolution наоборот оперирует только с буферной памятью и определяет, какое количество времени приходится на одну выборку (сэмпл), записываемую в буферную память. Изменения установок вносятся до очередного нажатия кнопки Capture и отображаются в цифровом значении на микродисплее под переключателем.В окне Other Properties (Рис. 10-3-15) установленному значению соответствует параметр HORIZVAL.
По ручкам и кнопкам вроде все рассказал, теперь займемся самим дисплеем анализатора. Он тоже во многом похож на дисплей осциллографа и обладает теми же функциями. По щелчку правой кнопки мыши в области экрана дисплея анализатора можно вызвать опцию установки цветовых параметров дисплея и печати осциллограмм. Надо отметить, что установленные по умолчанию цвета сетки, осциллограмм и курсоров довольно блеклые, поэтому я сразу же поправил их под свои нужды. Окно установки цветов Colours Setup отображено на рисунке 10-3-14 слева внизу, а те поправки, которые я внес в цветовую гамму, обведены красными рамками. При желании всегда можно вернуться к исходной цветовой гамме, нажав кнопку Reset в этом окне. Ну и в заключение отмечу, что по клику правой кнопкой мыши в поле дисплея анализатора осциллограммы можно вывести на печать, что тоже аналогично рассмотренному ранее осциллографу.
Маловато, конечно, получилось у меня примеров по логическому анализатору, но прибор достаточно прост в использовании и нет смысла плодить проекты, похожие как братья-близнецы с небольшим отличием в параметрах. На этом заканчиваем материал по цифровым виртуальным приборам и переходим к инструменту специализированному.
Рисунки 10-3-1 ... 10-3-17

ВНИМАНИЕ! По моему недосмотру при втаскивании последнего материала (раздел 10 весь) была нарушена нумерация в заголовках , а в этом посте я машинально сначала закинул примеры к гл. 9.3. вместо 10.3. Спасибо, Ivan_fd обратил внимание на мой ляп. Приношу извинения и выкладываю реальные примеры для гл.10.3.
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 10-3-1.gif
Просмотров: 551
Размер:	38.1 Кб
ID:	34515   Нажмите на изображение для увеличения
Название: PIC 10-3-2.gif
Просмотров: 585
Размер:	55.1 Кб
ID:	34516   Нажмите на изображение для увеличения
Название: PIC 10-3-3.gif
Просмотров: 450
Размер:	12.0 Кб
ID:	34517  

Нажмите на изображение для увеличения
Название: PIC 10-3-4.gif
Просмотров: 440
Размер:	33.5 Кб
ID:	34518   Нажмите на изображение для увеличения
Название: PIC 10-3-5.gif
Просмотров: 424
Размер:	65.8 Кб
ID:	34519   Нажмите на изображение для увеличения
Название: PIC 10-3-6.gif
Просмотров: 403
Размер:	27.8 Кб
ID:	34520  

Нажмите на изображение для увеличения
Название: PIC 10-3-7.gif
Просмотров: 425
Размер:	14.7 Кб
ID:	34521   Нажмите на изображение для увеличения
Название: PIC 10-3-8.gif
Просмотров: 367
Размер:	14.5 Кб
ID:	34522   Нажмите на изображение для увеличения
Название: PIC 10-3-9.gif
Просмотров: 356
Размер:	15.1 Кб
ID:	34523  

Нажмите на изображение для увеличения
Название: PIC 10-3-10.gif
Просмотров: 360
Размер:	15.3 Кб
ID:	34524   Нажмите на изображение для увеличения
Название: PIC 10-3-11.gif
Просмотров: 454
Размер:	68.5 Кб
ID:	34525   Нажмите на изображение для увеличения
Название: PIC 10-3-12.gif
Просмотров: 440
Размер:	79.8 Кб
ID:	34526  

Нажмите на изображение для увеличения
Название: PIC 10-3-13.gif
Просмотров: 384
Размер:	12.4 Кб
ID:	34527   Нажмите на изображение для увеличения
Название: PIC 10-3-14.gif
Просмотров: 444
Размер:	93.9 Кб
ID:	34528   Нажмите на изображение для увеличения
Название: PIC 10-3-15.gif
Просмотров: 372
Размер:	18.0 Кб
ID:	34529  

Нажмите на изображение для увеличения
Название: PIC 10-3-16.gif
Просмотров: 414
Размер:	48.9 Кб
ID:	34530   Нажмите на изображение для увеличения
Название: PIC 10-3-17.gif
Просмотров: 527
Размер:	86.6 Кб
ID:	34531  
Вложения:
Тип файла: rar 10_3.rar (86.2 Кб, 920 просмотров)

Последний раз редактировалось Halex07; 11.05.2012 в 22:55.
Halex07 вне форума  
Эти 15 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (09.05.2012), bozhko (08.05.2012), danilych2 (11.06.2014), igor7779 (01.03.2022), Ivan_fd (08.05.2012), kittec (08.05.2012), kot-69 (08.05.2012), malyshevsergey (09.05.2012), mihail (23.03.2015), MihailoMihalych (22.01.2023), strannik2039 (17.08.2014), Traan (16.09.2013), Роман Ефимов (08.05.2012)
Непрочитано 14.10.2012, 17:26  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

10.4. Виртуальный инструментарий. Virtual Terminal. Использование модели COMPIM для связи через физические и виртуальные COM-порты компьютера.
Настал черед рассмотреть специализированные виртуальные приборы Протеуса, обеспечивающие контроль и управление различными интерфейсами. На очереди Virtual Terminal – универсальный терминал ввода-вывода по асинхронному последовательному протоколу RS232. Этот виртуальный прибор особенно полезен тем, кто разрабатывает микроконтроллерные устройства, так как обеспечивает простую двухстороннюю связь с моделями МК и позволяет вывести на экран виртуального терминала диагностические сообщения, а также ввести с клавиатуры компьютера внешние данные в микроконтроллерное устройство. Кроме того, используя существующую в ISIS модель COMPIM можно обеспечить связь с реальным физическим COM-портом компьютера или его виртуальными аналогами. Итак, начнем с модели Virtual Terminal, которая обладает следующими возможностями:
· Двунаправленный ввод-вывод последовательных символьных ASCII данных. Данные выводятся на экран терминала в режиме симуляции в реальном времени, а вводятся посредством клавиатуры компьютера.
· Простейший двухпроводный интерфейс приема/передачи: RxD (Receive Data - приём данных) и TxD (Transmit Data - передача данных).
· Два вывода аппаратного квитирования: выход RTS (Request to Send - запрос на передачу) и вход CTS (CleartoSend - готовность передачи).
· Выбор скорости обмена Boud Rate от 300 до 57600 бод (на самом деле вручную можно задать этот параметр и выше 115200 и т.д., работать будет нормально).
· Установка типа данных Data Bits: 7 или 8 бит.
· Выбор контроля режима четности данных Parity: ODD (четные), EVEN (нечетные), NONE (не проверяется).
· Выбор количества стоповых битов Stop Bits от 0 до 2.
· Программное Send XON/XOFF квитирование потока в дополнение к аппаратному.
· Выбор нормальной или инвертированной полярности сигналов на выводах RXD/TXD (RX/TX Polarity) и RTS/CTS (RTS/CTSPolarity).
На рисунке 10-4-1 представлено окно Edit Properties виртуального терминала с установками по умолчанию. Кроме того, в раскрывающемся списке Advanced Properties присутствует еще параметр Trace Event (Диагностические сообщения), который по умолчанию установлен как Warning Only– только предупреждения, или как мы их ранее назвали «горчичники». При отладке можно установить этот параметр в Trace Messages или Debug Messages, если в логе симуляции нужен полный контроль обмена по последовательному интерфейсу, однако напомню, что это несколько «притормозит» программу за счет дополнительной нагрузки на ЦП компьютера для вывода трассировочных сообщений. Однако, последовательный интерфейс Virtual Terminal настолько прост, что в этом редко возникает необходимость.
Для того, чтобы рассмотреть остальные особенности модели, предлагаю собрать тривиальную схему из двух терминалов, обеспечивающую обмен данными между ними. Схемой, конечно, это можно назвать с большой натяжкой – всего лишь два устройства соединенные перекрестной связью вход данных одного на выход данных другого (Рис. 10-4-2).
И сразу же полезный совет. Если Вы ставите в проект два терминала, да и не только терминалы, а другие приборы или компоненты, имеющие всплывающие окна, не поленитесь заполнить окно свойств Component Reference (самая верхняя строка свойств на рисунке 10-4-1). По умолчанию оно пустое и поэтому, когда всплывут два одноименных окна трудно сходу понять, гдекакое расположено. Если же терминалы заранее обозначить, например, VT1 и VT2, то и всплывающие окна будут иметь эти обозначения. Тут уже «и без поллитры» все ясно по заголовкам окон.
Итак, при запущенной симуляции появляются всплывающие окна-экраны терминалов, а в них кликом правой кнопкой по черному полю экрана вызываются дополнительные опции (Рис. 10-4-2). Рассмотрим это меню подробнее. Надеюсь, верхняя часть не вызывает затруднений даже у тех, кто не знаком с английским языком, поскольку она фактически стандартна. Опция Cleer Screen – очищает экран, флажок Pause – приостанавливает прием данных (именно прием!!!), ну а опции Copy (копировать) и Paste (вставить) известны даже начинающим пользователям ПК. А вот те опции, что расположены ниже горизонтального разделителя, заслуживают особого внимания.
Флажок Echo Typed Characters позволяет заставить терминал передатчик повторять на своем экране тот текст, который вводится с клавиатуры. По умолчанию этот флажок не установлен, и текст, вводимый с клавиатуры в активном на данный момент терминале-передатчике, не отображается. Курсор продолжает стоять на месте, а на выход TXD и далее по линии в приемник символы передаются, поэтому на рисунке 10-4-2 на правом терминале текст распечатался, хотя набирал я его в при активном левом. Если флажок включить, то текст будет виден в терминале-передатчике сразу при наборе с клавиатуры. Аналогичной опцией обладает множество терминальных программ, в том числе и родной «виндозный» Hyper Terminal, так что те, кто им пользовался, уже с этим знакомы.
Флажок Hex Display Mode позволяет перевести экран терминала в режим отображения шестнадцатеричных значений символов. По умолчанию терминал находится в обычном текстовом ASCIIрежиме.
Опция Set Font вызывает дополнительное окно выбора шрифта для окна терминала. На рисунке 10-4-3 показано такое окно для Windows 7, для обладателей Windows XP оно будет немного отличаться. Сразу хочу отметить, что обычно после установки Протеуса для терминала принят западноевропейский шрифт, поэтому, если вам нужна кириллица в терминале, то вам прямиком сюда. Здесь необходимо выбрать шрифт, в котором наверняка имеется кириллица, например, Courier. В этом же окне можно установить и размер шрифта по умолчанию стоит 8, что, например, для меня полуслепого мелковато. Шрифт достаточно установить один раз, потом в последующих проектах при выборе терминала он будет таким, каким вы его прописали ранее.
Ну вот, с обзором всяческих свойств и параметров Virtual Terminal покончено, убеждаемся, что настройки скорости и прочего у терминалов одинаковы и запускаем симуляцию. Данный пример 2_VT.DSN находится в одноименной папке вложения 2_VT.
Ну и, завершая рассказ о простом использовании Virtual Terminal, отмечу, что связь тут не обязательно должна быть двухсторонней. Вы можете убедиться в этом по предыдущему примеру, если разорвете один из перекрестных проводов. При этом тот терминал, у которого оставлен подключенным выход TXD, сможет только передавать данные, а тот у которого вход RXD – только принимать их. Это тоже иногда бывает нужно. В частности, терминал приемник можно использовать при отладке, как контрольное устройство прохождения информации, например, для проверки связи по последовательному интерфейсу между двумя микроконтроллерами. Для этого достаточно подвесить его приемный вход RXD на контролируемую линию связи и выставить скорость и остальные параметры (четность и т.п.) обмена на этой шине. Фактически таким подключением мы получаем простейший сниффер последовательного интерфейса. Для тех, кто «на бронепоезде»: англ. sniff – нюхать. Термин «сниффер» (нюхач) перекочевал из профессионального хакерского сленга, и означает устройство, позволяющее контролировать траффик по тому или иному интерфейсу, например, в локальной сети, не нарушая при этом основной обмен по этому интерфейсу.
Я не стану здесь приводить примеры использования виртуального терминала с микроконтроллерами, их достаточно в родных Samples Протеуса. Это, например, проекты из папки \VSM for AVR\One-Wire, где виртуальный терминал используется в качестве контрольного устройства вывода, или VSM for PICMICRO\VSM for PIC18\Data Logger, где терминал задействован как ввод-вывод. Мы ограничимся опять модификацией предыдущего примера, где я задействую дополнительные терминалы приемники и покажу, что бывает, когда они некорректно выставлена скорость обмена. Скриншот к примеру 4_VT.DSN из папки RXD_Speed вложения приведен на рисунке 10-4-4. Здесь для дополнительных терминалов приемников VT3 и VT4 я установил скорость соответственно ниже и выше той, что использована в основной паре VT1-VT2. Как видите, если скорость приемника ниже, он не только искажает информацию, но и успевает принять меньше символов, чем было передано. Ну, и, наоборот, для приемника с большей скоростью количество символов превышает переданное и они тоже искажены. Это может стать для вас некоторым ориентиром при отладке своих проектов.
На этом, пожалуй, можно закончить с виртуальным терминалом и рассмотреть далее более интересный и сложный материал по модели последовательного порта COMPIM, а также возможности имитации его на современных компьютерах, которые, увы, благодаря «заботам» производителей компьютерного железа о благе пользователей скоро совсем его потеряют. Рано, ой как рано, они выбросили его на «помойку истории». Ну это так, лирическое отступление, вернемся к теме…
Итак, для имитации реального физического COM-порта в Протеусе имеется модель COMPIM, которая находится в библиотеке Miscellaneous (разное). Вид модели и окно ее параметров приведены на рисунке 10-4-5.
Как видим, модель имеет полный набор сигналов реального D-SUB 9-pin разъема COM-порта, в виде которого она и изображена. Поскольку модель имеет отдельный и достаточно подробный HELP, ниже я приведу практически полный его перевод с некоторыми моими комментариями, выделенными коричневым курсивом.
Введение
Обычно, системы моделирования не имеют прямой связи с материальным миром вокруг них. Это означает, что, для моделирования части большой системы, состоящей из модулей, Вам потребовалось бы или создать модели других модулей, или создать файлы, содержащие тестовые данные этих модулей.
Виртуальные возможности Proteus VSM позволяют создать модели, которые могут фактически взаимодействовать с материальным миром. Такие модели называются Physical Interface Models (Физические Интерфейсные Модели) или PIM для краткости. Отсюда и название модели не COMPORT, а COMPIM.
Модель COMPIM - Физическая Интерфейсная Модель последовательного порта. Входящие последовательные данные буферизируются и представляются отлаживаемой схеме как цифровой сигнал, в то время как последовательные цифровые данные, сгенерированные МК или моделью UART, появляются в физическом COM-порту компьютера. Модель COMPIM также предусматривает преобразование скорости, и реализацию дополнительных аппаратных или программных сигналов квитирования и на физических и на виртуальных сторонах устройства.
Это позволяет реальным устройствам, оборудованным последовательным портом взаимодействовать с процессом VSM моделирования. Например, этим можно воспользоваться, чтобы разработать программу в Proteus VSM для микроконтроллера системы автоматизации или сигнализации, который будет управлять реальным физическим модемом. В качестве альтернативы, программу-отладчик, работающий на одном компьютере, можно использовать, чтобы отладить моделируемый проект, работающий в среде Proteus VSM на другом.
Модель COMPIM может также использоваться для ввода-вывода обычных цифровых сигналов: CTS, DSR, DCD и RI физического порта могут использоваться как цифровые входы от внешнего устройства, а RTS и DTR – как цифровые выходы. Отметим, что в этом случае данным сигналам, возможно, потребуется дополнительное физическое согласование по уровням с внешним устройством.
Расположение выводов.
У COMPIM имеется восемь контактов: TXD, RXD, CTS, RTS, DSR, DTR, DCD и RI.
TXD, RTS и DTR - входы модели, которые соответствуют выходам физического порта.
RXD, CTS, DSR, DCD и RI - выходы модели, которые соответствуют входам физического порта.
Это означает, что модель COMPIM схемотехнически представляет собой DCE (Data Communications Equipment коммуникационное оборудование трансляции данных). В отличие от этого, модель VTERM (виртуальный терминал, рассмотренный выше) соединяется как DTE (Data Terminal Equipment- терминальное оборудование приема/передачи данных). Сам физический COM-порт соединяется тоже как DTE (TXD – его вывод).
Когда запускается процесс симуляции, терминалы разъема DE-9 (В оригинале Help он назван DB-9, но будем точными и заглянем сюда: http://ru.wikipedia.org/wiki/D-subminiature) модели COMPIM становятся индикаторами. Терминалы TXD и RXD показывают прохождение данных на соответствующих физических контактах порта. Индикаторы для CTS, RTS, DSR, DTR, DCD и RI показывают состояние физических контактов порта.
Два нижних квадратных индикатора ERROR, расположенные на соответствующих сторонах модели COMPIM, становятся красными всякий раз, когда обнаруживается ошибка соответственно со стороны виртуального или физического порта. Индикатор, который ближе к выводам, отмечает ошибки на виртуальном порту. Индикатор под изображением разъема DE-9 индицирует ошибки физического порта. Эти индикаторы фиксируют ошибки структуры потока данных и ошибки четности. Окно Simulation Log программы может дать больше информации относительно природы ошибок.
Режимы Квитирования.
Сигналы управления потоками, если они задействованы, не проходят непосредственно из физического в виртуальный COM-порт или наоборот. Вместо этого они взаимодействуют с высокими и низкими уровнями буфера данных модели COMPIM и операционной системы. Это означает, что, даже если один физический/виртуальный порт способен управлять потоками и может разрешить принимать или блокировать данные, то другой виртуальный/физический порт, возможно, не обязательно передаст это состояние, когда буфер будет близок к переполнению или в процессе обмена данными. Здесь подразумевается, что на одном компьютере это может работать, а на другом нет.
Другими словами, даже если на физической или виртуальной стороне аппаратное квитирование будет включено, то входной контакт RTS модели COMPIM может не передать это состояние на вывод RTS реального COM-порта. Такое поведение корректно и учтено разработчиками.
Буферизация.
Модель COMPIM обеспечивает буферизацию для входящих и для исходящих данных. Так же как в ситуации, с VSM моделированием, когда симуляция не в состоянии не отстать от реального времени, работа входного буфера продолжается, даже когда симуляция приостановлена. Эта возможность может быть удивительно полезной в процессе отладки, поскольку позволяет производить пошаговую обработку входящих данных от физического устройства, присоединенного к реальному COM-порту.
Выходная буферизация является наиболее релевантной, когда скорость в бодах в виртуальной схеме превышает ту, которая установлена для реального физического порта.
Свойства.
Модель COMPIM поддерживает следующие свойства:
Для физического (реального) порта:
· Physical port(физический порт) - P_PORT- по умолчанию: COM1 – определяет с каким физическим последовательным портом соединяется модель. Из раскрывающегося списка можно выбрать только порты COM1 – COM4, но это не означает, что модель не будет работать, скажем, с COM6 или COM8. Просто задайте вручную с клавиатуры нужный Вам порт.
· Physical Baud Rate (скорость в бодах) - P_BAUDRATE- по умолчанию: 9600 – устанавливается в пределах от 50 до 1000000 бод, хотя аппаратные средства компьютера могут иметь собственные ограничения.
· Physical Data Bits (длина данных бит) - P_DATABITS- по умолчанию: 8 – на физическом порту поддерживаются данные 7 или 8 бит.
· Physical Parity (четность) - P_PARITY- по умолчанию: NONE – контроль четности данных может устанавливаться: NONE– не проверяются, ODD - нечетные, EVEN - четные, MARK – контрольный бит всегда 1 или SPACE– контрольный бит всегда 0.
· Physical Stop Bits (число стоповых битов) - P_STOPBITS- по умолчанию: 1 – может выбираться количество стоповых битов 1 или 2.
· Physical XON/XOFF flow control (XON/XOFF контроль) - P_SOFTFLOW- по умолчанию: 0 – определяет включен (1) или выключен (0) программный контроль управления потоком XON/XOFF.
· Physical RTS/CTS flow control (аппаратный RTS/CTS контроль потока) - P_HARDFLOW- по умолчанию: 0 – определяет, должно (1) или нет (0) аппаратное квитирование управления потоками RTS/CTS использоваться.
· Physical XON character (число стоповых битов) - P_XONCHAR- по умолчанию: 17 – определяет символ XON, используемый в физическом интерфейсе.
· Physical XOFF character (символ для XON) - P_XOFFCHAR- по умолчанию: 19 – определяет символ XOFF, используемый в физическом интерфейсе.
Для виртуального порта в проекте ISIS:
· Virtual Baud Rate (скорость в бодах ) - V_BAUDRATE- по умолчанию: 9600 – устанавливается в пределах от 50 до 1000000 бод.
· Virtual Parity (четность) - V_PARITY- по умолчанию: NONE – контроль четности данных может устанавливаться: NONE– не проверяются, ODD - нечетные, EVEN - четные, MARK – контрольный бит всегда 1 или SPACE– контрольный бит всегда 0.
· Virtual Stop Bits (число стоповых битов) - V_STOPBITS- по умолчанию: 1 – может выбираться количество стоповых битов 1 или 2.
· Virtual XON/XOFF flow control (XON/XOFF контроль) - V_SOFTFLOW- по умолчанию: 0 – определяет включен (1) или выключен (0) программный контроль управления потоком XON/XOFF.
· Virtual RTS/CTS flow control (аппаратный RTS/CTS контроль потока) - V_HARDFLOW- по умолчанию: 0 – определяет, должно (1) или нет (0) аппаратное квитирование управления потоками RTS/CTS использоваться.
· Virtual XON character (число стоповых битов) - V_XONCHAR- по умолчанию: 17 – определяет символ XON, используемый в виртуальном интерфейсе.
· Virtual XOFF character (символ для XON) - V_XOFFCHAR- по умолчанию: 19 – определяет символ XOFF, используемый в виртуальном интерфейсе.
· Size of data input buffer (размер входного буфера данных) - INPUT_BUFFER_SIZE- по умолчанию: 65535 – определяет размер входного буфера данных модели в направлении от физического к виртуальному интерфейсу. Может устанавливаться в пределах от 1 байта до 4194304 байт.
· Size of data output buffer (размер входного буфера данных) - OUTPUT_BUFFER_SIZE- по умолчанию: 65535 – определяет размер выходного буфера данных модели в направлении от виртуального к физическому интерфейсу. Может устанавливаться в пределах от 1 байта до 4194304 байт.
Дополнительные замечания
Известна проблема с Windows 95/98/ME, где поведение API последовательного порта вызывает неправильную работу индикатора вызова RI(RingIndicator). Это, предположительно, проявляется в том, что RI правильно выполняет переход от низкого уровня к высокому, и зависает на высоком уровне до тех пор, пока моделирование будет остановлено.
Независимо от заданного значения INPUT_BUFFER_SIZE и OUTPUT_BUFFER_SIZE операционная система и аппаратные средства могут выполнить некоторую ограниченную буферизацию.
Ограничения в способе, которым Win32 API последовательного порта сообщает о состоянии linebreak (разрыв строки) (или по-другому это маркер end-of-line EOL), означают, что COMPIM должен вывести конец разрыва строки другим действием, происходящим на физическом последовательном порту. Это означает, что сигнал разрыва строки может оставаться активным на виртуальном порту, после того, как он изменился на физическом.
Индикаторы модели COMPIM пытаются отразить реальное состояние физического порта, однако, операционная система и аппаратные средства выполняют некоторую буферизацию прежде, чем COMPIM.DLL будет иметь возможность доступа к этим данным. Это означает, что индикация модели иногда может неправильно отражать текущее состояние физического порта.
Ну вот, собственно, почти дословный перевод файла COMPIM.chm из папки HELP Протеуса. Можно было бы на этом и остановиться, однако, учитывая, что на форуме нет-нет, да и всплывают вопросы по использованию COMPIM, необходимо подкрепить эту информацию некоторой практикой применения этой модели. Кроме того, я, вероятно, как и многие другие пользователи являюсь счастливым обладателем компа-«потаскунчика» системы нетбук, в котором COM-порты отсутствуют напрочь, а заниматься разработкой как то надо. Да и в настольно-подстольных компьютерах он уже стал редкостью. Хорошо, если присутствует хотя бы на «мамке» и есть возможность прилепить внешний разъем, но и то не у всех. Вот и идут в ход различные переходники типа USB-COM. Опять-таки это обычно возможность заиметь один порт, а для отладки обычно нужна пара, соединенная нуль-модемным кабелем или еще один компьютер с таким портом. Такие возможности есть далеко не у всех, но нам на помощь приходят программы, реализующие виртуальные COM-порты, как выразился слесарь Полесов, - «при наличии отсутствия» таковых. Не путайте эти виртуальные порты с теми, которые упоминаются в переводе Helpпо COMPIM. Там в качестве виртуальной для COMPIM подразумевалась сторона проекта ISIS, а не отдельно установленная программа.
До недавнего времени одной из наиболее продвинутых в этой области программ, лояльно работающей с COMPIM Протеуса, являлась Virtual Serial Port Driver компании Eltima Sofware. Скачать пробную версию можно здесь:http://www.eltima.com/products/vspdxp/. Однако, эта программа является далеко не бесплатной, а рекомендовать всевозможные ее «кряки», которые очень часто криво работают, мне как то «религия не позволяет».
Но, около года назад, я натолкнулся на абсолютно халявную программу реализации виртуальных COM-портов, которая тоже адекватно взаимодействует с Протеусным COMPIM. Вот с ней-то я и приведу последующие примеры. Программа называется Virtual Serial Ports Emulator или сокращенно VSPE. Скачать последнюю на сегодняшний день версию 0938 можно с сайта Eterlogic здесь: http://www.eterlogic.com/Products.VSPE.html. Для 32-битных приложений программа полностью бесплатна и не имеет функциональных ограничений. Более того, могу порадовать «любителей» русского интерфейса, он там есть изначально, хотя и не до конца внедренный. Итак, скачиваем и устанавливаем программу, ключ к бесплатной 32-битной версии находится в архиве с инсталлятором и пропишется автоматически. Запускаем программу, заходим во вкладку Language и меняем язык на русский. Далее нам необходимо создать связанную пару портов. Предвижу дилетантский вопрос – почему именно пару, а не один? Да потому, что один из портов мы «подарим» Протеусу, т.е. отдадим под контроль COMPIM, а второй нам необходим, чтобы подключить к нему терминальное «устройство», через которое мы будем общаться с кем-то (чем-то) внутри проекта ISIS. Запускаем программу VSPE, Нажимаем кнопку «Создать новое устройство» и в открывшемся окне из раскрывающегося списка выбираем Pair- пара (Рис. 10-4-6).
Затем жмем кнопку «Далее», в следующем окне выбираем пару из свободных на данный момент номеров портов (в моем случае на нетбуке я использую первые два) и нажимаем «Готово». После этого нам осталось нажать кнопку «Запустить эмуляцию» с уже знакомой нам по ISIS иконкой, и пара виртуальных COM-портов готова к использованию (Рис. 10-4-7). Окошко можно свернуть, и оно спрячется в значок рядом с часами.
Теперь, для первого нашего эксперимента воспользуемся уже готовым примером из папки SAMPLES\InteractiveSimulation\COMPIMDemo\ Протеуса. Здесь уже готово полное соединение виртуального терминала и модели COMPIM (Рис. 10-4-8 ).
И снова лирическое отступление от темы, касающееся «начинающих связистов». Обратите внимание, – как соединен виртуальный терминал (устройство DTE) и модель COMPIM (устройство DCE). Подразумеваются линии приема RXD и передачи TXD данных. Почему так? Ведь для двух виртуальных терминалов в примерах выше мы использовали перекрестную связь? Вот тут чаще всего и начинаются «танцы с бубном» у начинающих «шаманов». Давайте раз и навсегда уясним себе разницу между DTE и DCE, чтобы к этому не возвращаться. Обратите внимание, что, давая расшифровку аббревиатурам в переводе хелпа выше, я использовал разные понятия: DTE – прием/передача, DCE – трансляция. Это сделано умышленно. DTE является оконечным устройством в котором данные вводятся или выводятся и в конечном итоге преобразуются в какую то другую форму: символы на экране или на бумаге, нажатия определенных клавиш и т.п. DCE – просто транслятор, т.е. пропускает через себя, грубо говоря «сквозняком», данные по принципу по какой линии «влетело», по той и «вылетело». Естественно, возникает вопрос, а где же мы тогда перекрестим линии для другого – удаленного терминала? Да в нашем случае это уже сделано в той самой связанной паре виртуальных COM-портов. А вот если Вы хотите использовать реальные порты компьютера, об этом придется позаботиться самостоятельно и приготовить так называемый нуль-модемный кабель. Именно в нем и происходит «переворот сигналов». Не буду здесь впадать в конкретику, не касающуюся Протеуса, есть статья в Википедии, есть, наконец, прекрасный сайт http://pinouts.ru , на котором Вы можете найти распиновку полного нуль-модемного соединения и не только... Кстати, по поводу этого сайта, еще в далекие времена становления всемирной паутины пользовался я аналогичной финской версией. Есть у меня большое подозрение, что это, мягко выражаясь, спи…но оттуда, даже английский язык в большинстве случаев сохранен, но, тем не менее, информация на сайте может быть многим полезна.
Однако вернемся к теме. Для продолжения эксперимента нам осталось подключить на «удаленный» (второй) конец виртуальной пары COM-портов еще один терминал, который будет общаться с тем, что в Протеусе. «Счастливые» обладатели WinXP могут применить в качестве такового Hyper Terminal из набора стандартных программ, а вот «несчастным» пользователи Win7 или грядущей Win8 придется поискать таковую отдельно, т.к. Hyper Terminal больше не входит в набор обязательной поставки. Что тут можно предложить. Можно, конечно скачать триальную версию того же Hyper Terminal с сайта его разработчика: https://www.hilgraeve.com, поскольку Microsoftне является автором этой программы. Но триал функционален только на месяц. Можно поискать бесплатные терминалы, работающие под вашей версией Windows. Их в Интернете пруд пруди, выбирайте по вкусу.
Я в этом примере воспользуюсьбесплатной программой Bray Terminal. Она достаточно популярна в среде эмбеддеров и удобна, поскольку в одном окне программы сосредоточена практически вся нужная информация по настройкам порта. Скриншот основного окна приведен на рисунке 10-4-9. Программа хороша еще тем, что не требует установки. Скачать последнюю на сегодня версию можно на этой странице: https://sites.google.com/site/terminalbpp/
Итак, начинаем первый эксперимент с COMPIM. Будем считать, что у нас уже запущена VSPE и имеется пара связанных портов COM1-COM2, либо на нормальном десктопном компе вы соединили нуль-модемным кабелем реальные одноименные порты. Кстати, если порты реальные, не забудьте прогуляться «Диспетчер устройств» Windowsи убедиться, что установки скорости и остальные опции у физических портов совпадают с требуемыми. Я исхожу пока из того, что обычно по умолчанию стоит 9600 бод, 8 бит без проверки четности с одним стоповым битом. Теперь, запускаем пример TERMECHO.DSN из сэмплов Протеуса и там также выставляем нужную скорость у модели COMPIM и терминала, поскольку изначально там везде стоит 2400 бод. Если Вы выбрали другую пару связанных портов, то поправляем в COMPIM номер порта, я оставлю то, что есть – COM1. Ну и в довершение всего запускаем Bray Terminal, нажимаем кнопку ReScan в левом верхнем углу, чтобы программа определила доступные к подключению порты, также выставляем номер и параметры порта. Я выставил так, как показано на рисунке 10-4-9. Если требуется передавать русские символы, корректируем шрифт через кнопку Set Font. Я выбрал Times New Roman, в котором имеется набор Кириллица. Процедура выбора аналогична рисунку 10-4-3 для терминала из Протеуса. Может так случиться, что у Вас такого шрифта может и не оказаться, это зависит от того, какой набор шрифтов установлен в системе. Тогда выставьте любой другой подходящий, имеющий кириллицу в опциях выбора набора символов. Теперь нам осталось запустить симуляцию проекта в Протеусе, а в Bray Terminal нажать верхнюю левую кнопку Connect, чтобы подключиться к выбранному COM-порту. После чего эта кнопка превратиться в Disconnect, как на приведенном рисунке и оживут (позеленеют) индикаторы состояния квитирующих сигналов в окне терминала.
Кроме того, оживет и индикация на разъеме DE-9 в окне проекта ISIS, как и обещалось в переводе хелпа (Рис. 10-4-10). Теперь мы можем вводить текст в окне виртуального терминала и принимать его в соответствующем окне Bray Terminal. Текст, введенный в строке отсылки последнего, пересылается через связку COM-портов в окно виртуального терминала Протеуса кнопкой Send в правом нижнем углу Bray Terminal. Наш первый эксперимент завершился успешно.
В качестве небольшого разнообразия можно разместить оба терминала и два порта COMPIM в одном проекте. Такой вариант представлен на рисунке 10-4-11. Если задать небольшие скорости обмена, 2400 бод или ниже, то при вводе с клавиатуры будет видно, как на COMPIM передатчика мерцает красным при обмене TXD, а у приемника RXD. Этот пример 2VIRT_COM.DSN в папке 2_COMPIM вложения.
Ну и в заключение материала по Virtual Terminal и COMPIM хотелось бы поместить более практический пример использования этих моделей. Поводом послужил проект Протеуса выложенный участником форума под ником: lsa в следующей ветке:
https://kazus.ru/forums/showthread.php?t=100300&highlight=%F2%E5%F1%F2+%EB %E8%F2%E8%E5%E2%FB%F5&page=5
Имитируемое в проекте устройство предназначено для измерения емкости литиевых аккумуляторов и выполнено на микроконтроллере ATMEGA16, хотя, конечно, для такой «примочки» выбор контроллера, мягко выражаясь, слегка «крутоват». Я лишь немного модифицировал исходный проект автора, прилепив к микроконтроллеру модель COMPIM и заменив аккумулятор предварительно заряженным до 3,7V конденсатором емкостью 100 Фарад. При нажатии на кнопку START микроконтроллер подключает через контакты реле к аккумулятору нагрузку из последовательно соединенных резисторов R1 и R2. С резистора R2 снимается напряжение, пропорциональное току нагрузки в данный момент и подается на вход ADC7 аналого-цифрового преобразователя микроконтроллера. На вход ADC6 подается напряжение, действующее на данный момент на аккумуляторе. Через определенные короткие промежутки времени МК измеряет эти напряжения и пересылает их в программу LOGGERS, которая подсчитывает в этих промежутках снятую с аккумулятора емкость и постепенно суммирует ее. При достижении напряжения на аккумуляторе нижнего порога около 2,7V, реле отключает нагрузку, МК шлет в компьютер слово FINISHи измерение емкости прекращается. В папке с LOGGERS.EXE в процессе работы формируется текстовый файл с результатами измерений. Сам проект mega16.DSN и программа LOGGERS.EXE находятся в папке вложения LSA_project. Скриншот работающей программы с комментариями представлен на рисунке 10-4-12. Естественно, для запуска проекта потребуется пара виртуальных или реальных связанных COM-портов. Я использовал все туже VSPE. Еще хочу обратить внимание на прилагаемый с LOGGERS.EXE файл Config.txt. В нем авторские комментарии к настройке. В частности там прописан номер COM-порта для программы LOGGERS и если он у Вас отличается от COM1, то исправьте под нужный. Для модели COMPIM используется скорость 9600 на обеих сторонах. В остальном процедура запуска примера не вызывает затруднений. Последовательность такая: сначала VSPE, затем в проекте Протеуса запускаем симуляцию, стартуем LOGGERS.EXE, и, наконец, в проекте Протеуса жмем кратковременно кнопку START для срабатывания реле. С конденсатором 100 Фарад у меня получилась емкость 60мА*ч, разряжался аккумулятор (конденсатор) около 2 минут «симуляционного» времени.
На этом можно было-бы и завершить, но уже в последний момент я «с ужасом» обнаружил на форуме пост, в котором пользователь был «приятно удивлен» присутствием на выводах реального COM-порта напряжения -12В. Сначала меня это позабавило, но позже я вдруг понял, что тут плакть надо, а не смеяться. Ведь весь изложенный здесь материал основывается на допущении, что пользователи знакомы со стандартом RS-232. Модель COMPIM дает нам возможность легко подключиться к физическому COM-порту, но не забывайте, что в природе на существует реального устройства COMPIM. И если я в последнем проекте так «лихо приткнул» выход TXD микроконтроллера на пин TXD разъема COM-порта, то в реальности это может закончиться плачевно. Да простят меня составители Википедии, но украду дословную выдержку оттуда:
Информация передается по проводам цифровым сигналом с двумя уровнями напряжения. Логическому "0" соответствует положительное напряжение (от +5 до +15 В для передатчика), а логической "1" отрицательное (от -5 до -15 В для передатчика).
Полная статья тут: http://ru.wikipedia.org/wiki/RS-232
Прежде чем Вы приступите к реальному воплощению своего девайса с интерфейсом RS-232, позаботьтесь о согласовании уровней сигналов. В простейшем случае это может быть суррогатное согласование с помощью дискретных резисторов, диодов и транзисторов, таких примеров масса в Интернете. Ну а тем, кто хочет получить стандартное преобразование, придется вспомнить о существовании микросхем приемопередатчиков типа MAX232 и ей подобных. Модели их есть в Протеусе, причем действующие (Рис. 10-4-13), а не использовал я их только потому, что в наших случаях они были не нужны. Но при переходе к реальному проектированию не забудьте про их существование.
Тем, кто хочет подробнее изучить особенности интерфейса, рекомендую найти книгу: А. Ю. Кузьминов «Интерфейс RS232. Связь между компьютером и микроконтроллером», в которой вы найдете ответы на многие вопросы, касающиеся именно самого интерфейса, протокола обмена, а также и кучу схем всевозможных нестандартных согласований. Книга как минимум дважды переиздавалась, и найти ее в сети или в ближайшей библиотеке, не составит проблем. По моему личному мнению, более информативна первая версия издания 2004-го года. Я же на этом заканчиваю материал по моделированию последовательного интерфейса RS-232, и перехожу к другим, не менее популярным в настоящее время.
Рисунки 10-4-1...10-4-13.
В последний момент подумал, и добавил во вложение инсталлятор VSPE и последнюю версию Bray @ Terminal.
Миниатюры:
Нажмите на изображение для увеличения
Название: PIC 10-4-1.gif
Просмотров: 1142
Размер:	47.5 Кб
ID:	39522   Нажмите на изображение для увеличения
Название: PIC 10-4-2.gif
Просмотров: 987
Размер:	41.5 Кб
ID:	39524   Нажмите на изображение для увеличения
Название: PIC 10-4-3.gif
Просмотров: 818
Размер:	47.8 Кб
ID:	39525  

Нажмите на изображение для увеличения
Название: PIC 10-4-4.gif
Просмотров: 824
Размер:	44.8 Кб
ID:	39526   Нажмите на изображение для увеличения
Название: PIC 10-4-5.gif
Просмотров: 1020
Размер:	80.6 Кб
ID:	39527   Нажмите на изображение для увеличения
Название: PIC 10-4-6.gif
Просмотров: 730
Размер:	35.1 Кб
ID:	39528  

Нажмите на изображение для увеличения
Название: PIC 10-4-7.gif
Просмотров: 696
Размер:	27.7 Кб
ID:	39529   Нажмите на изображение для увеличения
Название: PIC 10-4-8.gif
Просмотров: 820
Размер:	28.1 Кб
ID:	39530   Нажмите на изображение для увеличения
Название: PIC 10-4-9.gif
Просмотров: 804
Размер:	70.0 Кб
ID:	39531  

Нажмите на изображение для увеличения
Название: PIC 10-4-10.gif
Просмотров: 686
Размер:	30.5 Кб
ID:	39532   Нажмите на изображение для увеличения
Название: PIC 10-4-11.gif
Просмотров: 794
Размер:	51.6 Кб
ID:	39533   Нажмите на изображение для увеличения
Название: PIC 10-4-12.gif
Просмотров: 1236
Размер:	95.9 Кб
ID:	39534  

Нажмите на изображение для увеличения
Название: PIC 10-4-13.gif
Просмотров: 773
Размер:	55.1 Кб
ID:	39535  
Вложения:
Тип файла: rar 10_4.rar (3.41 Мб, 1531 просмотров)

Последний раз редактировалось Halex07; 14.10.2012 в 18:14.
Halex07 вне форума  
Эти 33 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
47petr (17.02.2014), aleksa-yar (22.11.2012), bobby1968 (15.04.2013), bozhko (24.03.2015), Breixo (18.02.2013), Chettuser (18.11.2012), cnc10 (24.10.2012), Consum (27.08.2013), cxxz (22.10.2012), Cyber_RAT (27.11.2013), danilych2 (11.06.2014), DjdejE (19.10.2012), ethers (08.02.2014), Firsovich (15.10.2012), grbizly (23.10.2012), Ironium (22.01.2016), kittec (14.10.2012), kot-69 (14.10.2012), kuksin (14.10.2012), kuzminec (16.10.2012), lsa (17.10.2012), malyshevsergey (14.10.2012), Michalych (23.10.2016), MihailoMihalych (22.01.2023), NickerS (31.05.2015), sasha_1973 (12.02.2014), ticksp (28.09.2013), Traan (16.09.2013), VGP45 (15.04.2013), vladh (05.11.2012), welder_2002 (28.04.2021)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
Linux-ваше мнение Tvenn Делимся опытом 6169 23.08.2015 08:57
Pictiva TM 128 X 64 OLED Module (SSD0323) + AVR + PROTEUS - рабочий проект для начинающих OttoStirliz Микроконтроллеры, АЦП, память и т.д 8 28.05.2010 16:59


Часовой пояс GMT +4, время: 16:08.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot