Размери на графиката в LabVIEW, Лаборатория за електронни средства за обучение (LESO) СибГУТИ

Винаги съм бил изненадан от липсата на възможност за чертане на размери в LabVIEW. В допълнение към курсорите, не е удобен инструмент за подчертаване на някои участъци от сигнала, но при създаване на измервателни инструменти (не е ли това една от целите на пакета LabVIEW)? често трябва да посочите амплитудата на сигнала, диапазона, да посочите периода, продължителността на покачване, спад и много други. Говорим за стрелките, както е на фигурата по-долу.

графиката

В LabVIEW можете да добавите фоново изображение към всички стандартни диаграми. Има три слоя. Предлагам да се възползвам от тази възможност и да създам удобно виртуално устройство (VP, известно още като VI) за рисуване на размерни стрелки.

В ESKD дебелината на линиите, пропорциите на стрелките са доста строго предписани, но в компютърни приложения, където трябва да се справяте с пикселна графика, ще трябва, макар и с оглед на GOST, да го направите по начин, който ще изглежда предимно естетически. Следователно всички пропорции и дебелини ще бъдат зададени в стойности на цели пиксели. От ESKD научаваме, че действителната размерна линия, ограничена от стрелки и удължителни линии, се използва за оразмеряване. Стрелките могат да бъдат разположени както вътре в удължителните линии, така и отвън:

лаборатория

Нашият виртуален инструмент ще добави стрелка за размер с дадените параметри към 2D изображението. Ще се опитаме да създадем виртуално устройство с най-голяма гъвкавост, правейки го възможно най-гъвкаво. Трябва обаче да предоставите стойности по подразбиране за всички параметри, така че да е удобно да използвате VI, без да посочвате всички параметри.

Какво трябва да може да прави нашият VI:

  1. Начертайте върху входното изображение (тип - 2D картина) размерна линия със стрелки.
  2. Променете типа на размерната линия: вътрешни или външни стрелки.
  3. Управлявайтедължина на размерната линия.
  4. Променете ъгъла на завъртане (ориентацията) на размерната линия.
  5. Задайте координатите на началната точка на конструкцията и режима на подравняване: началната точка може да бъде най-лява, най-дясна или разположена в средата.
  6. Задайте параметри на линията: дебелина и стил.

Бях неприятно изненадан, когато разбрах какви оскъдни инструменти за работа с 2D чертежи предоставя стандартният (основен) пакет LabVIEW. Къде е мащабирането и въртенето на обектите? Къде е изобразяването на основните базови примитиви? Не че изобщо ги няма, но ми се иска повече.

labview

Всъщност можете да използвате Draw Line и Draw Multiple Lines, за да рисувате стрелки. И двата VI приемат изображение като вход и го допълват с резултата от тяхната работа. Първата функция чертае линия от предварително определена точка (например с помощта на функцията Move Pen) до определена точка. Входът за този VI е координатата на крайната точка и типа линия. Предимствата на този VI включват, че може да работи с относителни координати (терминалът за избор на „абсолютни координати?“), в този режим задаваме увеличението на координатите X и Y. Съществен недостатък е, че всеки сегмент се изгражда чрез отделно извикване на тази функция. Входът на устройството "Изчертаване на няколко линии" се доставя с масив от координати на точки, които се използват за изграждане на полилиния. Също като "Начертайте линия" можете да зададете вида и цвета на линията. Но конструкцията в относителни координати е невъзможна, този незначителен минус може да бъде заобиколен, като се начертае изображението спрямо нулевата точка и след това се премести на желаното място.

За конструкцията ще използваме функцията "Начертайте няколко линии". И така, трябва да зададем масив от координати на върха на полилиния. Разбира се, такъв масив може да бъде определен "ръчно" като набор от магически константи, но за даза да направим гъвкави настройки за показване на стрелки, ще се опитаме да създадем такъв масив параметрично. Все пак ще направя компромис с вътрешния перфекционист и ще си позволя да оставя размера на самата стрелка без възможност за персонализиране. Ще създам базово изображение, състоящо се от два сегмента на фигурата по-долу, координатите на точките. Традиционно първата цифра е координатата X, втората е Y. Трябва обаче да се отбележи, че X се увеличава надясно, а Y се спуска надолу, освен това произходът на координатите се намира в горния ляв ъгъл на картината, така че всички точки с отрицателни координати излизат отвъд границата на видимост и не се показват.

електронни

Пунктираните стрелки на фигурата показват посоката на изграждане. Въпреки че трябва да изградим само два сегмента и три точки, трябва да отразим пет прехода в масива: (0, 0) → (-5, 3) → (0, 0) → (-5, -3) → (0, 0).

labview

Един прост VI ще покаже какво се е случило:

За да влезе отметката във видимата област, трябваше да я преместя с 10 пиксела в X и Y.

Нека добавим удължителни линии и оразмерителна линия към стрелката. Дължината на удължителните линии ще бъде зададена от параметъра SerifLen, дължината на основната линия от параметъра ExtLen.

размери

Три елемента на масива са необходими за конструиране на удължителни линии и два за конструиране на размерна линия. Нека свържем масивите с помощта на функцията Build Array, използвайки режима "Concatenate Inputs" - избран в контекстното меню.

размери

Страхотен. Имаме персонализирана стрела. Сега, използвайки го, можем да получим изображение на размерни линии. Нека започнем с най-простото: създайте две стрелки на разстояние DimLen (от английския Dimension Len) и ги свържете с линия. Лявата стрелка трябва да бъде разгърната, това се постига чрез умножаване на всички X координати по -1, но тъй като нашата стрелка е симетрична по отношение наоста X, тогава за простота можете да умножите целия масив по -1. Дясната стрелка трябва само да се измести с разстоянието DimLen, за това добавяме параметъра DimLen към всички X координати. След манипулации комбинираме масивите:

графиката

Ако дясната стрелка първо се обърне и след това се измести, а лявата стрелка се остави непроменена, тогава получаваме друг размер на дисплея, също често използван. Би било рационално да поверите избора на режим на показване на външен сигнал чрез селектора на типа Enum.

размери

Нека добавим възможността за промяна на позицията на размерната линия. Вече казах как да се движите по равнината: достатъчно е да добавите отместване към необходимата координата. Но с ротацията има определени трудности. Не намерих готова функция в стандартния пакет LabVIEW, но за тези, които помнят аналитичната геометрия (или знаят как да използват Wikipedia), не би трябвало да има проблеми. В равнина правилното въртене в правоъгълни декартови координати спрямо нулевата точка се изразява с формулите:

където φ е ъгълът на завъртане.

Такава трансформация се прави за всяка точка. За удобство ъгълът на въртене ще бъде зададен в градуси.

labview

За да създадем VI, който би бил удобен за използване, ще се опитаме да намалим броя на входните параметри, като ги комбинираме в структура.

електронни

Подреждаме I/O щифтовете на панела на съединителя по такъв начин, че да е удобно да свържете проводниците към VI от горното ниво. Избираме стандартен шаблон 4x2x2x4 - 4 терминала отляво, 4 отдясно и два отгоре и отдолу - общо 12 контакта. Поставяме входните данни (2D Picture In) срещу резултата от обработката (2D Picture Out). Получих го така:

И накрая, полученият виртуален инструмент и прост пример за използването му могат да бъдат изтеглени по-долу.