Построение СМО в LabVIEW




 

Создание программы начните с окна редактирования диаграмм. Создайте прибор для инициализации очереди. Для этого на функциональной панели необходимо выбрать Programming>Synchronization>Queue Operation>Obtain Queue. Затем из Tools Palette выберите Connect Wire (катушка) и кликните правой кнопкой мыши на верхний вход прибора (max queue size), далее в появившемся контекстном меню выберите пункт create>control. Этот управляющий элемент также появится на интерфейсной панели, с помощью него будет задаваться количество пациентов, поступающих в поликлинику в день/час. Необходимо задать имя очереди. Для этого кликните правой кнопкой мыши на вход прибора name, затем выберите пункт создания константы create>constant, и в появившемся окошке введите имя очереди, например, 1. Также необходимо задать тип данных элемента - тип данных, которые должна содержать очередь. Для этого выберите Programming>Numeric>Numeric Constant (по умолчанию стоит «0»)и подключите его к входу element data type. У Вас должен получиться прибор, как показан на рис. 11.

 

Рис. 11. Инициализация очереди

 

Очередь инициализирована. Далее необходимо определить порядок становления пациентов в очередь. Установите прибор Programming>Synchronization>Queue Operation>Enqueue Element и с помощью катушки соедините выходы queue out и error out из прибора Obtain queue к соответствующим входам прибора Enqueue Element. Так как пациент не один, необходима циклическая работа программы. Выберите из функциональной панели programming>structures>For Loop и выделите с помощью левой кнопки мыши прибор Enqueue Element. Чтобы пациенты становились в очередь по одному, перетяните «увеличение на 1» Programming>Numeric>increment. К входу x подключите значок «итерация цикла», а выход (x+1) пиктограммы подключите к входу Element прибора Enqueue Element. Пусть каждый пациент приходит в поликлинику через заданное время, например через 1 секунду. Для этого установите в цикл задержку. Выберите Programming>Timing>Wait (ms) и перетянитеданную иконку в цикл. Создайте для нее константу, соответствующую этой задержке. Для этого подведите указатель в виде катушки к левой части иконки, нажмите правую кнопку мыши и выберете пункт создания константы Create>Constant. Чтобы количество итераций цикла было равно количеству пациентов, прибывающих в поликлинику, соедините выход управляющего элемента Numeric Control с пиктограммой N, как показано на рис. 12.

 

Рис. 12. Добавление элементов в очередь

 

В поликлинике имеется регистратура, через которую проходит каждый пациент. Чтобы установить регистратуру, для начала установите цикл While Loop, programming>structures>While Loop. Чтобы прочитывать элементы из очереди, то есть обслуживать пациентов, поместите в цикл While Loop прибор Dequeue Element, Programming>Synchronization>Queue Operation>Dequeue Element. Чтобы видеть, сколько обслужено пациентов, создайте соответствующий индикатор для прибора Dequeue Element – правой кнопкой мыши щелкните на выходе приборе Element и выберите пункт constant>indicator. С помощью инструмента Edit Text из панели инструментов поменяйте имя индикатора на «Обслужено пациентов».Установите время обслуживания пациентов с помощью прибора задержки Wait (ms) и присваивания этому прибору константы с нужным временем. Нажмите правой кнопкой мыши на иконку условия выхода из цикла (красная пиктограмма в нижнем правом углу цикла) и в выпадающем меню выберите пункт создания константы, по умолчанию стоит F-«false», то есть цикл будет работать без остановки. Соедините только что созданный прибор с ранее созданной очередью, как показано на рис. 13.


Рис. 13. Чтение из очереди

 

Чтобы видеть, сколько пациентов в данный момент находятся в очереди, используйте прибор Get Queue Status, Programming>Synchronization>Queue Operation>Get Queue Status. Поместите его в цикл While Loop и соедините с очередью. Кликните правой кнопкой мыши на левый вход Return Elements? (F) прибора Get Queue Status и выберите пункт Create>Constant. Return Elements? – отображает, возвращены ли элементы в очередь. По умолчанию установлено значение false – функция не будет возвращать элементы в очередь. Чтобы поменять значение на trough, выберите инструмент Operate Value из панели инструментови щелкните левой кнопкой мыши на соответствующей пиктограмме. Для выходов Elements и # Elements in queue, которые находятся снизу уприбора Get Queue Status, создайте индикаторы, как показано на рис. 14.


Рис. 14. Количество элементов в очереди

 

После того, как пациент обслужился в регистратуре (получил номерок), он отправляется к врачу. Соответственно, к врачу формируется новая очередь. Аналогично первой, создайте вторую очередь и дайте ей имя, например, 2. Поместите прибор Enqueue Element в цикл While Loop с Dequeue Element. Подключите выход Element прибора Dequeue Element к входу Element прибора Enqueue Element – то есть пациенты, обслуженные регистратурой, становятся в очередь к врачу. Создайте цикл с Dequeue Element, такой же, как для первой очереди и подключите его ко второй очереди. Чтобы видеть, сколько пациентов находится в данный момент в очереди к врачу, создайте точно такой же цикл с Get Queue Status, как и в первой очереди, и подключите его ко второй очереди.

Чтобы время поступления пациентов в очередь и время обслуживания пациентов можно было устанавливать на интерфейсной панели, поменяйте constant у приборов задержки Wait (ms) на Control. Для этого кликните правой кнопкой мыши на константу и выберите Change to Control. Чтобы время задавалось в секундах, вставьте между управляющей пиктограммой и прибором Wait (ms) множитель (Programming>Numeric>Multiply) на 1000. В цикле с Dequeue Element необходима последовательность действий для правильной работы. Выберите Programming>Structure>Flat Sequence, поместите прибор Dequeue Element и прибор Wait (ms) внутрь Flat Sequence. Кликните на границе Flat Sequence правой кнопкой мыши, и выберите Add Frame и поместите во второй фрейм индикатор «обслужено пациентов». У Вас получится программа, как на рисунке 15.

 

Рис. 15. Модель СМО

 

На интерфейсной панели выделите индикатор Пациенты и растяните его вниз так, чтобы появилось несколько индикаторов. Кликните правой кнопкой мыши и выберите Visible Items>Unit Label. Для удобства восприятия на интерфейсной панели разместите управляющие элементы и индикаторы, относящиеся к регистратуре в одно окно, например, на панели управления выберите Controls>Modern>Decorations>Raised Frame, а относящиеся к врачу, в другое. В итоге должна получиться программа, как на рис.16.

Проверьте программу на работоспособность. Для этого установите время обслуживания пациентов в регистратуре и у врача, задайте необходимое количество пациентов и время пребывания пациента в очередь.

 

Рис. 16. Интерфейс программы.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-10-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: