Выполнение модулей

Среда IWS представляет собой SCADA систему, формирующуюся набором одновременно выполняющихся модулей. Основываясь на принципе многозадачности, каждый выполняемый модуль (Драйвер, Задача и т.д.) существует в виде потока операционной системы. Захват процессора потоком контролируется операционной системой, а их переключение происходит автоматически. Существует ложное суждение о том, что работа программы контроллера это и есть работа SCADA системы. Работа программы контроллера представляет собой простой цикл:



В отличие от приведённого цикла, SCADA система располагает несколькими одновременно выполняющимися модулями, большинство из которых производят как операции чтения, так и операции записи. Поскольку в SCADA системе постоянно возникают процедуры изменения данных, к ней невозможно применить выше расположенную диаграмму.


Среда является владельцем только одного процесса: Studio Manager.exe. Когда приложение запускается на выполнение, этот процесс активирует базу тегов приложения и все его модули. При этом можно определить, какие именно из имеющихся модулей должны запускаться сразу (например, окно выполнения и драйверы).


Каждый процесс обладает списком потоков, выполняемых операционной системой. В частности, в режиме выполнения именно процесс активирует и дезактивирует потоки в соответствии со своими алгоритмами работы. Также каждый поток при своём создании получает номер приоритета. Операционная система непрерывно отслеживает активные потоки, и выполняет их в последовательности, согласно приоритету. Потоки, обладающие наивысшим приоритетом, выполняются первыми. Если в системе находятся потоки с наивысшим приоритетом, то выполнение потоком с более низким приоритетом откладывается. Если в системе находятся несколько потоков с одинаковыми приоритетами, и нет потоков с более высоким приоритетом, они выполняются по описанному ниже правилу.


Заметим: Все потоки среды наделяются номером приоритета 7, что соответствует THREAD_PRIORITY_NORMAL (нормальный приоритет потока). Этим приоритетом обладает большинство программ.

Потоки программ реального времени (такие как SoftPLC и Device Drivers) обладают наивысшим приоритетом. Однако существует механизм прерывания потоков наивысшего приоритета во избежание блокирования выполнения потоков с низким приоритетом.

Для последовательных драйверов среда использует библиотеку UNICOMM.DLL. Эта библиотека содержит функцию замораживания потоков наивысшего приоритета при отсутствии на последовательной шине поступления данных. Как только среда обнаруживает присутствие пересылаемых данных на шине, она активирует потоки наивысшего приоритета и перемещает данные из своего буфера в буфер потока, где они становятся доступными для чтения драйвером. Это единственный поток наивысшего приоритета среды.


Если постоянно поддерживать активное состояние потоков, то загрузка CPU возрастёт до 100%, что значительно скажется на производительности, а это стоит избегать. Каждая программа поддерживает механизмы принудительного замораживания потоков.


Среди механизмов замораживания потоков IWS находятся следующие:





ВНИМАНИЕ:

Не рекомендуется изменять установленные по умолчанию значения этих параметров без особой необходимости. Необдуманные значения параметров могут вызвать неисправность системы и/или затормаживать выполнение некоторых задач.

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


Чтобы изменить значения этих параметров нужно:


  1. Открыть папку \BIN установочной директории среды (C:\Program Files\installation folder\Bin).
  2. Открыть файл Settings.INI с помощью Microsoft® Notepad.

Ниже приведён список параметров файла и из значения по умолчанию (в миллисекундах).


[Period]

DBSpy=1000

UniDDEClient=200

UniDDE=200

Driver=20

LogWin=100

UniODBCRT=100

OPCClient=20

OPCServer=20

TCPClient=100

TCPServer=100

Viewer=50

  

[TimeSlice]

UniDDEClient=100

Driver=10

OPCClient=10

OPCServer=10

TCPClient=200

TCPServer=200

Viewer=200


Заметим: Список может отражать не все параметры программы Settings.INI, однако это не означает, то эти параметры вообще не присутствуют и  не используются средой.


  1. Сохранить изменения в файле.


Ниже на рисунке иллюстрируется выполнение потока (например, такого как окно выполнения приложения).



На рисунке:



Рассмотрим пример подробнее. Каждые 50 мс среда формирует сообщение Period. При формировании сообщения, поток переводится в активное состояние и находится в нём до тех пор, пока не истечёт время TimeSlice (со стороны среды). Как только время истекло, поток замораживается до формирования нового сообщения Period.


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


Как только операционная система приступает к выполнению потока, начинается обратный отсчёт временного интервала TimeSlice (со стороны операционной системы). Поток выполняется в течение 20 мс. Как только 20 мс истекли, ОС автоматически переключается на выполнение другого потока (например, драйвера), и т.д.


В только что описанном примере TimeSlice среда составляет 30 мс, что не позволяет операционной системе дважды приступить к выполнению потока в течение этого интервала. Однако, если увеличить TimeSlice среды, возникает вероятность выполнения потока более одного раза за этот период.


Следующий пример описывает такую ситуацию.



На рисунке:



В этом примере есть вариант выполнения потока дважды за время TimeSlice среды. Как только он истёк, ОС прервала его выполнение. Однако, не смотря на увеличение временного интервала среды и периода посылки сообщения Period, операционная система всё равно не будет выполнять поток дольше 20 мс.


Если операционная система не выполняет поток окна выполнения приложения, CPU может находиться в состоянии простоя или выполнять любой другой поток. Нужно помнить, что параметры Period и TimeSlice среды существуют для предотвращения абсолютной загрузки системы из-за состояния активности всех потоков.


В процессе выполнения, каждый поток должен «умёть» определять своё выполнение в зависимости от адресованных ему сообщений. Рассмотрим пример: окно выполнения приложения отвечает за обновление всех объектов экрана. Если потоку окна не адресовано ни одно сообщение, поток снимает себя с выполнения, отдавая тем самым управление операционной системе. ОС немедленно переключается на выполнение другого потока. Другими словами, поток должен обладать инструментом собственного прерывания, даже если наступила его очередь выполнения.


Заметим: Модули Database Spy (окно наблюдения тегов), DDE Server (DDE сервер), LogWin (окно вывода событий), ODBC не подчиняются правилу TimeSlice параметра среды. Потоки дезактивируются по окончанию работы на ответ сообщения, а активируются по сообщению Period и наличию обращённого к ним сообщения.


Исключением из вышеописанного принципа работы потоков являются фоновые задачи. Механизм их работы описан в следующей теме.


Created with the Freeware Edition of HelpNDoc: Full featured multi-format Help generator