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

7.2. Снова в 2D графику. Графические символы – основа активных моделей. Маркер ORIGIN – Архимедова «точка опоры» для активной графики.
До сей поры, мы использовали ту часть левого меню, которая относится к 2D или, по-русски говоря плоской двухмерной графике, поскольку трехмерная в ISIS не предусмотрена, только для прорисовки графического изображения модели. Надеюсь, больших затруднений рисование линий, прямоугольников и кругов у вас не вызвало. Несколько сложнее нарисовать с помощью 2D Graphic Closed Path замкнутую многоугольную фигуру, ну и практически совсем невозможно изобразить замкнутую криволинейную – нет, к сожалению, такой опции в графическом арсенале ISIS. Ну, что-же, будем довольствоваться тем, что есть. В конце концов это не AutoCAD и не PhotoShop, у Протеуса совсем другие задачи и «Джоконду» или «Девочку с персиками» нам тут рисовать не потребуется. Хотя, как раз в графических символах, порой приходится обходиться упрощенными изображениями там, где явно не хватает как раз замкнутой залитой цветом криволинейной фигуры.
Итак, что же такое графический символ в ISIS и чем он отличается от обычного графического изображения модели компонента. Давайте еще раз вспомним, как мы рисовали компонент. На поле проекта рисовался 2D Graphic базовый прямоугольник (квадрат, треугольник, круг или что-то еще) – тело компонента, как правило в стиле Component (коричневое обрамление и телесная заливка). К нему пристыковывались выводы Pins из левой колонки меню Device Pins Mode, а также ставился один маркер привязки, называемый ORIGIN. Внутри или снаружи тела можно было дорисовать линиями или арками еще «что-нибудь ненужное», например знаки полярности или линии раздела, а также нанести в стиле 2D надписи (Рис. 1). На этом процесс рисования заканчивался, и мы приступали к операции Make Device для создания графического изображения модели компонента. Изображение для компонента у нас всегда было одно, поскольку оно единожды, раз и навсегда вставлялось в проект и в этом виде присутствовало там постоянно.
С графическими символами немного иначе. Фактически, это часть изображения компонента, которая может изменять свой вид, цвет, положение или числовое значение в процессе выполнения симуляции. Если кто-то увлекался программированием графики, это как-бы спрайт – есть такой термин у программистов графики. В процессе создания активного компонента символы интегрируются в модель (в ту часть, которая располагается в папке LIBRARY) и затем, в процессе симуляции воспроизводятся на экране в зависимости от наличия определенных сигналов на выводах или внутреннего состояния модели. Создание символа практически ничем не отличается от создания графического изображения компонента, но все же есть один существенный нюанс, связанный с маркером ORIGIN. В компоненте мы его обычно ставим либо в верхнем левом углу тела компонента, либо привязываем к концу одного из выводов (Рис. 1). В одном из начальных разделов я уже упоминал, что он служит для выравнивания компонента по координатной сетке. Но второе его назначение тогда мы не рассматривали, а состоит оно в том, что он служит еще и отправной начальной точкой, относительно которой выравниваются графические символы в активных компонентах. В качестве примера давайте разберем на составные части какой-нибудь семисегментный индикатор, например, модель 7SEG-COM-ANODE. Весь это проект с комментариями представлен в проекте 7_SEG.DSN вложения. Помещаем модель в поле проекта и, выделив, выбираем опцию Decompose либо через меню правой кнопки мыши, либо через верхнее меню – кнопка с изображением молотка. Теперь в левом вертикальном тулбаре выбираем режим отображения и редактирования символов – латинская S в квадратике. После этого в селекторе объектов мы увидим список всех символов, входящих в модель 7SEG-COM-ANODE (Рис. 2).
Само разобранное графическое изображение в поле проекта интересует нас в данный момент только с точки зрения расположения маркера ORIGIN – верхний левый угол тела (прямоугольника) модели. Именно он является «базовой точкой» для всех символов, входящих в модель. Если выбрать в селекторе какой либо символ, то в окне предпросмотра вы увидите его вместе с входящим в символ маркером ORIGIN (Рис. 3). В качестве примера на этом рисунке я выделил символ 7SEG_0_1 – светящийся сегмент «a» семисегментного индикатора.
Однако если вы, выбрав какой либо символ, кликните левой кнопкой мышки в поле проекта и установите его (установится он, как и компонент, вторым кликом по левой кнопке), то маркер в поле проекта будет не виден. Все дело в том, что любой графический символ сам является сложным объектом, состоящим из изображения и маркера ORIGIN и так же, как любая модель подлежит предварительной компоновке. Только делается это не через Make Device, а через Make Simbol. Эта опция отсутствует в верхнем и боковых тулбарах и доступна только через меню правой кнопки мыши (Рис. 4).
Соответственно, раз мы создаем символ через Make Simbol, то мы можем применить к нему и «разборку на запчасти», т.е. опцию Decompose. Вот тогда-то мы и увидим отдельно графику и отдельно маркеры (Рис. 5).
На что здесь хотелось бы обратить ваше внимание. Если выделить разобранный символ сегмента вместе с маркером и переместить на разобранное графическое изображение компонента так, чтобы маркеры сегмента и всего компонента совпали, то мы увидим, что и сегмент окажется точно на том месте, где он расположен на изображении компонента. Вот для этого и служит маркер ORIGIN в символе. Он точно позиционирует графическое изображение символа на изображении всего компонента в момент симуляции. Если не соблюдать этого простого, но очень строгого правила привязки, то при запуске симуляции сегменты вашего активного компонента будут съезжать относительно основного изображения или хаотично прыгать по экрану. Это первый признак того, что вы допустили ошибку при компоновке графических символов.
Теперь разберем состав и нумерацию графических символов на примере все того же семисегментника 7SEG-COM-ANODE. Если внимательно глянуть в селектор на рисунке 2, то можно заметить некоторую закономерность. Все символы (сегменты) имеют в начале имени аббревиатуру 7SEG. Совсем не обязательно привязывать данную часть именно к назначению нашего компонента. С тем же успехом, наши символы-сегменты могли бы именоваться и ABC и 123A и вообще так, как подсказывает ваша фантазия. Тут главное, чтобы у всех символов, принадлежащих одному компоненту, эта часть наименования совпадала. Кроме того, настоятельно рекомендую использовать только латинские символы и цифры и не пользоваться спецсимволами и знаками препинания. В частности, знак подчеркивания в наименовании символа служит для разделения частей имени и номера, и применение его в других местах приведет к неработоспособности модели. За начальным именем через знак подчеркивания следует номер графического символа. Так как мы разбили семисегментный индикатор, то и таких номеров у нас будет семь, начиная с нулевого и заканчивая шестым. Для каждого символа сегмента в данной модели определено два состояния –погасший и светящийся. Эти состояния указаны через еще один знак подчеркивания. Погашенному состоянию соответствует цифра 0, а светящемуся – 1. Таким образом, полное наименование символа для погашенного сегмента «a» будет 7SEG_0_0, а для засвеченного 7SEG_0_1, а, например, для сегмента «d» (нижний горизонтальный) соответственно 7SEG_3_0 и 7SEG_3_1. Отдельно стоит остановиться на символе 7SEG_С. Если выделить его в селекторе, то в окне предпросмотра мы увидим, что он состоит из основного графического изображения – «тела» компонента и маркера ORIGIN. Он является базовым, как бы подложкой для наших символов-сегментов во время симуляции и на его фоне мы и будем наблюдать изменение состояния наших сегментов на экране. Для модели 7SEG-COM-ANODE он представляет из себя базовый прямоугольник с маркером ORIGIN (Рис. 6).
На рисунке 6 представлены все символы, входящие в модель 7SEG-COM-ANODE в «разобранном» (Decompose) виде. Я специально их «разобрал» в поле проекта, чтобы видно было положение маркера ORIGIN и смещение самого изображения сегмента относительно этого маркера. Еще раз подчеркну, что поскольку в данном случае мы имеем дело с так называемым Bitwise индикатором, то для каждого сегмента определена группа из двух символов неактивный (в конце символ 0) и активный (в конце символ 1). Термин Bitwise дословно означает «зависимый от бита». В данном случае текущее состояние символа 7SEG_х (где x номер символа) зависит от логического состояния на определенной ножке (pin) модели – выводы A, B … G. Для модели с общим анодом это означает, что если там находится логический ноль, то сегмент должен светиться – отображается символ 7SEG_х_1, если на выводе логическая единица – сегмент не светится – отображается 7SEG_х_0. Здесь мы имеем дело с цифровым типом индикации (хотя позже я покажу, что на самом деле и не совсем цифровым), но символы не обязательно могут иметь только два вида. Давайте для примера «разберем на запчасти» модель обычного светодиода LED_GREEN. Этот пример с комментариями представлен в проекте LED.DSN вложения. Попутно хочу дать полезный совет. Проводя различные исследования с активными элементами в ISIS, старайтесь не увлекаться «разборкой» нескольких моделей в одном проекте. Иначе селектор символов станет похож на отхожее место роты солдат в полевом лагере. Дерьма много, а где чье – непонятно. А в ряде случаев может оказаться, что символы одной модели имеют то же имя и заменят символы другой.
На рисунке 7 представлены символы входящие в модель LED_GREEN. Как видим, здесь в нумерации используется только одна цифра – номер символа от 0 до 7. Соответственно и символы имеют наименование LED_GREEN_0 – полностью погашенный светодиод, LED_GREEN_1 – слегка подсвеченный и, наконец, LED_GREEN_7 – полностью светящийся.
Всего таких состояний в обычных активных индикаторах может быть 32 (нумерация от 0 до 31). На это тоже прошу обратить особое внимание. Это относится и к Bitwise индикаторам, но только в том случае, если мы не используем специализированные DLL-библиотеки для их создания. Там суммарное количество элементов определяется самой применяемой DLL и об этом речь пойдет позже.
В модели LED_GREEN сами символы имеют более сложную структуру из нескольких графических элементов и маркера ORIGIN. На рисунке 8 представлен «декомпозированный» символ LED_GREEN_7. Справа на рисунке все составляющие символа с указанием того в каком режиме рисуется данный элемент.
Как видим, здесь мы имеем дело с более сложным по наличию графических элементов символом. И снова хочу заострить ваше внимание на этой графике, поскольку при создании таких элементов легко можно допустить характерную ошибку. Связана она с расположением графических элементов «в глубину» экрана. ISIS имеет только две опции, расположенные в верхнем меню Edit:
Send to back (CTRL+B) – отправить элемент на задний план.
Bring to front (CTRL+F) – выдвинуть элемент вперед.
Этими опциями надо умело пользоваться, иначе вы рискуете получить при создании символа (да и компонента тоже) «пропадающие» с экрана элементы графики. В случае символа светодиода должны быть выдвинуты на передний план отрезки и светящийся треугольник. На самом заднем плане окажется маркер ORIGIN, расположенный в данном случае по центру символа.
На этом, пожалуй, можно закончить наше знакомство с особенностями создания графических символов для активных моделей. Настала пора позаботиться о том, где сохранить плоды наших «графических фантазий». И здесь разработчики программы позаботились о нас заранее, но об этом в следующем материале.
Еще одно небольшое замечание по вложению. Подсветка имени выводов моделей при сохранении проекта теряется, поэтому если Вы желаете видеть ее на экране, то включите ее самостоятельно либо в свойствах соответствующих pin (выводов), либо через PAT (что быстрее). В окне Sting PAT набираем NAME, ставим переключатели Action =› Show и Apply To =› All Objects, жмем OK и получаем нужное. Привыкайте работать «с удобствами».
Внимание. Начиная с этого раздела в OnLine версии имена архивов вложений как и в OffLine:
номер раздела – символ подчеркивания – номер параграфа. Соответственно здесь: 7_2.rar.
Рисунки 1, 2, 3.
Рисунки 4, 5, 6.
Рисунки 7, 8.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_1.gif
Просмотров: 439
Размер:	31.3 Кб
ID:	16175   Нажмите на изображение для увеличения
Название: Pic_2.gif
Просмотров: 368
Размер:	22.6 Кб
ID:	16176   Нажмите на изображение для увеличения
Название: Pic_3.gif
Просмотров: 340
Размер:	11.8 Кб
ID:	16177  

