Программирование в NI Labview
LabVIEW > Модульное программирование

Модульное программирование

Мощь LabVIEW скрывается в иерархической структуре VI. Создав VI, вы можете использовать его потом в блок-схеме другого VI. Количество ступеней в иерархии неограничено. Использование модульного подхода позволяет управлять изменениями в коде и отлаживать программы легко и непринужденно:)

VI находящийся внутри друго VI называет SubVI (подпрограмма, в общем). При двойном щелчке на SubVI открывается его лицевая панель, а не диалоговое окно с опциями. На лицевой панели содержатся индикаторы и регуляторы обычного вида. Внутри блок-схемы содержатся терминалы, функции и связи тоже совершенно обычные, как в простом VI. Вся фишка находится в верхнем правом углу, в котором расположен значек VI. Кстати, именно этот значек показывается на блок-схеме, когда вы вставляете туда другой VI.

Значек  и панель коннекторов (Icon and Connector Pane)

 После того, как вы закончите создание лицевой панели и блок-схемы, самое время заняться  значком и панелью коннекторов. Значек находится в верхнем правом углу. Если сделать двойной щелчок по нему, откроется графический редактор, в котором можно нарисовать любую картинку для своей программы. Это нужно делать обязательно, если затем предполагается использовать этот VI в качестве subVI.

 Если нажать на значек правой кнопкой мыши и выбрать "Show connectors" значек примет примерно такой вид, как слева. Каждый коннектор отвечает одному из регуляторов или индикаторов на лицевой панели. Если проводить аналогию с обычными текстовыми языками программирования, то это - параметры функции. Чтобы соединить коннектор с объектом на лицевой панели, щелкните левой кнопкой мыши по нему, а затем по нужному объекту.

Рассмотрим пример:

В этой программе встречаются два совершенно одинаковых участка кода, поэтому будет логично сделать функцию (SubVI), выполняющую данный код - это сделает основную программу более легко читаемой. А представьте, что одна и та же функция выполняется не два, а десять раз? Итак, "спрятав" повторяющийся кусок в отдельный VI, получим:

Гораздо лучше! Мой совет - всегда, где только можно, старайтесь программировать модульно. А иначе получатся жуткие неструктурированные простыни формата А2, в которых даже сам программер не разберется, и отлаживать такое очень трудно:)

И еще раз, для закрепления, аналогия с обычным текстовым языком программирования:

  

function average (in1, in2, out)
     {
     out = (in1 + in2)/2.0;
     }

Это код SubVI - просто функция.

 


    main
     {
     average (point1, point2, pointavg)
     }

А это вызов этой функции из основной программы.

Ссылки: