ISaGRAF. Version 3.4

         

Работа ISaGRAF в однозадачном режиме: iso


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

Однозадачная реализация в основном ориентирована на слабую аппаратуру (дешевые платы и ПК, ориентированные на MS-DOS) или на разработку первого прототипа системы при портировании на новую платформу. Многозадачная реализация более предпочтительна.

Задача ISaGRAF не нарушает работу фоновых процессов и программ обработки прерываний.

        Регистрация подчиненных

Целевая задача ISaGRAF характеризуется номером подчиненного. Он может принимать значения от 1 до 255 за исключением 13 ($0D). Этот номер используется в протоколе связи. Он нужен для того, чтобы различать целевые задачи друг от друга, когда запущено несколько задач. Поэтому перед запуском целевых задач следует их регистрировать. Для этого предназначена функция isa_register_slave()

uchar isa_register_slave 

(

uchar slave   /* /* Номер подчиненного */

)

Описание:

Регистрирует новый подчиненный в системе с несколькими целевыми задачами.

Возвращаемое значение:

0 в случае успеха, BAD_RET - в случае ошибок.

        Каталог для хранения резервных файлов приложения

Глобальная переменная TSK_FUNIT(char *) может содержать название каталога, в котором приложение будет хранить файлы резервных копий. Целевая задача ISaGRAF использует стандартные вызовы fopen, fread, fwrite, fclose для работы с файлами.

Значение по умолчанию - пустая строка (“”), указывающая, что каталог не назначен.



Пример:

TSK_FUNIT = "host name:/C:/ISaGRAF/target/apl/"

Назначает каталог ISaGRAF\target\apl в корне C: на хост-ПК с именем host_name для файлов резервных копий. Важно не забыть последний слеш, иначе файлы будут открываться в каталоге ISaGRAF\target и иметь в имени префикс apl.

При необходимости эта переменная может иметь различные значения для различных целевых задач.
Дальнейшие детали о файлах резервных копий содержатся в разделе Отличительные особенности / Резервирование приложения.

        Управление окончанием цикла

Переменная TSK_NBTCKSCHED (uint32) имеет значение задержки в тиках, которую целевая задача ISaGRAF использует в конце цикла. Значение по умолчанию - 0 (один и тот же приоритет у всех задач). При необходимости для каждой целевой задачи это значение может быть своим.

Дальнейшие детали содержатся в разделе Отличительные особенности / Продолжительность цикла.

           Запуск целевой задачи ISaGRAF

После того как установлены переменные среды, на заключительном шаге с помощью вызова isa_main запускается целевая задача ISaGRAF:

uchar isa_main

(

uchar slave,        /* Номер подчиненного*/

char *com            /* Имя последовательного устройства*/

)

Описание:

Стартует целевую задачу ISaGRAF.

Возвращаемое значение:

Возвращает ненулевое значение в случае возникновения ошибок.

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

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

        Пример


Данный пример показывает как запустить однозадачную реализацию целевой задачи ISaGRAF с номером подчиненного 1 и последовательным устройством связи /tyCo/1.

Текущим каталогом является тот, где установлена целевая задача.

Загрузить модуль isassr.o

ld < RELS/isassr.o

Загрузить модуль isa.o

ld < CMDS/isa.o

Конфигурирование последовательной связи

ISAMOD ("/tyCo/1", 19200)

Частота системных часов

CLKRATE = sysClkRateGet ()

Регистрация подчиненного

isa_register_slave (1)

Каталог для резервирования (можно опустить, ибо используется умолчание)

TSK_FUNIT = ""

Управление в конце цикла (можно опустить, ибо используется умолчание)

TSK_NBTCKSCHED = 0

Запуск целевой задачи ISaGRAF

sp (isa_main, 1, "/tyCo/1")


Содержание раздела