Нажмите на изображение для увеличения
Название: Pic_4.gif
Просмотров: 339
Размер:	13.9 Кб
ID:	16178   Нажмите на изображение для увеличения
Название: Pic_5.gif
Просмотров: 351
Размер:	10.5 Кб
ID:	16179   Нажмите на изображение для увеличения
Название: Pic_6.gif
Просмотров: 380
Размер:	117.2 Кб
ID:	16180  

Нажмите на изображение для увеличения
Название: Pic_7.gif
Просмотров: 385
Размер:	15.7 Кб
ID:	16181   Нажмите на изображение для увеличения
Название: Pic_8.gif
Просмотров: 368
Размер:	19.8 Кб
ID:	16182  
Вложения:
Тип файла: rar 7_2.rar (20.3 Кб, 914 просмотров)
Halex07 вне форума   Ответить с цитированием
Эти 16 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
120147 (11.01.2012), andrrev (24.06.2011), bozhko (26.12.2010), gladun5 (22.09.2014), hudoykl (16.03.2016), Ice.77 (08.06.2011), kittec (26.12.2010), Nik0lay (26.12.2010), parcshin (24.04.2011), ReLe1 (14.08.2011), sasha_1973 (19.09.2013), Tischon (21.01.2011), Traan (16.09.2013), valvlad (13.05.2011), vik64 (20.05.2011), ДимаК (21.06.2011)