Розміри на графіку в LabVIEW, Лабораторія Електронних Засобів Навчання (ЛЕСО)

Мене завжди дивувала відсутність можливості нанести розміри на графік у LabVIEW. Крім курсорів не зручного інструменту виділення якихось ділянок сигналу, а створенні вимірювальних приладів (хіба це одне із призначень пакета LabVIEW)? часто потрібно вказати амплітуду сигналу, розмах, позначити період, тривалість фронту, спаду та багато іншого. Йдеться про стрілки, як на малюнку нижче.

електронних

У LabVIEW у всіх стандартних графіків можна додати зображення фону. Є три шари. Пропоную скористатися цією можливістю та створити зручний віртуальний прилад (ВП, він же VI) для промальовування розмірних стрілок.

У ЄСКД досить жорстко прописані товщини ліній, пропорції стрілок, але в комп'ютерних додатках, де справу доводиться мати з піксельною графікою, доведеться хоч і з огляду на ГОСТ, але робити так, щоб виглядало передусім естетично. Тому всі пропорції та товщини будемо задавати в цілих значеннях пікселів. З ЕСКД почерпнемо, що для нанесення розмірів використовується власне розмірна лінія, обмежена стрілками та виносні лінії. Стрілки можуть розташовуватися як усередині виносних ліній, так і зовні:

розміри

Наш віртуальний прилад буде додавати розмірну стрілку із заданими параметрами на двовимірне зображення. Постараємося створити віртуальний прилад з найбільшою гнучкістю, зробивши його якомога універсальнішим. Однак слід передбачити для всіх параметрів такі значення за умовчанням, щоб VI було зручно використовувати, не задаючи всі параметри.

Що має вміти наш VI:

  1. Малювати на вхідне зображення (тип – 2D picture) розмірну лінію зі стрілками.
  2. Змінювати тип розмірної лінії: внутрішні чи зовнішні стрілки.
  3. Керуватидовжина розмірної лінії.
  4. Змінювати кут повороту (орієнтацію) розмірної лінії.
  5. Задавати координати початкової точки побудови та режим вирівнювання: початкова точка може бути крайньою лівою, крайньою правою або розташовуватися посередині.
  6. Встановлювати параметри лінії: товщина та стиль.

Я був неприємно здивований, коли зрозумів, який мізерний інструментарій для роботи з 2D малюнками надає стандартний (базовий) комплект LabVIEW. Де масштабування та обертання об'єктів? Де відображення основних базових примітивів? Не те, що їх зовсім немає, але хотілося б більшого.

електронних

Власне, для малювання стрілок можна використовувати Draw Line та Draw Multiple Lines. Обидва VI приймають на вхід зображення та доповнюють його результатом своєї роботи. Перша функція проводить лінію із заздалегідь встановленої точки (наприклад, за допомогою функції Move Pen) у вказану точку. На вхід цього VI подається координата кінцевої точки та тип лінії. До плюсів цього VI можна віднести, що він вміє працювати з відносними координатами (термінал вибору "absolute coordinates?"), в цьому режимі задаємо прирост по координатах X і Y. Істотний мінус - кожен відрізок будується окремим викликом цієї функції. На вхід приладу "Draw Multiple Lines" подається масив координат точок, якими будується ламана. Також як у "Draw Line" можна задати тип та колір лінії. Однак побудова у відносних координатах неможлива, цей несуттєвий мінус можна обійти, якщо малювати зображення щодо нульової точки, а потім зрушити його у потрібне місце.

Для побудови використовуватимемо функцію "Draw Multiple Lines". Отже, нам потрібно встановити масив координат вершин ламаної. Звичайно такий масив можна задати "вручну" у вигляді набору магічних констант, але для того, щобзробити гнучку настройку відображення стрілок постараємося створити такий масив параметрично. Проте все ж таки піду на компроміс із внутрішнім перфекціоністом і дозволю собі залишити розмір самої стрілочки, що не налаштовується. Створимо базове зображення, що складається з двох відрізків на малюнку нижче за координату точок. Традиційно, перша цифра – це координата Х, друга – Y. Однак слід врахувати, що Х збільшується вправо, а 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, для цього до всіх координат X додаємо параметр DimLen. Після маніпуляцій об'єднуємо масиви:

електронних

Якщо ж праву стрілку спочатку інвертувати, і потім змістити, а ліву залишити без зміни, то отримаємо інше відображення розмірів, що теж часто використовується. Раціонально вибір режиму відображення довірити зовнішньому сигналу, через селектор типу Enum.

графіку

Додамо можливість змінювати положення розмірної лінії. Як переміщати по площині я вже казав: достатньо додавати зміщення до потрібної координати. А ось із обертанням є певні складнощі. Я не знайшов готової функції в стандартному пакеті LabVIEW, але для тих, хто пам'ятає аналітичну геометрію (або вміє користуватися Вікіпедією), проблем виникнути не повинно. На площині власне обертання прямокутних декартових координатах щодо нульової точки виражається формулами:

де - кут повороту.

Таке перетворення робимо кожної точки. Для зручності кут повороту задаватимемо у градусах.

розміри

Для того, щоб створити VI, яким було б зручно користуватися, постараємося зменшити кількість вхідних параметрів, об'єднавши їх у структуру.

розміри

Контакти вводу-виводу на сполучній панелі розташовуємо таким чином, щоб було зручно підключати дроти VI верхнього рівня. Вибираємо стандартний шаблон 4х2х2х4 – 4 термінали зліва, 4 праворуч і по два зверху та знизу – разом, 12 контактів. Маємо вхідні дані (2D Picture In) навпроти результату з обробки (2D Picture Out). У мене вийшло так:

І на завершення, віртуальний прилад і простий приклад його використання можна скачати нижче.