ISaGRAF. Version 3.4

         

Операторы IL


Следующая таблица  представляет стандартные операторы языка IL:

Оператор

Модификатор

Операнд

Описание

LD

N

переменная, константа

Загружает операнд



ST

N

переменная

Запоминает текущий результат

S

R

BOO переменная

BOO переменная

Устанавливает на TRUE

Сбрасывает на FALSE

AND

&

OR

XOR

N   (

N   (

N   (

N   (

BOO

BOO

BOO

BOO

логическое И

логическое И

логическое ИЛИ

исключающее ИЛИ

ADD

SUB

MUL

DIV

(

(

(

(

переменная, константа

переменная, константа

переменная, константа

переменная, константа

Сложение

Вычитание

Умножение

Деление

GT

GE

EQ

LE

LT

NE

(

(

(

(

(

(

переменная, константа

переменная, константа

переменная, константа

переменная, константа

переменная, константа

переменная, константа

Проверить: >

Проверить: >=

Проверить: =

Проверить: <=

Проверить: <

Проверить: <>

CAL

JMP

RET

C   N

C   N

C   N

Экземпляр функционального блока

имя

метка

Вызов функционального блока

Прыжок на метку

Возврат из подпрограммы

)

Выполнить задержанную операцию

В следующей главе описаны операторы, которые являются специфическими для языка IL, другие стандартные операторы можно найти в главе “Стандартные операторы, функциональные блоки и функции”.

        Оператор LD

Операция:                  загружает значение в текущий результат

Допустимые модификаторы:         N

Операнд:                    константа, внутренняя, входная или выходная переменная

                                     

Пример:

(* ПРИМЕР LD ОПЕРАЦИЙ *)

LDex:                LD              false           (* результат := FALSE boolean constant *)

                         LD              true             (*результат := TRUE boolean constant *)

                         LD              123             (*результат := integer constant *)

                         LD              123.1          (*результат := real constant *)


                         LD              t#3ms         (*результат := time constant *)

                         LD              boo_var1    (*результат := boolean variable *)

                         LD              ana_var1    (*результат := analog variable *)

                         LD              tmr_var1     (*результат := timer variable *)

                         LDN            boo_var2    (*результат := NOT ( boolean variable ) *)

        Оператор ST

Операция:                  запоминает текущий результат в переменной

                                      Текущий результат этим оператором не изменяется

Допустимые модификаторы:         N

Операнд:                    внутренняя или выходная переменная

Пример:

                                            (* ПРИМЕР ST ОПЕРАЦИЙ *)

STboo:              LD              false

                         ST              boo_var1    (* boo_var1 := FALSE *)

                         STN            boo_var2    (* boo_var2 := TRUE *)

STana:              LD              123

                         ST              ana_var1    (* ana_var1 := 123 *)

STtmr:               LD              t#12s

                         ST              tmr_var1     (* tmr_var1 := t#12s *)

        Оператор S

Операция:                  запоминает TRUE в булевской переменной, если текущий результат имеет значение TRUE. Никаких операций не выполняется, если текущий результат равен FALSE. Текущий результат не модифицируется.

Допустимые модификаторы:         (нет)

Операнд:                    внутренняя или выходная булевская переменная

Пример:

                                            (* ПРИМЕР S ОПЕРАЦИЙ *)

SETex:              LD              true             (*текущий результат := TRUE *)

                         S                boo_var1    (* boo_var1 := TRUE *)

                                                               (*текущий результат не изменяется *)

                         LD              false           (*текущий результат := FALSE *)



                         S                boo_var1    (* ничего не делать - boo_var1 не изменяется *)

        Оператор R

Операция:                  запоминает FALSE в булевской переменной если текущий результат имеет значение TRUE. Никаких операций не выполняется если текущий результат равен FALSE. Текущий результат не модифицируется.

Допустимые модификаторы:         (нет)

Операнд:                    внутренняя или выходная булевская переменная

Пример:

                                                               (* ПРИМЕР R ОПЕРАЦИЙ *)

RESETex:          LD              true             (*текущий результат:= TRUE *)

                         R                boo_var1    (* boo_var1 := FALSE *)

                                                               (*текущий результат не изменяется *)

                         ST              boo_var2    (* boo_var2 := TRUE *)

                         LD              false           (*текущий результат:= FALSE *)

                         R                boo_var1    (*ничего не делать - boo_var1 не изменяется *)

        Оператор JMP

Операция:                  прыгает на указанную метку

Допустимые модификаторы:         C N

Операнд:                    метка определенная в той же IL программе

Пример:

(* следующий пример проверяет значение аналогового селектора  (0 или 1 или 2)                                    *)

(* чтобы установить один из 3 булевских выходов. Проверка  "равно 0" делается                                   *)

(* оператором JMPC                                          *)

JMPex:              LD              selector      (* selector is 0 or 1 or 2 *)

                         BOO                              (* превращение в boolean *)

                         JMPC          test1           (* if selector = 0 then *)

                         LD              true

                         ST              bo0             (* bo0 := true *)

                         JMP            JMPend       (* конец программы*)



test1:                LD              selector

                         SUB            1                 (* уменьшить selector: теперь 0 или 1 *)

                         BOO                              (* превращение в boolean *)

                         JMPC          test2           (* if selector = 0 then *)

                         LD              true

                         ST              bo1             (* bo1 := true *)

                         JMP            JMPend       (* конец программы*)

test2:                LD              true             (* последняя возможность *)

                         ST              bo2             (* bo2 := true *)

                         JMP            end:            (* конец  IL программы*)

        Оператор RET

Операция:                  заканчивает текущий список инструкций. Если IL последовательность - подпрограмма, то текущий результат возвращается в вызывающую подпрограмму.

Допустимые модификаторы:         C N

Операнд:                    (нет)

Пример:

(* следующий пример проверяет значение аналогового селектора  (0 или 1 или 2)                                    *)

(* чтобы установить один из 3 булевских выходов. Проверка  "равно 0" делается                                   *)

(* the JMPC operator                                                                                                                                              *)

JMPex:              LD              selector      (* selector равен 0 или 1 или 2 *)

                         BOO                              (* превращение в boolean *)

                         JMPC          test1           (* if selector = 0 then *)

                         LD              true

                         ST              bo0             (* bo0 := true *)

                         RET                               (* end - return 0 *)

                                                               (* уменьшить selector *)

test1:                LD              selector



                         SUB            1                 (* selector теперь 0 или 1 *)

                         BOO                              (* превращение в boolean *)

                         JMPC          test2           (* if selector = 0 then *)

                         LD              true

                         ST              bo1             (* bo1 := true *)

                         LD              1                 (* загрузить действительное значение selector *)

                         RET                               (* end - return 1 *)

                                                               (* последняя возможность *)

test2:                RETNC                           (* возвращает если selector содержит *)

                                                               (* неправильное значение *)

                         LD              true

                         ST              bo2             (* bo2 := true *)

                         LD              2                 (* загрузить действительное значение selector *)

                                                               (* конец - возврат 2 *)

        Оператор “)”

Операция:                  выполняет задержанную операцию. Задержанная операция обозначается “(“

Допустимые модификаторы:         (нет)

Операнд:                    (нет)

Пример:

(* Следующая программа использует задержанные операции: *)

(* res := a1 + (a2 * (a3 - a4) * a5) + a6; *)

Delayed:           LD              a1               (* result := a1; *)

                         ADD(          a2               (* задержанный ADD - result := a2; *)

                         MUL(          a3               (* задержанный MUL - result := a3; *)

                         SUB            a4               (* result := a3 - a4; *)

                         )                                    (*выполнить задержан. MUL-result:=a2*(a3-a4); *)

                         MUL            a5               (* result := a2 * (a3 - a4) * a5; *)



                         )                                    (* выполнить задержанный ADD *)

                                                               (* result := a1 + (a2 * (a3 - a4) * a5); *)

                         ADD           a6               (* result := a1 + (a2 * (a3 - a4) * a5) + a6; *)

                         ST              res              (*запомнить текущ. результат в переменной res *)

        Вызов подпрограмм или функций

Подпрограмма или функция ( написанная на любом из языков IL, ST, LD, FBD или “C”) вызывается из языка IL, используя имя в качестве оператора.

Операция:                  выполняет подпрограмму или функцию - значение возвращенное подпрограммой или функцией запоминается в текущем результате IL

Допустимые модификаторы:         (нет)

Операнд:                    Первый параметр должен быть запомнен в текущем результате перед вызов. Остальные параметры записываются в поле операнда через запятую

Пример:

(* Вызывающая программа: превращает аналоговое значение в временное *)

Main:                 LD                     bi0

SUBPRO           bi1,bi2  (*вызвать подпрограмму чтобы получить аналоговое значение *)

ST                     result    (* result := значение возвращенное подпрограммой *)

                         GT                    vmax          (*проверка переполнения *)

                         RETC                                   (*возврат по переполнению *)

                         LD                     result

                         MUL                  1000           (*превратить секунды в миллисекунды *)

                         TMR                                     (* превратить в таймер *)

                         ST                     tmval     (* запоминает превращенное значение в таймере*)

(* Вызванная подпрограмма 'SUBPRO' : вычисляет аналоговое значение *)

(* заданное как двоичное число трех булевских входов: in0, in1, in2 - три параметра подпрограммы*)

                         LD              in2             



                         ANA                              (* result = ana (in2); *)

                         MUL            2                 (* result := 2*ana (in2); *)

                         ST              temporary   (* temporary := result *)

                         LD              in1             

                         ANA

                         ADD           temporary   (* result := 2*ana (in2) + ana (in1); *)

                         MUL            2                 (* result := 4*ana (in2) + 2*ana (in1); *)

                         ST              temporary   (* temporary := result *)

                         LD              in0             

                         ANA

                         ADD           temporary   (* result := 4*ana (in2) + 2*ana (in1)+ana (in0); *)

                ST     SUBPRO     (* возвратить текущий результат в вызывающую программу*)

        Вызов функциональных блоков: оператор CAL

Операция:                  вызывает функциональный блок

Допустимые модификаторы:         C N

Операнд:                    Имя функционального блока. Входные параметры блока должны быть присвоены с помощью операторов LD/ST до вызова. Выходные параметры могут быть использованы.

                                     

Пример 1:

(* Вызов функционального блока SR : SR1 - экземпляр SR *)

LD                     auto_mode

AND                  start_cmd

ST                     SR1.set1

LD                     stop_cmd

ST                     SR1.reset

CAL                  SR1

LD                     SR1.Q1

ST                     command

(* FBD эквивалент : *)



Пример 2

(*Мы предполагаем, что R_TRIG1 - это экземпляр блока R_TRIG и CTU1 - это экземпляр блока CTU*)

LD                     command

ST                     R_TRIG1.clk

CAL                  R_TRIG1

LD                     R_TRIG1.Q

ST                     CTU1.cu

LDN                   auto_mode

ST                     CTU1.reset

LD                     100

ST                     CTU1.pv

CAL                  CTU1

LD                     CTU1.Q

ST                     overflow

LD                     CTU1.cv

ST                     result

(* FBD эквивалент : *)




Описание объектов


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

Имя................................. Имя переменной; первый символ должен быть буквой, остальные - буквы, цифры или символы подчёркивания.

Сетевой адрес............ Шестнадцатеричный сетевой адрес ( не является необходимым ). Переменная с ненулевым сетевым адресом может быть прослежена внешней системой.

Коммент........................ комментарий описания переменной

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

           Это описание полей для булевых переменных :

Атрибут......................... определяет, является переменная внутренней, константой, ввода/вывода

"False" строка.............. строка, используемая в качестве ложного значения во время отладки

"True" строка............... строка, используемая в качестве истинного значения во время отладки

Нач. знач. true.............. если эта опция установлена, то начальное значение истинно, иначе - ложно

           Это описание полей для целых или вещественных

аналоговых переменных :

Атрибут......................... определяет, является переменная внутренней, константой, ввода/вывода

Формат.......................... определяет целую или вещественную переменную. Формат может быть    выбран во время отладки.

Единицы....................... строка, используемая для определения физического цикла отладки

Преобраз...................... Имя таблицы или функции преобразования, присоединённой к переменной ( только для ввода/вывода )

Нач. знач........................ Начальное значение переменной. По умолчанию 0.

           Это описание полей для переменных времени

:

Атрибут......................... определяет, является переменная внутренней, константой


           Это описание полей для переменных типа сообщение :
Атрибут......................... определяет, является переменная внутренней, константой, ввода/вывода
Макс. длина................. максимальное количество символов, которое может храниться в строке сообщения
Нач. знач........................ Начальное значение переменной. Его длина не может превышать максимального количества символов. По умолчанию пустая строка.
           Это описание полей для макросов :
Имя................................. Имя, используемое в ST; первый символ должен быть буквой, остальные - буквы, цифры или символы подчёркивания.
Определ....................... Строка, подчиняющаяся правилам синтаксиса ST, которая заменяется макросом при компиляции. Пример : Name = PI-Equivalence = 3.1459
Коммент........................ Произвольный Комментарий для макроса
           Это описание остальных полей для реализаций функциональных блоков :
Имя................................. Имя экземпляра, используемое в ST; первый символ должен быть буквой, остальные - буквы, цифры или символы подчёркивания.
Тип................................. имя соответствующего функционального блока в библиотеке
Коммент........................ Произвольный Комментарий для функционального блока

Определение плат В/В


Меню “Редактор” содержит команды для определения выбранной платы (устанавливает ее параметры) и подключения переменных В/В к их каналам.

        Выбор типа плат В/В

Перед подключением переменных В/В к плате, должна быть введена идентификация платы. Библиотека предопределенных плат доступна на ISaGRAF workbench. Эта библиотека может быть скомпилирована одним или более поставщиками устройств В/В. Команда “Редактор / Установить плату/ оборудование”

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

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

        Удаление платы

Команда “Редактор / Очистить слот ” используется для удаления выбранной платы В/В. Если переменные уже подключены к соответствующим каналам, то они автоматически отключаются при освобождении разъема.

        Действительные платы и виртуальные платы

Команда “Редактор / Действительная /виртуальная плата”

устанавливает действительность выбранной платы или сложного оборудования. Следующие иконки используются в списке шасси для отображения действительности платы:

....................... реальная плата

....................... виртуальная плата

В действительном режиме переменные В/В напрямую соединены к соответствующим устройствам В/В. Операции ввода или вывода в программах приложений напрямую связаны с состояниями соответствующих входов или выходов существующих устройств В/В. В виртуальном режиме

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

        Технические замечания

Команда “Инструменты / Техническое замечание” отображает пользовательскую подсказку выбранной платы или сложного оборудования В/В. Техническое замечание написано поставщиком платы. Оно содержит всю информацию об управлении платой. Оно также описывает значение параметров платы.

        Удаление присоединенных переменных

Команда "Инструменты / Освободить каналы платы" отсоединяет все переменные В/В уже соединенные на выбранной плате.

        Определение комментариев для свободных каналов

Текст комментариев объявленной переменной В/В отображается с ее именем в списке платы. Так как ISaGRAF также позволяет использовать непосредственно представленные переменные (в процентной нотации), то  комментарии также могут быть введены для свободных каналов. Используйте команду «Инструменты / Установить комментарий канала» для ввода комментариев для текущего свободного канала выбранного в списке платы. Эта команда не может быть использована для смены комментария переменной В/В заданного в словаре проекта.


Определение ресурсов


                Команда “Ресурсы” меню “Опции” позволяет пользователю определять ресурсы. Ресурсы - это любые, определенные пользователем данные (конфигурация сети, установки оборудования …) любого формата (файл, список значений), которые должны быть соединены с генерируемым кодом, чтобы быть загруженными вместе на целевую PLC. Такие данные напрямую не управляются ядром ISaGRAF, и в основном предназначены для другого программного обеспечения, установленного на целевом PLC. Обратитесь к своему руководству по оборудованию для дальнейшей информации о доступных ресурсах.

        Файл определения ресурсов

                Ресурсы, определенные в “Файле определения ресурса ” сохраняются вместе с другими файлами проекта ISaGRAF. Это чисто текстовый файл в ASCII кодах, созданный Компилятором Ресурсов ISaGRAF. Этот компилятор автоматически запускается во время построения кодов приложения. Эта секция объясняет синтаксис этого файла. Файл определения ресурсов использует лексические правила языка ST. Комментарии, начинающиеся с (* и заканчивающиеся символами *), могут быть вставлены в любом месте текста. Строки разграничиваются одиночными апострофами. Обратитесь ко второй части этого руководства для большего объяснения лексических форматов, используемых для ввода числовых значений.

        Справочник по языку

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

ULONGDATA

Значение:     Определяет ресурс, который является списком целых значений. Значения сохраняются в получаемом коде как 32 битные целые. Значения сохраняются в порядке, указанном в файле определения ресурсов. Значения должны быть разделены запятыми. Имя ресурса не должно превышать 15 символов.

Синтаксис: ULONGDATA '<имя_ресурса>'

         BEGIN

           ...целевой_выбор...

           ...список переменных...

         END

Пример:  ULongData 'MYDATA'

         Begin

           ...

           0, -1, 100_000,     (* десятичные *)

           16#A0B1, 2#1011_0101 (*шестнадцатеричн,двоичные*)


         End

VARLIST

Значение:     Определяет ресурс, который является списком адресов переменных. Переменные идентифицируются своими именами в файле определения ресурсов. Адреса переменных сохраняются в получаемом коде как беззнаковые 16 битные целые. Адреса сохраняются в порядке, указанном в файле определения ресурсов. Переменные должны быть разделены запятыми. Имя ресурса не должно превышать 15 символов.

Синтаксис: VARLIST '<имя_ресурса>'

         BEGIN

           ...выбор_цели...

           ...список переменных...

         END

Пример:  VarList 'LIST'

         Begin

           ...

           Var100, MyParameter, Command, Alarm

         End

BINARYFILE

Значение:     Определяет ресурс Бинарный Файл. Исходные данные сохраняются в MS-DOS файле. Определение целевого ресурса завершается определением целевого имени. Конец строки символов не преобразуется Компилятором Ресурсов ISaGRAF. Имя ресурса не должно превышать 15 символов.

Синтаксис: BINARYFILE '<имя_ресурса>'

         BEGIN

           ...выбор_цели...

           FROM '<путь_источника>'

           TO '<путь_назначения>'

         END

Пример:  BinaryFile 'MYFILE'

         Begin

           ...

           From 'c:\user\config.bin'

           To '/dd/user/appl/config.dat'

         End

TEXTFILE

Значение:     Определяет ресурс Текстовый Файл. Исходные данные сохраняются в MS-DOS файле. Определение целевого ресурса завершается определением целевого имени. Конец строки символов преобразуется Компилятором Ресурсов ISaGRAF, в соответствии с соглашениями целевой головной системы. Имя ресурса не должно превышать 15

символов.

Синтаксис: TEXTFILE '<имя_ресурса>'

         BEGIN

           ...выбор_цели...

           FROM '<путь_источника>'

           TO '<путь_назначения>'

         END

Пример:  TextFile 'MYFILE'

         Begin

           ...

           From 'c:\user\config.bin'

           To '/dd/user/appl/config.dat'

         End

TARGET



Значение:     Определяет имя получаемых кодов, которые должны включать ресурс. Обратитесь к предшествующей секции (опции компилятора) для дальнейшей информации об управляемых целях. Оператор “Target” может появляться более, чем один раз в том же самом блоке ресурса для выбора нескольких целей. Этот оператор не может быть использован, если указан оператор “AnyTarget”.

Синтаксис: TARGET '<имя_цели>'

Пример:  BinaryFile 'MYFILE'

         Begin

           Target 'ISA86M'

           Target 'ISA68M'

           ...

         End

ANYTARGET

Значение:     Определяет то, что ресурс должен быть включен во все коды, построенные Генератором Кодов. Генератор Кодов ISaGRAF может производить несколько кодов назначения во время выполнения одной команды “Создать”. Этот оператор не может быть использован, если указан один или несколько операторов “Target”.

Синтаксис: ANYTARGET

Пример:  ULongData 'MYDATA'

         Begin

           AnyTarget

           ...

         End

FROM

Значение:     Определяет путь источника (на PC, где установлен ISaGRAF Workbench) ресурсов BinaryFile и TextFile. Символы, используемые для разделения компонентов пути (диск, каталог, префикс, суффикс) должны соответствовать соглашениям MS-DOS.

Синтаксис: FROM '<путь цели>'

Пример:  BinaryFile 'MYFILE'

         Begin

           ...

           From 'c:\user\config.dat'

           To '/dd/user/appl/config.dat'

         End

TO

Значение:     Определяет путь назначения (на системе назначения) ресурсов BinaryFile

и TextFile. Символы, используемые для разделения компонентов пути (диск, каталог, префикс, суффикс) должны соответствовать соглашениям системы назначения.

Синтаксис: TO '<путь цели>'

Пример:  TextFile 'MYFILE'

         Begin

           ...

           From 'c:\user\config.dat'

           To '/dd/user/appl/config.dat'

         End

        Пример

                Ниже дан полный пример файла определения ресурсов:

(* файл определения ресурсов *)

ULongData 'DATA1'          (* список значений *)



Begin

   Target 'ISA86M'         (* только для этой цели *)

   1, 0, 16#1A2B3C4D, +1, -1   (* цифровые значения *)

End

VarList 'VLIST1'           (* список переменных *)

Begin

   Target 'ISA86M'         (* только для этой цели *)

   Valve1, StateX, Command, Alrm1 (* имена переменных  *)

End

BinaryFile 'FILE1'         (* ресурс бинарный файл *)

Begin

   AnyTarget               (* для любой цели *)

   From 'c:\user\updatef.bin'  (* исходник на PC *)

   To 'updatef.cfg'        (* файл назначения на PLC *)

End

TextFile 'FILE2'           (* ресурс текстовый файл *)

Begin

   Target 'ISA68M'

   From 'c:\nw\nwbd.txt'   (* исходный файл на PC *)

   To '/nw/dat/nwbd'       (* файл назначения на PLC *)

End

        Компиляция ресурсов

                Если ресурсы были введены в файл определения ресурсов, окно диалога появится в конце генерации кодов ISaGRAF. Нажмите кнопку “Запустить компилятор” для запуска компилятора ресурсов. Выходные сообщения и ошибки будут отображены в основном окне управления. Нажмите “Выход” для избежания компиляции ресурсов. В этом случае ресурсы не будут добавлены в коды ISaGRAF.

        Реализация

                Число ресурсов, размер строк данных и файлов ISaGRAF не ограничивает. Ресурсы сохраняются в конце генерируемого кода с каталогом ресурсов. Ниже дан формат (используя С нотацию) формата каталога ресурсов:

__RESOURCE:

{

  long nbres;          /*количество определенных ресурсов*/

  {

    char name[16];     /* имя ресурса */

    long type;         /* тип данных ресурса */

    long size;         /* точный размер блока данных  */

    void *data;

    char *path_offset; /* указывает на строку */

  } /*nb записей */

}

                Ниже даны возможные значения поля “type”:

·  1 = бинарный файл

·  2 = текстовый файл

·  3 = ulong данные (в этом случае поле path_offset не используется)

·  4 = список переменных (в этом случае поле path_offset не используется)

                Для текстовых файлов конец строки символов преобразуется компилятором ресурсов в зависимости с соглашениями системы назначения.Все указатели - это 32 битные смещения от адреса соответствующей структуры. Все имена ресурсов и пути - это строки, заканчивающиеся на NULL.  Пути и данные следуют за каталогом ресурсов.


Определение стиля символа


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

        Графический стиль и установки:

Стиль отображения (текст, колонка, кривая…) символа может быть изменен динамически. Цвета могут быть настроены с помощью соответствующих коробок. Если стиль - “булевская иконка”, должен быть определен путь соответствующий .ICO файлу. Используйте “…” кнопки рядом с этими контролями, чтобы посмотреть иконки существующие на диске.

        Масштаб:

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

        Имя переменной:

Когда поле "Имя" является активным, кнопка "…" позволяет пользователю найти имя уже объявленной в словаре.

        Заголовок:

Заголовок может быть представлен рядом с графическим символом или в графической схеме.  Вы можете настроить расположение заголовка (верх, низ, лево или право) и его содержание. Заголовок может быть комбинацией имени переменной и его значения, сформатированного как текст. Настройка заголовка не влияет на схему списка.

        Командная переменная:

Если установлена опция "Командная переменная", пользователь может изменять значение связанной переменной двойным щелчком по графическому символу.



>=OR


Замечание: Для этого оператора количество входов может быть больше чем два.

Аргументы:

(inputs)                                      BOOLEAN

output                                        BOOLEAN     логическое ИЛИ двух или более входов

Описание:

Логическое ИЛИ двух или больше значений.

(*FBD пример блоков “OR”*)

(* ST эквивалент: *)

bo10 := bi101 OR NOT (bi102);

bo5 := (bi51 OR bi52) OR bi53;

(* IL эквивалент: *)

LD                     bi101

ORN                  bi102

ST                     bo10

LD                     bi51

OR                    bi52

OR                    bi53

ST                     bo5



OR_MASK


Аргументы:

IN                         INT                 целый формат

MSK                    INT                 целый формат

Q                          INT                 побитовый логический OR между IN и MSK

Описание:

Целый аналоговый побитовый ИЛИ.

(*FBD пример блоков OR_MASK*)

(* ST эквивалент: *)

is_odd := OR_MASK (xvalue, 1); (* делает значение всегда нечетным *)

result := OR_MASK (16#abc, 16#f0f); (* равно 16#fbf *)

(* IL эквивалент: *)

LD                     xvalue

OR_MASK        1

ST                     is_odd

LD                     16#abc

OR_MASK        16#f0f

ST                     result



Ориентированные связи


Для связи шагов и переходов используются одиночные линии. Это ориентированные связи. Когда ориентация не задана явно, связь ориентирована сверху вниз.



Основной формат диаграмм FBD


FBD диаграмма описывает функцию между входными переменными и выходными переменными. Функция описывается как множество элементарных функциональных блоков. Входные и выходные переменные связываются в блоки при помощи линий связи. Выход функционального блока может быть также связан с входом другого функционального блока.

Вся функция FBD программы построена из стандартных элементарных

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

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

Выходные переменные FBD программы должны быть связаны с точками выхода функционального блока. Тип каждой переменной должен быть тем же что и тип соответствующего выхода. Выходом FBD блока может быть внутренняя или выходная переменная или имя программы (только для подпрограмм). Когда выходом является имя редактируемой подпрограммы, оно представляет присвоение возвращаемого значения подпрограммы (возвращаемого в вызывающую программу). Входные и выходные переменные, входы и выходы функциональных блоков соединены линиями связи. Линии могут быть использованы для соединения двух логических точек диаграммы:

- Входной переменной и входа функционального блока

- Выхода функционального блока и входа другого блока

- Выхода функционального блока и выходной переменной

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

Множественные правые связи могут  быть использованы чтобы передать информацию от его левого конца к каждому правому концу. Все концы связи должны быть одного типа.



Основной формат схемы SFC


SFC программа - это графический набор шагов и переходов, соединенных вместе направленными связями. Для обозначения схождений и расхождений используются множественные связи. Некоторые части программы могут быть отделены и представлены в основной схеме одним символом - макро шагом. Вот основные графические правила

для SFC:

- шаги не могут следовать подряд

- переходы не могут следовать подряд



Основной синтаксис IL


IL программа - это список инструкций . Каждая инструкция должна начинаться с новой строки и должна содержать оператор, с дополнительным модификаторами, если нужно, для специфических операций, один или несколько операндов, разделенных запятой (‘,’). Инструкции может предшествовать метка с двоеточием (‘:’).  Если к инструкции присоединен комментарий, то он должен находиться в конце строки. Комментарий всегда начинается с ‘(*’ и заканчивается ‘*)’. Между инструкциями может быть введена пустая строка. Комментарии могут быть помещены в пустые строки.

Метка               Оператор  Операнд    Комментарий

Start:                 LD                                 IX1                          (* нажать кнопку *)

                         ANDN                            MX5                        (* команда разрешена*)

                         ST                                 QX2                        (* запустить мотор *)

        Метки

Инструкции может предшествовать метка с двоеточием (‘:’). Метка может быть помещена на пустую строку. Метки используются в качестве операндов для некоторых операций, таких как прыжки. Имена меток должны удовлетворять следующим правилам:

- имя не может быть длиннее 16 символов

- первым символом должна быть буква

- последующими символами могут быть буквы, цифры или символ подчеркивания

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

        Модификаторы оператора

Ниже представлены возможные модификаторы оператора. Символ модификатора должен завершать имя оператора, без пробелов между ними.

N          булевское отрицание операнда

(           задержанная операция

С          условная операция

Модификатор ‘N’ определяет булевское отрицание операнда Например, инструкция ORN IX12 интерпретируется как: result := result OR NOT (IX12).

Модификатор скобка ‘(‘ указывает на то, что выполнение инструкции должно быть задержано до тех пор пока не встретится закрытая скобка ‘)’.


Модификатор “C” указывает на то, что соответствующая инструкция должна быть выполнена только если текущий результат имеет значение TRUE (отличное от нуля). 

Модификатор ‘C’, может комбинироваться с модификатором ‘N’, который указывает на то, что инструкция должна быть выполнена только если текущий результат имеет значение FALSE (0).

        Задержанные операции

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

'('

модификатор

указывает операцию, которая должна быть задержана

')'

оператор

выполняет задержанную операцию

Открывающаяся скобка ‘(‘ указывает на то, что выполнение инструкции должно быть задержано до тех пор пока не встретится закрытая скобка ‘)’.  Например, следующая последовательность:

                         AND(          IX12

                         OR              IX35

                         )

интерпретируется как:

             result := result AND ( IX12 OR IX35 )


Основной синтаксис ST


ST программа - это список ST операторов. Каждый оператор заканчивается точкой с запятой (;). Имена используемые в исходном коде (идентификаторы переменных, константы, ключевые слова)  разделены неактивными разделителями

(пробелами, символами окончания строки и табуляции) или активными разделителями, которые имеют определенное значение (например, разделитель “>” означает сравнение “больше чем”. В текст могут быть введены комментарии. Комментарий должен начинаться с “(“ и заканчиваться “)”.Каждый оператор заканчивается точкой с запятой (“;”).  Основные операторы языка ST:

- оператор присвоения (variable := expression)

- вызов подпрограммы или функции

- вызов функционального блока

- операторы выбора (IF, THEN, ELSE, CASE)

- итеративные операторы (FOR, WHILE, REPEAT)

- управляющие операторы  (RETURN, EXIT)

- специальные операторы для связи с такими языками как SFC

Неактивные разделители могут быть свободно введены между активными разделителями, константами и идентификаторами. Неактивные разделители - это пробелы, символы окончания строки и табуляции. В отличие от неформатных языков, таких как IL конец строки может быть введен  в любом месте программы. Для улучшения читаемости программ нужно использовать неактивные разделители в соответствии со следующими правилами:

- Не пишите более одного оператора в строке

- Используйте табуляцию для сдвига сложных операторов

- Вводите комментарии для улучшения читаемости строк и параграфов



Основные команды


Диалог "Таблицы преобразований" показывает список определенных таблиц преобразования, и содержит кнопки для основных команд, чтобы редактировать существующую таблицу (определять ее точки), чтобы создавать новую таблицу, и также переименовывать и удалять таблицу. Нажмите Принять, чтобы выйти из диалога "Таблицы преобразований" и сохранить их на диске.

        Создание новой таблицы

Команда “Новый” позволяет пользователю создать новую таблицу преобразования. До 127 таблиц преобразования может быть создано для каждого проекта. Только используемые таблицы (которые подключены к аналоговым переменным) включаются в исполняемый код приложения. Наименование таблицы должно удовлетворять следующим правилам:

·  Длина имени не должна превышать 16

символов

·  Первый символ должен быть буквой

·  Следующие символы должны быть буквами, цифрами или символом подчеркивания

·  Верхний и нижний регистры в наименовании таблицы не различаются

        Изменение содержания таблицы

Команда “Редактор” используется для ввода точек таблицы, выбранных из списка. Также возможно дважды щелкнуть на имени таблицы или нажать клавишу ENTER для вызова команды “Редактор”. Команда “Редактор” автоматически вызывается когда создается новая таблица. Как минимум две точки должны быть введены для каждой таблицы.


Меню “Файл”

содержит команды для проверки синтаксиса программы и генерации кода.

        Генерация кода приложения

Команда “Создать” конструирует целиком код проекта. Пред генерацией чего-либо эта команда проверяет синтаксис определений и программ. Любая ошибка, которая не может быть обнаружена во время компиляции одиночной программы, обнаруживается в процессе генерации кода. Это применимо к таблицам преобразования, соединениям переменных В/В и связям с библиотеками. Генератор кодов останавливает компиляцию программы, когда обнаруживаются ошибки. Эта программа должна быть исправлена перед тем, как будет продолжена генерация кодов. Программы, которые уже были проверены (и ошибки не обнаружены) и не были изменены со времени выполнения последней операции “Проверить”, не компилируются по новой. Проверка объявления переменных и проверка связности приложения производится всегда. Во время проверки программы операция “Создать”

может быть прервана нажатием клавиши ESCAPE.

Замечание: Если объявление локальной переменной программы было изменено, то такая программа проверяется. Если глобальная переменная была изменена, то проверяются все программы.

        Проверка синтаксиса программы

Команда “Проверить программу” позволяет пользователю проверить только одну программу. Выбранная программа компилируется, даже если она не была изменена со времени последней проверки. Команда “Проверить словарь” позволяет пользователю проверить объявления всех переменных проекта.

“Проверить все программы ”

проверяет синтаксис всех программ проекта, даже если некоторые из них не были изменены. Эта команда не останавливается когда обнаруживается ошибка в программе. Это может быть использовано для создания полного списка всех ошибок, оставшихся в программах проекта. Эта команда может быть прервана нажатием клавиши ESCAPE.

        Имитация изменения

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



Основные компоненты SFC


Основные компоненты SFC : шаги, начальные шаги, переходы, ориентированные связи, прыжки на шаг.



Основные контакты и витки языка LD


Для представления контактов используются символы:

- Прямой контакт

- Инвертированный контакт

- Контакт с определением фронта

Для представления витков используются символы:

- Прямой виток

- Инвертированный виток

- SET виток

- RESET виток

- Виток с определением фронта

Имя переменной пишется над этими графическими символами:

        Прямой контакт

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

Состояние линии соединения на правом конце - это логическое И(AND) состояния левого конца и значения переменной контакта.

(* Пример использования ПРЯМЫХ *)

(* ST Эквивалент: *)

output1 := input1 AND input2;

        Инвертированный контакт

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

Состояние линии соединения на правом конце - это логическое И(AND) состояния левого конца и  отрицания значения переменной контакта.

(* Пример использования ИНВЕРТИРОВАННЫХ контактов*)

(* ST Эквивалент: *)

output1 := NOT (input1) AND NOT (input2);

         Контакт с определением переднего фронта

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

Состояние линии соединения на правом конце принимает значение TRUE, когда значение на левом конце - TRUE и  значения переменной контакта меняется с FALSE на TRUE. Во всех остальных случаях оно устанавливается равным FALSE.

(* Пример использования контактов ПЕРЕДНЕГО ФРОНТА*)

(* ST Эквивалент: *)

output1 := input1 AND (input2 AND NOT (input2prev));

(* input2prev - значение input2 на предыдущем цикле *)

        Контакт с определением заднего фронта

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

Состояние линии соединения на правом конце принимает значение TRUE когда значение на левом конце - TRUE и  значения переменной контакта меняется с TRUE на FALSE. Во всех остальных случаях оно устанавливается равным FALSE.




(* ST Эквивалент: *)

output1 := input1 AND (NOT (input2) AND input2prev);

(* input2prev - значение input2 на предыдущем цикле *)

        Прямой виток

Прямой виток дает логический выход состояния  линии соединения.



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

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

Соответствующее имя может быть именем программы (только для подпрограмм). Это соответствует присвоению возвращаемой величины подпрограммы.



(* ST Эквивалент: *)

output1 := input1;

output2 := input1;

        Инвертированный виток

Инвертированный виток дает логический выход отрицания состояния  линии соединения.



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

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

Соответствующее имя может быть именем программы (только для подпрограмм). Это соответствует присвоению возвращаемой величины подпрограммы.



(* ST Эквивалент: *)

output1 := NOT (input1);

output2 := input1;

        SET виток

SET виток дает логический выход

состояния  линии соединения.



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

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



(* ST Эквивалент: *)

IF input1 THEN

   output1 := TRUE;

END_IF;

IF input2 THEN

   output1 := FALSE;

END_IF;

        RESET виток

RESET виток дает логический выход состояния  линии соединения.





Соответствующая переменная принимает значение FALSE, когда состояние левой линии связи становится равным TRUE. Переменная удерживает это состояние до тех пор, пока она не будет инвертирована витком SET. Состояние левого соединения распространяется на правое соединение. Правое соединение может быть связано с правым вертикальным силовым рельсом.

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



(* ST Эквивалент: *)

IF input1 THEN

   output1 := TRUE;

END_IF;

IF input2 THEN

   output1 := FALSE;

END_IF;

        Виток с определением переднего фронта

“Положительный” виток дает логический выход состояния  линии соединения. Этот тип витка имеется только в “быстром” релейном редакторе (Quick ladder).



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

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



(* ST Эквивалент: *)

IF (input1 and NOT(input1prev)) THEN

   output1 := TRUE;

ELSE

   output1 := FALSE;

END_IF;

(* input1prev - значение input1 на предыдущем цикле *)

        Виток с определением заднего фронта

“Отрицательный” виток дает логический выход состояния  линии соединения. Этот тип витка имеется только в “быстром” релейном редакторе (Quick ladder).



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

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

(* Пример использования “Отрицательного” витка  *)



(* ST Эквивалент: *)

IF (NOT(input1) and input1prev) THEN

   output1 := TRUE;

ELSE

   output1 := FALSE;

END_IF;

(* input2prev - значение input2 на предыдущем цикле *)


Основные операторы ST


Основные операторы языка ST:

Присвоение

Оператор RETURN

Структура IF-THEN-ELSIF-ELSE

Оператор CASE

Итерационный оператор WHILE

Итерационный оператор REPEAT

Итерационный оператор FOR

Оператор EXIT

        Присвоение

Name:                          :=

Значение:                   присваивает значение выражению

Синтаксис:                 <variable> :=  <any_expression>;

Операнды:                 переменная должна быть внутренняя или выход, переменная и выражение должны иметь один и тот же тип

                                     

Выражение может быть вызовом подпрограммы или функции из библиотеки ISaGRAF.

Пример:

(* ST программа с присвоением *)

(* variable <<= variable *)

bo23 := bo10;

(* variable <<= expression *)

bo56 := bx34 OR alrm100 & (level >= over_value);

result := (100 * input_value) / scale;

(* присвоение возвращаемого значения подпрограммы *)

rc := PSelect ( );

(* присвоение с вызовом функции *)

limited_value := min (16, max (0, input_value) );

        Оператор RETURN

Имя:                              RETURN

Значение:                   заканчивает выполнение текущей программы

Синтаксис:                 RETURN;

Операнды:                 (нет)

В блоке SFC оператор RETURN определяет конец выполнения только данного блока.

Пример:

(* FBD программа: программируемый счетчик *)

(* ST программа *)

If not (CU) then

             Q := false;

             CV := 0;

             RETURN;   (* закончить программу*)

end_if;

if R then

             CV := 0;

else

             if (CV < PV) then

                         CV := CV + 1;

             end_if;

end_if;

Q := (CV >= PV);

        Структура IF-THEN-ELSIF-ELSE

Имя:                              IF... THEN... ELSIF... THEN... ELSE... END_IF

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

                                     

                                     


Синтаксис:                 IF <boolean_expression> THEN

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      ELSIF <boolean_expression> THEN

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      ELSE

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      END_IF;

Операторы ELSE и ELSIF - дополнительные. Если ELSE опущен и условие равно FALSE, то никаких инструкций не выполняется.

Пример:

(*ST программа , использующая оператор IF*)

IF manual AND not (alarm) THEN

             level := manual_level;

             bx126 := bi12 OR bi45;

ELSIF over_mode THEN

             level := max_level;

ELSE

             level := (lv16 * 100) / scale;

END_IF;

(* IF структура  без ELSE *)

If overflow THEN

alarm_level := true;

END_IF;

        Оператор CASE

Имя:                              CASE... OF... ELSE...  END_CASE

Значение:                   выполняет один или несколько списков ST операторов, выбор осуществляется в соответствии с целым выражением

                                     

Синтаксис:                 CASE <integer_expression> OF

                                         <value> : <statements> ;

                                         <value> , <value> : <statements> ;

                                         ...

                                      ELSE

                                         <statements> ;

                                      END_CASE;

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


Оператор ELSE - дополнительный.

Пример:

(*ST программа , использующая оператор CASE*)

CASE error_code OF

             255:      err_msg := 'Division by zero';

                         fatal_error := TRUE;

             1:          err_msg := 'Overflow';

             2, 3:      err_msg := 'Bad sign';

ELSE

             err_msg := 'Unknown error';

END_CASE;

        Итерационный оператор WHILE

Имя:                              WHILE... DO... END_WHILE

Значение:                   итерационная структура для группы ST операторов, условие вычисляется прежде выполнения итерации

                                     

Синтаксис:                 WHILE <boolean_expression> DO

                                         <statement> ;

                                         <statement> ;

                                         ...

                                      END_WHILE ;

Предупреждение:

Так как ISaGRAF синхронная система входные переменные не обновляются во время итераций WHILE. Изменение состояния входных переменных не может быть использовано для описания условия оператора WHILE.

Пример:

(*ST программа , использующая оператор WHILE*)

(* эта программа использует "C" функции для чтения *)

(* символов из последовательного порта *)

string := ''; (* empty string *)

nbchar := 0;

WHILE ((nbchar < 16) & ComIsReady ( )) DO

             string := string + ComGetChar ( );

             nbchar := nbchar + 1;

END_WHILE;

        Итерационный оператор REPEAT

Имя:                              REPEAT... UNTIL... END_REPEAT

Значение:                   итерационная структура для группы ST операторов, условие вычисляется после выполнения итерации

                                     

Синтаксис:                 REPEAT

                                         <statement> ;

                                         <statement> ;

                                        ...

                                      UNTIL <boolean_condition>



                                      END_REPEAT ;

Предупреждение:

Так как ISaGRAF синхронная система входные переменные не обновляются во время итераций REPEAT. Изменение состояния входных переменных не может быть использовано для описания условия оператора REPEAT.

Пример:

(*ST программа , использующая оператор REPEAT*)

(* эта программа использует "C" функции для чтения *)

(* символов из последовательного порта *)

string := ''; (* empty string *)

nbchar := 0;

IF ComIsReady ( ) THEN

             REPEAT

                         string := string + ComGetChar ( );

                         nbchar := nbchar + 1;

             UNTIL ( (nbchar >= 16) OR NOT (ComIsReady ( )) )

             END_REPEAT;

END_IF;

        Оператор FOR

Имя:                              FOR... TO... BY... DO... END_FOR

Значение:                   выполняет ограниченное число итераций, используя целую аналоговую индексную переменную

                                     

Синтаксис:                 FOR <index> := <mini> TO <maxi> BY <step> DO

                                         <statement> ;

                                         <statement> ;

                                      END_FOR;

Операнды:                 index:              внутренняя аналоговая переменная,  увеличивающаяся на каждом витке

                      mini:                начальное значение для индекса (перед первой  итерацией)       

                        

                                      maxi:                максимально-допустимое значение индекса

                                      step:                приращение индекса на каждом шаге

Оператор [BY step] - дополнительный. Если он не определен то приращение равно 1.

“While” эквивалент оператора FOR:

             index := mini;

             while (index <= maxi) do

                <statement> ;

                <statement> ;

                index := index + step;

             end_while;



           

Пример:

(*ST программа , использующая оператор FOR*)

(* эта программа извлекает целые числа из строки *)

length := mlen (message);

target := ''; (* empty string *)

FOR index := 1 TO length BY 1 DO

             code := ascii (message, index);

             IF (code >= 48) & (code <= 57) THEN

                         target := target + char (code);

             END_IF;

END_FOR;

        Оператор EXIT

Имя:                              EXIT

Значение:                   выход из итерационных операторов FOR, WHILE, REPEAT

Синтаксис:                 EXIT;

Операнды:                 (нет)

EXIT, обычно, используется в операторе IF внутри блоков FOR, WHILE, REPEAT.

Пример:

(*ST программа , использующая оператор EXIT*)

(* эта программа ищет символ в строке *)

length := mlen (message);

found := NO;

FOR index := 1 TO length BY 1 DO

             code := ascii (message, index);

             IF (code  = searched_char) THEN

                         found := YES;

                         EXIT;

             END_IF;

END_FOR;


Основные раздела языка SFC


Язык SFC используется для представления последовательного процесса. Он разделяет цикл процесса на несколько строго определённых последовательных шагов ( автономных ситуаций ), разделённых переходами. Обратитесь к Руководству по Языкам ISaGRAF за более подробной информацией о языке SFC.

Компоненты SFC объединены ориентированными линиями. По умолчанию, ориентация линии - сверху вниз. Вот основные графические компоненты, используемые для построения диаграмм SFC :

...................... Начальный шаг

...................... Шаг

...................... Переход

...................... Прыжок на шаг

...................... Макрошаг

...................... Начальный макрошаг

...................... Конечный макрошаг

Программирование на SFC обычно разделяется на два различных уровня. 1-Уровень

показывает графические диаграммы, номера ссылок на шаги и переходы и комментарии, присоединённые к ним. 2-Уровень - это программирование действий внутри шага или условий, присоединённых к переходу, на ST или IL. Подпрограммы, написанные на других языках (FDB, ST, LD или IL) могут обращаться к этим действиям или переходам. Ниже приведён пример 1-Уровня и 2-Уровня программирования :

Программа шага на 2 уровне создаётся при помощи текстового редактора. Программа может содержать блоки, написанные на ST или IL. Программа переходов 2 уровня может быть создана на языках ST или IL, или при помощи редактора Quick LD.

        Схождение и расхождение

Используются для представления множественных связей между переходами. Простое схождение или расхождение представляет различные  включающие возможности между различными частями процесса.

Двойное Схождение представляет параллельные процессы.

        Переход к шагу

Редактор SFC позволяет пользователю рисовать связи только в направлении сверху вниз. Прыжок к шагу может быть использован для представления связи с верхней частью диаграммы. Следующие диаграммы эквивалентны :

Прыжок к переходу запрещён и должен представляться двойным (И) Расхождением.

        Макро шаги

Макрошаг - это уникальное

представление автономной группы шагов и переходов. Макро шаг  начинается с

начального шага и кончается завершающим шагом.

Детальное представление шага макроса должно быть описано в той же SFC - программе. Символ шага макроса должен иметь тот же номер ссылки, что и начальный шаг макроса. Описание макро шага может содержать другой макро шаг.



Основные типы


Любая константа, выражение или переменная, используемая в программе (написанной на любом языке) должна характеризоваться своим типом. Типы должны быть согласованы в графических операциях и текстовых выражениях. Вот основные типы программных объектов:

BOOLEAN:                                логическая (true или false) величина

ANALOG:                                  целая или действительная (плавающая) непрерывная величина

TIMER:                                      временная величина

MESSAGE:                                строка символов

Замечание: Переменные типа TIMER (временные) содержат значения не большие, чем один день, и не могут быть использованы для записи данных.



Основы


Управление при отказе питания имеет большое значение для приложения по следующим причинам:

- Оно зависит от особенностей процесса

- Оно зависит от возможностей аппаратуры

- Оно зависит от методов программирования

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

Для того, чтобы успешно перезапустить процесс в системе управления, после наступления отказа питания, должны быть решены 3 задачи:

- Создание резервной копии

- При старте системы распознавание ситуации, что имел место отказ питания

- Восстановление сохраненных данных

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

Далее, важно решить какие данные следует сохранять и восстанавливать. Определяется два вида данных:

-  Переменные приложения:

Такие переменные процесса как число обрабатываемых элементов, данные об отказе питания, значения параметров процесса и т.д.

Такие программные переменные, как счетчики, таймеры, промежуточные значения и флаги.

-  Состояние программы:

Это указатель активных шагов, статус каждой “C” программы и т.д.

Эти два случая изучаются в следующих главах.



Основы языка FBD/LD


Язык FBD - это графическое представление многих различных типов равенств. Операторы представлены функциональными прямоугольниками. Функциональные входы присоединяются к левой части прямоугольника. Функциональные выходы присоединяются к правой части. Входы и выходы диаграммы (переменные) соединены с функциональными прямоугольниками при помощи логических связей. Выходы одного функционального прямоугольника могут соединяться со входами другого.

Язык LD

допускает графическое представление булевых переменных. Логические операции AND, OR, NOT полностью представлены в топологии диаграммы. Булевы входные переменные присоединяются к графическим контактам. Булевы выходные переменные присоединяются к графическим виткам. Контакты и витки соединяются друг с другом и с левыми и правыми шинами питания при помощи горизонтальных линий. Каждый отрезок линии имеет булево состояние - истинное

или ложное. Булево состояние одинаково для всех отрезков, соединённых вместе. Любая горизонтальная линия, соединённая с левой вертикальной шиной питания, имеет истинное состояние.

Диаграммы всегда интерпретируются слева направо и сверху вниз. Обратитесь к Руководству по Языкам ISaGRAF за более подробной информацией по языкам LD и FBD. Вот основные графические компоненты языков LD и FBD, поддерживаемые редактором FBD/LD :

        Левая шина питания

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

        Правая шина питания

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

        Вертикальное соединение LD «OR»

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

        Контакты


Контакты изменяют поток булевых данных в соответствии со значением булевой переменной. Имя переменной изображено над символом контакта. Следующие типы контактов поддерживаются редактором FBD/LD :

..................... прямой контакт

..................... инвертированный контакт

..................... контакт с определением положительного (переднего) фронта

..................... контакт с определением отрицательного (заднего) фронта

        Витки

Виток представляет действие. Состояние ступени ( состояние связи в левой части вита ) используется для изменения булевой переменной. Имя переменной изображено над символом вита. Следующие типы колец поддерживаются редактором FBD/LD :

..................... прямой виток

..................... инвертированный виток

..................... "установить" виток действия

..................... "сбросить" виток действия

..................... виток с определением положительного (переднего) фронта

..................... виток с определением отрицательного (заднего) фронта

        Функциональные блоки

Блок диаграммы FBD может представлять функцию, функциональный блок, подпрограмму или оператор. Его входные и выходные параметры должны быть соединены с контактом или витком или другими входами или выходами блока. Формальные параметры описаны внутри прямоугольника блока.

               


        Метки

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

        Прыжок

Символ прыжка всегда ссылается на метку, расположенную где-либо в диаграмме. Слева он должен быть соединён с булевым элементом. Если левое соединение истинно, то выполнение программы сразу переходит к помеченному участку. Следует иметь в виду, что обратные прыжки опасны, так как в некоторых случаях приводят к зацикливанию.

        Символ возврата



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

        Переменные

Переменные в диаграмме представлена внутри маленького прямоугольника, соединённого слева или справа с другим элементом диаграммы.

        Связи соединения

Связи соединения изображаются между элементами диаграммы. Они всегда изображаются от входа к выходу ( в направлении потока данных ).

        Связи соединения булева отрицания

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

        Углы, определяемые пользователем

Пользователь может определять точки на линии связи. Они позволяют вручную управлять направлением связи. Если не задано никакого угла, то ISaGRAF по умолчанию использует свой алгоритм управления.


Основы языка FC


Потоковые Диаграммы (FC) – это графический язык использующийся для описания последовательных операций. Потоковые Диаграммы состоят из Действий и Тестов. Между действиями и тестами находятся ориентированные связи представляющие потоки данных. Ниже даны графические компоненты языка Потоковых Диаграмм:

           Начало схемы FC: Символ "Начало" должен возникать в начале программы Потоковых диаграмм. Он уникален и не может быть пропущен. Он представляет начальное состояние диаграммы, когда она активизирована.

           Конец схемы FC: Символ "конец" должен возникать в конце программы Потоковых Диаграмм. Он уникален и не может быть пропущен. Может быть так, что никакого соединения не подходит к символу "Конец" (всегда виток), но символ "Конец" все же нарисован внизу схемы. Он представляет собой заключительное состояние схемы, когда исполнение было завершено.

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

           Действия FC: Символ действия представляет собой действие, которое нужно выполнить. Действия идентифицируются при помощи числа и имени. Два разных объекта одной схемы не могут иметь одно и то же имя или логический номер. Языками программирования для действий могут быть ST, LD или IL. Действия всегда соединены со связями, одна подходит к нему, другая исходит из него.

           Тесты FC: Тест представляет собой булевское условие. Тест идентифицируется числом и именем. В соответствии со значением присоединенного выражения на ST, LD или IL, поток направляется либо по пути "Да", либо "Нет". Если программа написана на ST, то за выражением может следовать двоеточие. Если программа написана на LD, то значение условия представляется единственным витком.

           Подпрограмма FC: Система допускает описание иерархической структуры программ FC.

Основы языка LD


Программа на языке LD представлена списком ступеней, на которых расположены  контакты и витки. Ниже приведены основные компоненты LD диаграммы :

       Головная часть ступени ( левая  шина питания )

Каждая ступень начинается с левой шины питания, начальное значение которой истинно. Редактор Quick LD автоматически создаёт левую шину питания, когда первый контакт ступени создан пользователем. Каждая ступень может иметь логическое имя, которое может использоваться в качестве метки для инструкций прыжка.

       Контакты

Контакты изменяют поток булевых данных в соответствии со значением булевой переменной. Имя переменной изображено над символом контакта. Следующие типы контактов поддерживаются редактором Quick LD :

..................... прямой контакт

..................... инвертированный контакт

..................... контакт с определением положительного (переднего) фронта

..................... контакт с определением отрицательного (заднего) фронта

       Витки

Виток представляет действие. Состояние ступени (состояние связи в левой части витка) используется для изменения булевой переменной. Имя переменной изображено над символом витка. Следующие типы витков поддерживаются редактором Quick LD :

..................... прямой виток

..................... инвертированный виток

..................... "установить" виток действия

..................... "сбросить" виток действия

..................... виток с определением положительного (переднего) фронта

..................... виток с определением отрицательного (заднего) фронта

       Функциональные блоки

Блок диаграммы LD может представлять функцию, функциональный блок, подпрограмму или оператор. Его первый входные и выходные параметры всегда соединены со ступенью. Другие параметры описаны вне прямоугольника блока.

               

       Конец ступени ( правая шина питания )

Ступени заканчивается правой шиной питания. Редактор Quick LD автоматически вставляет правую шину питания, когда пользователь помещает виток в диаграмму.


       Символ прыжка

Символ прыжка всегда ссылается на метку ступени, т.е. имя этой ступени, определённое где-либо в этой же диаграмме. Он помещается в конце ступени. Если состояние ступени истинно, выполнение диаграммы прямо перейдёт к помеченной ступени. Следует иметь в виду, что обратные прыжки опасны, так как они могут привести к блокированию цикла PLC в некоторых случаях.

       Символ возврата

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

       Ввод «EN»

В  некоторых операторах, функциях и функциональных блоках первый ввод не имеет булевского типа данных. Так как первый ввод всегда должен быть соединен со ступенью, то другой ввод автоматически вставляется на первую позицию, называемую «EN». Блок выполняется только в том случае, если ввод «EN» истинен. Ниже приведён пример оператора сравнения и его эквивалент на языке ST :



IF rung_state THEN

   q := (value1 > value 2);

ELSE

   q := FALSE;

END_IF;

(* продолжить ступень с состоянием q *)

       Вывод «ENO»

В некоторых операторах, функциях или функциональных блоках первый вывод не имеет булевского типа данных. Поскольку первый вывод всегда должен быть соединён со ступенью, другой вывод автоматически вставляется  на первую позицию. Он называется «ENO».  Этот вывод всегда находится в том же состоянии, что и первый ввод блока. Ниже приведён пример функционального блока AVERAGE и его эквивалент на языке ST :



AVERAGE(rung_state, Signal, 100);

OutSignal := AVERAGE.XOUT;

eno := rung_state;

(* продолжить шину с состоянием eno *)

В некоторых случаях одновременно необходимы как EN, так и

ENO. Ниже приведён пример арифметического оператора и его эквивалент на ST :



IF rung_state THEN

   result := (value1 + value2);

END_IF;

eno := rung_state;

(* продолжить шину с состоянием eno *)

   Ограничения редактора Quick LD

Редактор ISaGRAF Quick LD не позволяет продолжить ступень ( вставить новый контакт или виток) вправо от витка.Если одной ступени требуется сразу несколько выводов, то соответствующие витки должны быть параллельны.


Остальные команды меню «Файл»


                Следующие команды доступны из меню «Файл» любого программного редактора.

        Открытие другой программы

                Команда «Файл / Открыть» позволяет закрыть редактируемую программу и начать редактирование  другой программы того же проекта на том же языке. Новая программа заменяет текущую в окне редактирования.

        Печать программ

                Команда «Файл / Печать» выводит редактируемую программу на принтер. Эта команда создаёт эскиз листинга программы. Более подробная информация по этому вопросу получается при использовании генератора документов проекта.

                Для графических программ ( SFC, FBD и Quick LD ) Вы можете воспользоваться командой «Редактор / Копировать рисунок (метафайл)» для копирования в буфер изображения диаграммы в формате метафайла. Оно может быть вставлено в другое приложение как в текстовом процессоре. Для программ SFC только 1-уровень информация ( диаграммы, нумерация и комментарии 1-уровня )может быть помещена в метафайл.



Отладка программ ST и IL


Во время симуляции или отладки программ ST и IL, никакие модификации не могут быть введены в программный текст.

 

IL            Для программ IL, инструкции сформатированы в виде списка. Текущее значение переменной использующейся в инструкции появляется в той же строке. Вы можете дважды щелкнуть по инструкции, чтобы изменить значение переменной.

 

ST           Для программ ST, Окно Списка встроено в окно редактора. Вы можете изменять размер просмотров перетаскивая мышью линию разделения между ними.

Для  каждой переменной списка, ISaGRAF показывает ее имя, текущее значение и текст комментария. Размер колонок может быть изменен путем перетаскивания разделительных линий.

        Сохранение списков на жесткий диск

Команда "Файл / Сохранить список" сохраняет списки переменных на диске, под тем же именем что и редактируемая программа. Этот список будет автоматически подгружаться каждый раз, когда программа ST или IL открывается в режиме отладки. Этот список может быть свободно открыт и модифицирован с использованием средств Списка запущенных с помощью команды "Инструменты / Список переменных" окна отладки.

        Вставка переменных в список

Команда “Редактор/ Вставить переменную” вставляет другую переменную в список. Имя переменной выбирается в списке объектов, определенных в словаре проекта. В этом случае пользователь не должен вводить вручную идентификатор. Переменная вставляется перед переменной, выбранной в данный момент в списке. Список не может содержать более 32

переменных. Одна и та же переменная не может появляться более одного раза в том же самом списке.

           Если имя переменной в тексте ST выделено, нажмите эту кнопку на панели инструментов или запустите команду "Редактор/ Подсмотреть выделение ", чтобы напрямую послать переменную во встроенный список шпиона.

        Изменение выбранной переменной

Команда “Редактор/ Изменить переменную” замещает выбранную переменную другой переменной. Вы можете также использовать команду “Вырезать” для удаления выбранной переменной из списка.



Отличительные особенности iso, isakerseo и isakereto


Чтобы запустить ISaGRAF нужно загрузить один из следующих модулей.

isa.o:                       вариант единственной целевой задачи (только последовательная связь)

isakerse.o:        вариант нескольких целевых задач (только последовательная связь)

isakeret.o:         вариант нескольких целевых задач (последовательная связь и/или по Ethernet)

Детальное описание этих модулей - в последующих разделах.

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

Целевая задача ISaGRAF преимущественно использует последовательный порт для связи с отладчиком. При открытии целевая задача не устанавливает никаких параметров на указанный ей последовательный порт. Поэтому пользователь полностью свободен в назначении нужных ему параметров. Единственным требованием является установка бинарного режима передачи (RAW mode). Для этого предназначена функция ISAMOD().

uchar ISAMOD

(

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

uint32 baudrate   /* Скорость передачи*/

)

Описание:

Конфигурирует указанное последовательное устройство для передачи бинарных данных с указанной скоростью.

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

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

При использовании отладчика системы разработки, убедитесь, что параметры связи (см. руководство пользователя: Управление программами) соответствуют параметрам цели.

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

Глобальная переменная CLKRATE (uint32) должна быть инициализирована. Это можно сделать следующим образом

                CLKRATE = sysClkRateGet ()

Значение CLKRATE по умолчанию - 60 Hz.



Параметры программы


                Если редактируемая программа является функцией, функциональным блоком или подпрограммой, то команда «Файл / Параметры» используется для определения её параметров вызова и возвращаемых параметров. Эта команда не действует, если редактируемая программа является SFC программой верхнего уровня, от раздела «Begin» до «End».

                Функции, функциональные блоки или подпрограммы могут иметь до 32 параметров ( ввода или вывода ). Функция или подпрограмма имеет ровно один возвращаемый параметр, имя которого должно совпадать с именем функции, в соответствии с правилами преобразования ST. Следующее окно диалога используется для описания параметров подпрограммы :

               

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

·  Длина имени не должна превышать 8

символов

·  Первый символ должен быть буквой

·  Следующие символы могут быть буквой, цифрой или символом подчёркивания

·  В имени проекта прописной и строчный регистры не различаются

                Команда «Вставить» используется для вставки нового параметра перед  выбранным. Команда «Удалить» используется для удаления выделенного параметра. Команда «Упорядочить» автоматически сортирует параметры так, что возвращаемый параметр становится последним в списке.



Параметры связи


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



Парольная защита


ISaGRAF Workbench включает систему полной защиты данных, которая позволяет пользователю защищать паролем проекты и элементы библиотеки. Библиотечный элемент может быть конфигурацией В/В, платой В/В или сложным оборудованием, функцией или функциональным блоком, написанным на языке IEC, “С” функцией, функциональным блоком или функцией преобразования. Защищенная паролем база данных предназначена для одного проекта или библиотечного элемента, и не может быть разделена между несколькими.

        Уровни защиты

Внутри одного проекта или библиотечного элемента пользователь может определить до 16 уровней доступа, с соответствующими различными паролями. Уровни доступа отсортированы в иерархической системе. Они пронумерованы от 0 до 15. Наивысший уровень доступа пронумерован как 0. Когда пользователь знает пароль, он имеет доступ ко всем пунктам, защищенным на соответствующем уровне доступа, плюс все пункты, защищенные более низкими уровнями. Каждая элементарная команда, или данные проекта, или библиотечный элемент может быть отдельно защищен уровнем доступа. Например, команда “Создать код приложения” из меню ISaGRAF может быть защищена отдельно. Элементарные данные могут быть программой, списком опций, техническим замечанием библиотечного элемента и т.д…

        Определение парольной защиты

Команда “Установить пароль” из меню ISaGRAF используется для определения паролей и уровней доступа для одного проекта или одного библиотечного элемента. Эта команда вызывается из меню ISaGRAF Project Manager (для проекта), или из Менеджера Библиотек ISaGRAF (для библиотечного элемента). Пароль не требуется, когда эта команда запускается в первый раз. Если пароли уже определены, то пользователь должен ввести пароль самого высокого уровня, который он знает, перед выполнением этой команды. Более верхний уровень паролей и защищенных пунктов тогда не могут быть изменены. Команда “Установить пароль” позволяет пользователю определить пароли соответствующие различным уровням доступа, и защищать элементарные команды или данные с определенными уровнями.


Пароли ( соответствующие уровням защиты) вводятся двойным нажатием на линию верхнего списка. Следующий диалог используется для ввода пароля:



Список в нижней части показывают различные пункты (данные или функции), которые могут быть защищены, и текущий уровень защиты прикрепленный к правам "доступ чтения " или "полный доступ". Присвоение уровню защиты права "чтения" позволяет вам запретить пользователю без достаточных прав даже открывать или печатать документ.

Нажмите дважды на линию в нижнем списке для установки прав выбранного пункта или данных. Открывается следующий диалог:



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

Заметим, что для некоторых документов, видных пи использовании ISaGRAF Workbench, таких как дескриптор проекта, доступ чтения не может быть защищен паролем.

        Доступ к защищенным данным

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

Если пользователь вводит требуемый пароль (или пароль назначенный для самого высокого уровня защиты), то он может продолжать нормально. Каждый раз, когда пароль вводится пользователем, он сохраняется в памяти, так что позже пользователь не должен будет вводить его снова. Сохраненные пароли удерживаются каждый раз, когда средство ISaGRAF вызывается из другого средства ISaGRAF (например, Project Manager  запускает Program Manager). Сохраненные пароли теряются, когда последнее оставшееся окно ISaGRAF закрывается. Пароли, введенные во время редактирования проекта, или во время использования Library Manager, или используя  Менеджер Архива, не могут быть разделяемыми. Если пользователь вводит плохой пароль, то он не может запустить выбранную функцию.

        Связи с менеджером архива



Когда объект сохраняется ( проект или библиотечный элемент) на архивный диск, то вызывается пункт защиты данных, названный “Сохранить в Архив”. Это соответствует системе защиты данных, подключенной к объекту на Workbench (жесткий диск). Тесты не проводятся на системе защиты данных объекта на архивном диске, если он уже существует. Команда “Сохранить” Менеджера Архивов ISaGRAF сохраняет информацию защиты данных с объектом на архивный диск.

Когда восстанавливается объект, который уже существует на Workbench (жесткий диск) , то вызывается пункт защиты данных, названный “Переписать Архив”. Это соответствует системе защиты данных, подключенной к объекту на Workbench (жесткий диск). Тесты не проводятся на системе защиты данных объекта на архивном диске. Если эта команда достоверна, то тогда восстановленная информация защиты данных заменит существующую на жестком диске.

        Установка индивидуальных защит для каналов В/В

Система разработки ISaGRAF обеспечивает полную систему защиту данных основанную на иерархических паролях. Соединения В/В могут быть глобально защищены паролем. Дополнительно, ISaGRAF позволяет вам установить индивидуальную защиту на любой канал В/В. Это подразумевает, что:

- пароли всегда определяются в системе определения пароля (используйте команду "Проект / Установить пароль" окна Управление Проектами) так, что имеются индивидуальные уровни защиты.

- вы используете для индивидуальной защиты уровни защиты с более высоким приоритетом по сравнению с глобальной защитой В/В.

Когда канал В/В имеет индивидуальную защиту, маленькая иконка нарисована рядом с его именем в окне соединений В/В:

Используйте команды "Установить защиту" и "Уничтожить защиту" меню "Редактор", чтобы установить или удалить индивидуальную защиту для выбранного канала. Обе команды предлагают вам ввести действительный пароль так, что уровень защиты может быть присоединен к каналу. Затем, каждый раз, когда вы хотите изменить соединение с каналом вы должны ввести пароль достаточного уровня приоритета.

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

.


Печать готового документа


Генератор Документов ISaGRAF позволяет пользователю строить и печатать законченный документ для выбранного проекта. Окно генератора документа отображается после активизации команды “Печать” из меню “Проект” менеджера Проектов. В отличие от команд “Печать” из других окон ISaGRAF Workbench, Генератор Документов может быть использован для печати более чем одной компоненты проекта в одном и том же документе, с глобальным форматом и нумерацией страниц.

Команды меню “Редактировать” используются для определения элементов проекта, которые должны быть включены в документ. Таким путем пользователь строит “таблицу содержания”  необходимого документа. Любая информация о проекте (программы, переменные, опции, соединения В/В …) могут быть вставлены в проектный документ. Никакой информации из другого проекта или из библиотек ISaGRAF не может появиться в этом документе.

           Команда “Файл / Печать” генерирует документ и посылает его на принтер, следуя определенной таблице содержания. Работа “Печать” может занять несколько минут для построения и форматирования документа. Рекомендуется подождать, пока не завершится “Работа Печати ” в окне Генератора Документов ISaGRAF, перед запуском других команд ISaGRAF Workbench. Построение документа целиком может потребовать много места на диске. Сообщение об ошибке будет выведено, если весь диск заполнен. В таком случае пользователь должен будет либо освободить дисковое пространство, удалив файлы, либо уменьшить объем работы печати. Появляется окно диалога, когда запускается команда “Печать”. Это позволяет пользователю вводить замечание, описывающее фактическую команду печати. Эти замечания сохраняются в файле предыстории, и будут напечатаны на первой странице любого будущего документа (включая настоящий).



Переходы


Переходы представлены горизонтальными полосками, которые пересекают линии связи. Каждому переходу присвоен номер, следующий за символом перехода. Описание перехода располагается справа от символа перехода. Это описание представляет собой свободный комментарий (не входящий в язык программирования). Вышеприведенная информация называется Уровнем 1 перехода



Перекрестные ссылки


Система разработки ISaGRAF (workbench) включает редактор перекрестных ссылок, который обеспечивает пользователя полным просмотром объявленных переменных в программах проекта, и мест, где они используются. Цель перекрестной ссылки - это перечисление всех переменных, объявленных в проекте, и локализация, в исходных кодах каждой программы, частей исходного кода, где эти переменные используются. Перекрестные ссылки очень полезны для глобального просмотра жизненного цикла одной переменной. Они помогают локализовать побочные эффекты и сократить время понимания проекта во время его построения. Перекрестные ссылки могут также быть использованы для глобального просмотра всего словаря проекта, так что легко находятся неиспользуемые переменные и оценивается сложность проекта.

Список слева показывает объявленные объекты проекта (программы, переменные и определенные слова), и элементы библиотеки (функции и блоки функций, на которые есть ссылки в проекте. Список справа показывает вхождения в программах объекта, выбранного в данный момент в первом списке.

Описание вхождений включает имя программы, количество шагов FC или SFC, переход или тест, плюс номер строки для текстовых языков или координаты для LD или FBD диаграмм. Для диаграмм quick LD, описание завершается номером штанги. Если переменная используется, как выход, (виток) за номером штанги следует символ звезды ("*").

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

        Выбор типа объекта

Так как проект может включать большое количество объявленных объектов,  то используется combo box в меню средств редактора для выбора типа объектов, которые должны быть отображены в окне. Это позволяет пользователю иметь доступ к выборочной информации.

Каждый раз, когда перекрестные ссылки заново вычисляются, выбор сбрасывается в положение “Все ” для того, чтобы представить весь список.


        Вычисление перекрестных ссылок заново

Команда “Файл / Пересчитать” может быть использована в любое время для обновления перекрестных ссылок, в соответствии с изменениями, введенными в других окнах редактирования ISaGRAF.

        Экспорт перекрестных ссылок

Команда “Файл / Экспортировать” используется для записи полного списка перекрестных ссылок в текстовый файл ASCII. Этот файл затем может быть открыт другими приложениями, такими как Windows NotePad или текстовыми редакторами.

        Словарные ошибки

Команда “Редактор / Ошибки словаря ” отображает в окне диалога список ошибок обнаруженных во время загрузки словаря проекта.

        Статистика

Команда “Инструменты / Статистика” отображает в окне диалога число объектов и переменных, объявленных в проекте, следуя типу и атрибутам переменных. Частное приложение этой команды - это определение количества переменных В/В объявленных в проекте, для того, чтобы быть уверенным, что он может быть скомпилирован, если установлена ограниченная версия ISaGRAF Workbench.

        Поиск в списке объектов

Команда “Редактор / Поиск” позволяет пользователю напрямую выбирать объект в списке редактора. Искомый объект не может быть найден, если он не был указан в списке (когда используется выборочное отображение информации). Перед поиском объекта рекомендуется активизировать выбор “Все”

в меню средств.

        Открытие программы

Список справа содержит вхождения выбранного объекта в исходных файлах и соединение В/В открытого проекта. Команда “Редактор / Открыть программу” позволяет пользователю непосредственно открывать программу там, где этот объект появился. Также, можно ) открыть соответствующую программу двойным щелчком мышки на ее вхождении (в списке вхождений).


Переменные


Переменные программы могут быть локальными

или глобальными. Локальные переменные могут использоваться только одной программой. Глобальные переменные могут использоваться любой программой проекта. Имена переменных должны удовлетворять следующим правилам:

имя не может быть длиннее 16 символов

первым символом должна быть буква

последующими символами могут быть буквы, цифры

или символ подчеркивания



Переменные прямого представления


ISaGRAF позволяет использовать переменные прямого представления для того, чтобы представлять в исходном тексте программы свободные каналы. Свободные каналы - это каналы, не связанные с декларированными переменными ввода/вывода. Идентификатор переменной прямого представления всегда начинается с символа “%”.

Ниже приводятся соглашения об именах переменных прямого представления для каналов одиночной платы. “s” - это номер слота на палате.  “c” - это номер канала.

%IXs.c    свободный канал платы булевого ввода

%IDs.c    свободный канал платы целого ввода

%ISs.c    свободный канал платы строкового ввода

%QXs.c  свободный канал платы булевого вывода

%QDs.c  свободный канал платы целого вывода

%QSs.c  свободный канал платы строкового вывода

Ниже приводятся соглашения об именах переменных прямого представления для каналов комплексного оборудования. “s” - это номер слота оборудования. “b” - это индекс одной платы внутри комплексного оборудования. “c” - это номер канала.

%IXs.b.c                свободный канал платы булевого ввода

%IDs.b.c                свободный канал платы целого ввода

%Is.b..c                  свободный канал платы строкового ввода

%QXs.b.c               свободный канал платы булевого вывода

%QDs.b.c               свободный канал платы целого вывода

%QSs.b.c               свободный канал платы строкового вывода

Примеры:

%QX1.6  6 канал 1 платы (логический вывод)

%ID2.1.7 7 канал 1 платы во 2 оборудовании (целый ввод)

Переменные прямого представления не могут иметь тип real.



Первые шаги


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



Плата В/В


Библиотека плат В/В ISaGRAF определяет стандартный интерфейс между переменными приложения и целевым оборудованием. Во время описания приложения все переменные В/В подключаются к каналам целевой платы В/В. Плата В/В ISaGRAF определяется по имени и по “ключевому коду OEM” (“OEM key code”), который определяет его поставщика. Другие параметры платы В/В описывают топологию платы В/В (количество каналов, направление канала и тип), и конфигурацию, оборудования или программную.

        Параметры платы В/В

Существует два различных типа параметров для платы В/В: общие параметры, которые определяются для любой платы библиотеки ISaGRAF, и OEM параметры, которые специфичны для реализации платы, обеспечиваемые поставщиком оборудования. Общие параметры вводятся в верхней части окна определения параметров платы В/В. Эти параметры (плюс имя платы В/В) идентифицируют стандартный интерфейс платы В/В ISaGRAF.

“Ключевой код OEM” - простое число, которое определяет поставщика оборудования. Все платы, определенные одним поставщиком, должны иметь один и тот же ключевой код OEM. Ключевой код OEM - это 16 битное беззнаковое слово, введенное в шестнадцатеричном формате. Зарезервированный ключевой код OEM для CJ International равен “1”.

Главные параметры определяют топологию платы В/В. Число каналов определяют число доступных каналов на плате. Тип платы - это тип переменных, которые могут быть подключены к каналам платы. Направление определяет какие переменные подключены к плате - входные или выходные.

Замечание: Переменные В/В различных типов или направлений не могут быть сгруппированы на одной и той же плате В/В ISaGRAF. Это свойство требует сложного оборудования В/В.

        Параметры OEM

Параметры OEM вводятся в нижней части окна определения параметров платы В/В. Эти параметры определяются поставщиками плат В/В и являются специфичными для платы. Существует максимум 16 OEM параметров для платы. Плата может не иметь OEM параметры. Менеджер библиотек ISaGRAF позволяет поставщику оборудования определить идентификацию и формат каждого параметра, и метод их ввода.


Квадрат слева содержит список OEM параметров. Каждый параметр идентифицируется именем и логическим номером, с 0 до 15. Площадь справа содержит детальное описание параметра, выбранного слева. Параметр выбирается в списке для доступа к его полному описанию. Нажатие кнопки “Очистить” сбрасывает описание параметра и удаляет его из списка параметров. Предупреждение: отмена этой команды невозможна.

Имя параметра используется для идентификации соответствующего входного поля во время соединения платы В/В, если поле должно быть определено автоматическим оператором. Имя параметра должно удовлетворять следующим правилам:

·  максимальная длина имени 16 символов

·  первый символ должен быть буквой

·  следующие символы должны быть буквами, цифрами или символом ‘_’.

Тип параметра определяет внутренний формат параметра и его входной параметр во время соединения В/В приложения. Ниже дан список возможных внутренних форматов:

word.................. беззнаковое 16 битное слово

long .................. беззнаковое 32 битное слово

word hexa........ беззнаковое 16 битное слово

long hexa.......... беззнаковое 32 битное слово

boolean............. беззнаковое 16 битное слово (только младший бит используется)

character.......... беззнаковое 16 битное слово (только младший байт используется

string................ массив из 16 байт, содержащий строку, оканчивающуюся нулем

float................... простой точности 32 битное плавающее значение

Ниже даны возможные входные форматы:

word.................. беззнаковое десятичное слово

long................... беззнаковое длинное слово

word hexa........ беззнаковое шестнадцатеричное слово

long hexa.......... беззнаковое шестнадцатеричное длинное слово

boolean............. “true” или “false”

character.......... один символ

string................ строка в кодах ascii (максимум 15 символов)

float................... простой точности плавающее значение

Окно “доступ” используется для определения того, как конечный пользователь может получить доступ к параметру.Если установлена опция “Пользователь”, то параметр показывается как входное поле во время соединения платы В/В. Значение по умолчанию OEM параметра используется как начальное для редактирования параметра. Если установлена опция “Скрытый”, то параметр является константой и не появляется в окне соединения платы В/В. Значение по умолчанию OEM параметра определяет значение параметра константы. Опция “Только на чтение ” индицирует, что параметр видим для пользователя, но не может быть изменен. Его значение по умолчанию используется как константа.


Подготовка проекта к выгрузке


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

Важное замечание: библиотеки не загружаются с встроенным исходным кодом. Это касается функций, функциональных блоков, плат В/В и оборудования.

        Дополнительные файлы

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

Дескриптор проекта

Если не встроен то дескриптор проекта после выгрузки будет указывать только дату.

Парольная защита

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

Комментарии для несвязанных каналов В/В

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

История модификаций

Глобальная история изменений проекта.

Файлы дневника

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

Списки переменных и временные диаграммы

Эти файлы создаются во время отладки и содержат список переменных и временные диаграммы.

Графики, иконки и битмапы

Включает графики, иконки и битмапы, если они находятся в директории ISaGRAF.



Подключение каналов В/В


Для установления соединения канала пользователь должен дважды щелкнуть на его расположении в списке справа. Также возможно выбрать и запустить команду “Редактор / Установить канал/параметр”. Следующие иконки используются для представления каналов в списке:

....................... свободный канал

....................... подключенный канал

Список содержит все переменные, которые подходят к выбранной плате по типу и направлению. Здесь перечислены только те переменные, которые еще не подключены. Кнопка “Соединить”

подключает переменные, выбранные в списке к выбранному каналу. Кнопка “Освободить” удаляет (отключает) переменные с выбранного канала. Кнопки “Следующ”

и “Предыдущ” используются для выбора другого канала платы. Расположение выбранного канала всегда отображается в заголовке окна диалога.



Показать опции


Команда

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

           Используйте кнопку "Увеличение" панели инструментов, для изменения текущего масштаба. Эта команда всегда имеется при работе с программой Quick LD присоединенной к действию или тесту.

           Используйте кнопку "Сетка" панели инструментов чтобы показать или скрыть точки решетки редактирования. Эта команда, также, имеется при работе с  программой Quick LD присоединенной к действию или тесту.

Используйте команду "Опции / Шрифт" для выбора имени шрифта символа который используется во всех документах ISaGRAF. При вызове из блоков ST или IL, вы можете определить размер шрифта. При выборе шрифта для графического вида (FC или Quick LD), стиль шрифта и размер не относятся к делу и их не нужно выбирать. Графические редакторы ISaGRAF всегда рассчитывают размер шрифта в соответствии с текущим масштабом.



Построение графической схемы


Схема состоит из фоновых картинок (битмапов или метафайлов), и набора графических символов, которые будут анимированы во время отладки. Чтобы ввести схему, следующие операции должны быть выполнены: введите фоновые картинки, введите графические символы, свяжите объекты и переменный проекта.

        Фоновые картинки

Фоновые картинки - это "битмапы" (.BMP) или «метафайлы» (.WMF). Количество картинок включенных в схему не ограничено. Картинки можно двигать или менять размер в графической схеме. Они не появляются в схеме списка. Картинки строятся с помощью других средств. Прожектор не включает средства рисования. Команда "Опции / Цвет фона" используется для выбора цвета пустого пространства в графической схеме.

Замечание:           Битмапы требуют большого количества памяти. Настоятельно рекомендуется тщательно выбирать размер картинки, и ограничивать неиспользуемое пространство.

        Текст

Символ «текст» это текст написанный в прямоугольнике. В прямоугольнике выводится значение присоединенной переменной. Таким образом, символ может быть связан со строкой сообщения переменной.

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

 
   Однополярные и биполярные колонки

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

        Кривые

В документ можно встраивать кривые. Кривая показывает предысторию присоединенной переменной. Хотя это не точное средство измерения, оно может дать полезную отладочную информацию о синхронизации переменных.

Кривая запоминает 200 последних значений переменных. Количество измерений не меняется, кода изменяется размер графической схемы

        Булевские иконки


Символ « булевская иконка» используется для отображения бинарных состояний. Один файл (.ICO) определяется для состояния FALSE или 0. Другой - для ненулевого состояния. Так как Прожектор не включает редактор иконок, файлы должны быть подготовлен с помощью других средств.



        Битовые поля

Символ «битовое поле» представляется на графической панели с помощью 32 битового целого числа. Менее значимые биты располагаются справа. Не рекомендуется использовать битовые поля для других типов данных таких как аналоговые значения.



        Выбирать, двигать или менять размер

Выбор графических объектов требуется для большинства команд редактирования. Прожектор позволяет один или более существующих объектов на схеме. Для выбора объектов, нужно выбрать "выбор" (кнопка со стрелкой) на полоске средств. Для выбора одного объекта нужно просто щелкнуть по символу. Для выбора нескольких объектов протащите мышку и выберите прямоугольную область. Все графические объекты, которые пересекаются с прямоугольной областью будут помечены как "выбранные". Выбранный объект нарисован с маленьким черным квадратом вокруг графического символа.

Для того, чтобы переместить объекты, их нужно сначала выбрать. Затем тащите их с помощью мышки в другое место.

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

 
   Группировать символы / разбивать группы

Вы можете объединять символы в группы и работать с ними как с одним символом. Для того, чтобы создать группу, выберите символы в графической схеме и запустите команду  «Редактор/ Группа». Команда «Редактор/ Разбить» используется для того, чтобы рассматривать символы выбранной группы как отдельные.

Группа может содержать картинку. Группа, также может содержать другую группу.

Когда символы сгруппированы их стиль больше не меняется.


POW


Аргументы:

IN                         REAL                   любая знаковая аналоговая величина

EXP                      REAL                   степень

Q                          REAL                   (INexp)

                                                  1.0 если IN не 0.0 и EXP = 0.0

                                                  0.0 если IN = 0.0 и EXP отрицательно

                                                  0.0 если IN = 0ю0 и EXP = 0.0

                                                  0.0 если IN отрицательно и EXP не целое

Описание:

Дает действительный результат операции: (база экспонента) ‘база’ - первый аргумент, экспонента - второй. Экспонента - действительное число.

(*FBD пример блока “POW”*)

(* ST Эквивалент: *)

result := POW (xval, power);

(* IL Эквивалент: *)

LD                     xval

POW                 power

ST                     result



Правила и ограничения


Необходимо следовать правилам показанным ниже для определения таблиц преобразования. Таблица может быть использована для преобразования и входных и выходных аналоговых переменных:

·  Две точки не могут быть определены с одним и тем же электрическим значением

·  Кривая должна непрерывно возрастать или убывать

·  Две точки не могут быть определены с одним и тем же физическим значением

Следующие ограничения применяются при определении таблиц преобразования для проекта:

·  Не больше чем 127 таблиц преобразования может быть определено в одном проекте

·  Не больше чем 32 точки может быть определено для одной таблицы преобразования.



Правила исполнения


ISaGRAF - это синхронная система. Все операции исполняются по часам. Основная единица длительности времени называется временным циклом:

Основные операции в течение временного цикла:

Это позволяет системе:

- гарантировать, что входные переменные сохраняют свое значение в течение временного цикла,

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

- правильно работать с одними и теми же глобальными переменными из различных программ,

- оценивать и управлять временем реакции всего приложения.



Предметный указатель


%....................................... A-103, B-209

:=................................................... A-155

:= (ST присвоение).................... B-265

=1................................................... B-288

1 уровень SFC............................. D-501

AnyTarget..................................... A-117

appli.tst............................. C-386, C-420

appli.x8m........................... C-386, C-420

ARCREATE.................................. B-364

ARREAD...................................... B-365

ARWRITE..................................... B-366

ASCII............................................. B-353

ASIN.............................................. B-337

Begin................................................ A-27

BinaryFile...................................... A-116

Boolean............................... A-91, D-498

C заголовок.................................. D-498

C код............................................. A-113

C функции........................ C-431, C-438

C функциональные блоки........... C-431

C функциональный блок............. A-169

C функция........................ A-169, D-498

CHAR............................................ B-354

Cycle............................................. A-157

DAY_TIME.................................. B-363

DDE.............................................. A-132

DELETE........................................ B-355

EN................................................... A-62

End...................................... A-27, A-159

ENO................................................ A-62

Ethernet........................................... A-37

F_CLOSE...................................... B-368

F_EOF........................................... B-369

F_ROPEN..................................... B-367

F_WOPEN.................................... B-367

FA_READ..................................... B-371

FA_WRITE................................... B-373

FALSE.............................................
A-91

FBD........................ A-69, C-439, D-500

FC........................... A-51, B-234, D-500

FC подпрограмма......................... B-236

FC соединитель.............................. A-54

FIND............................................. B-356

FM_READ.................................... B-376

From.............................................. A-118

Goto............................................... A-158

If A-159

IF................................................... B-238

IL....................................... A-136, D-501

INSERT......................................... B-357

Integer.............................................. A-91

ISA задача (OS9).......................... C-389

isa_main............................. C-401, C-404

isa_register_slave........................... C-400

ISAKER задача (OS9).................. C-390

ISAKERET.O (VxWorks)............. C-402

ISAKERSE.O (VxWorks).............. C-402

ISAMOD (VxWorks).................... C-399

ISANET задача (OS9).................. C-391

ISATST задача (OS9)................... C-390

ISAx0............................................. C-396

ISAx1............................................. C-396

ISAx1 ·(VxWorks)......................... C-409

ISAx2............................................. C-396

ISAx3............................................. C-396

ISAx4............................................. C-396

ISAx5............................................. C-396

ISAx6............................................. C-396

Label............................................. A-158

LD.................. A-48, A-58, A-60, D-501

LEFT............................................. B-358

LIMIT........................................... B-346

MAX............................................. B-345

Message........................................... A-91

MID............................................... B-359

MIN............................................... B-345

MLEN...........................................


B-360

MOD............................................. B-347

Modbus......................................... D-502

MODBUS....................................... A-94

MUX4........................................... B-348

MUX8........................................... B-349

N модификатор.............................. A-47

NOT...................................... A-71, A-73

ODD.............................................. B-350

OEM ключ................................... A-166

OEM параметр............................. A-166

OEM параметр (плата В/В)......... D-502

OR................................................... A-70

P модификатор............................... A-46

P0 модификатор............................. A-47

P1 модификатор............................. A-47

Print.............................................. A-156

PrintTime..................................... A-156

Quick LD.................... A-48, A-58, A-60

RAND........................................... B-351

Real.................................................. A-91

REPEAT........................................ B-238

REPLACE..................................... B-361

Return................................... A-61, A-71

RIGHT.......................................... B-362

Run-time.......................................... A-33

SEL................................................ B-352

Sequential........................................ A-27

SFC A-38, A-112, A-128, A-176, C-439, D-504

SFC галерея.................................... A-49

SHL................................................ B-343

SHR............................................... B-344

SIN................................................. B-340

SlavesLink...................................... C-406

ST............... A-48, A-136, C-448, D-504

SYSTEM....................................... B-308

Target............................................ A-117

TextFile......................................... A-117



Timer............................................... A-91

To.................................................. A-118

TP.................................................. B-321

TRUE.............................................. A-91

tst_main_ex.................................... C-404

ULongData.................................... A-115

VarList........................................... A-116

Wait............................................... A-157

WHILE.......................................... B-238

XOR.............................................. B-288

Активизировать........................... A-124

Активность шага.............. B-270, D-498

Активность шага.......................... B-214

Аналог.............................. C-433, D-498

Аналоги......................................... C-432

Аргумент...................................... A-168

Арксинус...................................... B-337

Архив......... A-25, A-164, A-171, A-180

Атрибут........................................ D-498

Библиотека A-25, A-32, A-33, A-101, A-102, A-121, A-149, A-161, A-171, C-431, D-502

Бинарный селектор...................... B-352

Битмап........................................... A-138

Битовое поле................................ A-140

Блокировать................................. A-126

Блокировка.................................. A-182

Булевское действие..................... D-498

Булевское действие....................... A-47

В/В A-34, A-100, A-101, A-122, A-126, A-148, A-164, A-165, A-182

В/В специфический...................... B-237

Вввод............................................ A-166

Ввод......... A-100, A-122, A-148, A-150

Верхний уровень........................... A-27

Виртуальная плата.......... A-182, D-505

Виртуальная плата...................... A-101

Виток........................ A-60, A-70, D-499

Вклеить LD.................................... A-66

Внутренний.................................. D-501

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


D-503

Восстановить A-25, A-164, A-171, A-173, A-180

Временной цикл........................... D-499

Временной цикл................. A-33, A-126

Вставить FBD...................... A-74, A-75

Вставить FC................................... A-56

Вставить SFC................................. A-44

Вставить виток............................... A-64

Вставить контакт........................... A-64

Вставить переменную......... A-46, A-90

Вставить подстроку..................... B-357

Вставить слот............................... A-101

Вставить ступень........................... A-66

Вставить текст................................ A-78

Вставить файл................................ A-79

Вставить элемент FBD.................. A-72

Вставить элемент FC..................... A-53

Встроенный исходный код.......... A-145

Вход.................................. B-203, D-501

Выбрать Прожектор................... A-140

Выбрать элемент FBD................... A-72

Выбрать элемент FC...................... A-53

Вывод...... A-100, A-122, A-148, A-166

Выгрузить.................................... A-144

Выгрузить (подготовить)........... A-145

Выполнить один цикл.................. A-126

Выражение................................... D-500

Вырезать FBD............................... A-74

Вырезать FC.................................. A-56

Вырезать LD.................................. A-66

Вырезать SFC................................ A-44

Вырезать переменную.................. A-90

Вырезать текст............................... A-78

Выход................................ B-203, D-502

Галерея........................................... A-49

Генерация кода.................. A-33, A-110

Глобальный.................................. D-500

Графика............................ A-138, A-143

Группа................................ A-24, A-140

Группа проектов........................... A-24

Дамп.............................................. A-135

Двигать FBD..................................


A-72

Двигать FC..................................... A-55

Двигать SFC................................... A-44

Двигать плату.............................. A-101

Двигать Прожектор.................... A-140

Двинутьпрограмму....................... A-31

Действие................. A-51, B-237, D-498

Действительная плата.................. A-101

Действительный........................... D-503

Действия....................................... B-235

Дескриптор.......................... A-22, A-34

Дескриптор проекта...................... A-23

Диагностика.................................. A-147

Диапазон....................................... D-503

Директория.................................. A-187

Длина сообщения......................... B-360

Длина строки................................ B-360

Длительность активности B-214, B-270

Дневник.............................. A-30, D-500

Документ................. A-24, A-35, A-174

Документ проекта.......................... A-24

Документ проекта............. A-35, A-174

Дочерняя...................................... B-199

Дочерняя SFC.............................. B-199

Дочерняя программа..................... A-28

Дочерняя программа SFC A-28, D-499

Заголовки C...................... C-434, C-441

Заголовок C.................................. C-465

Задержанная операция (IL)......... D-500

Закрытый В/В.............................. D-502

Закрыть файл............................... B-368

Заменить A-45, A-56, A-67, A-74, A-78

Заменить подстроку..................... B-361

Запись в файл............................... B-373

Запись массива.............................. B-366

Защита A-24, A-105, A-162, A-178, A-180

Идентификатор............................ D-501

Иерархия..... A-27, A-31, B-198, D-501

Извлечение подстроки (в середине) B-359

Извлечение подстроки (слева).... B-358

Извлечение подстроки (справа).. B-362

Измененный стиль......................... A-76

Изменить...................................... A-125



Изменить переменную.................. A-90

Изменить размер FC..................... A-55

Изменить размер Прожектора... A-140

Иконка.......................................... A-140

Импорт........................................... A-95

Импортировать функциональный блок            A-32

Импортировать функцию............. A-32

Импульс......................................... A-46

Импульсное действие.................. D-503

Импульсное таймирование.......... B-321

Инвертированная связь...... A-71, A-73

Инструкция.................................. D-501

Интерфейс.......................... A-31, A-168

Истинность перехода................... D-504

История................................ A-23, A-35

Исходник C C-435, C-442, C-452, C-465

Исходный код C........................... D-498

Канал.................... A-102, A-104, A-166

Канал В/В..................................... D-501

Ключевое слово........................... D-501

ключевой код OEM..................... D-502

Колонка........................................ A-138

Комментарий.................... B-238, D-499

комментарий FBD.......................... A-72

Комментарий FC............................ A-54

Комментарий программы.............. A-30

Комментарий ступени......... A-63, A-67

Комметарий (SFC)....................... D-499

Коммуникация A-37, A-126, A-144, A-186

Компилировать A-33, A-110, A-163, A-167

Компилятор C.................. C-431, C-465

Конец............................................. B-234

Конечный шаг................................ A-43

Константа...................................... D-499

Контакт.................... A-60, A-70, D-499

Контакт с отрицательным фронтом B-250

Контакт с положительным фронтом B-250

конфигурация В/В....................... A-164

Конфигурация В/В........................ A-22

Копировать FBD........................... A-74

Копировать FC.............................. A-56

Копировать LD.............................. A-66

Копировать SFC............................


A-44

Копировать пееменную................. A-90

Копировать программу................ A-32

Копировать текст........................... A-78

Копия....... A-164, A-171, A-172, A-180

Коснись........................................... A-33

Кривая................. A-138, A-139, A-143

Крснись........................................ A-111

Локальная..................................... A-168

Локальный.................................... D-502

Макроопределение...................... D-500

Макрос................................. A-87, A-91

Макрошаг.................................... D-502

Макрошаг............................ A-41, A-43

Максимум..................................... B-345

Маркер (SFC).............................. D-504

Масштаб.................... A-59, A-67, A-76

Матрица....................................... D-502

Мдификатор (IL)......................... D-502

Менеджер библиотек.................. A-161

Менеджер библиотек....... C-433, C-447

Менеджер программ..................... A-27

Меню инструменты....................... A-35

Метафайл..................................... A-138

Метка...................... A-71, B-242, B-257

Метка (IL).................................... D-501

Метка ступени............................... A-64

Минимум...................................... B-345

Модификация на ходу................. A-125

Модификация на ходу................. A-128

Модуль......................................... B-347

Мультиплексор с 4 входами....... B-348

Мультиплексор с 8 входами....... B-349

На линии......................................... A-36

На ходу......................................... A-123

Набор инструментов................... D-504

Найти A-45, A-56, A-67, A-74, A-78, A-85

Найти подстроку.......................... B-356

Начало........................................... B-234

Начальная ситуация.................... D-501

Начальный шаг................ D-498, D-501

Начальный шаг.................... A-41, A-43

Не сохраненное..............................


A-47

Не сохраненное действие............. D-502

Непосредственно представленные переменные                A-103, B-209

Новая переменная.......................... A-89

Новая программа........................... A-29

Новая ступень................................ A-63

Новая функция.............................. A-29

Новый проект................................ A-22

Новый функциональный блок...... A-29

Новый элемент библиотеки......... A-161

Номер версии............................... A-125

Номер подчиненного..................... A-37

Номер ссылки.............................. D-503

Нормальный стиль........................ A-76

Область действия................ A-86, A-88

Общие........................................... A-171

Общий........................................... D-499

Объявление.......................... A-30, A-86

Окно вывода.................................. A-85

Операнд (IL)................................. D-502

Оператор...................................... D-504

Операторы (IL)............................ B-277

Операция (IL)............................... D-502

Описатель проекта......................... A-34

Оптимизатор................................ A-112

Опции компилятора A-34, A-111, A-145

Освобождение перехода.............. D-499

Открыть программу......... A-30, A-122

Открыть проект............................. A-23

Открыть файл.............................. B-367

Отладчик................ A-36, A-123, A-147

Отрицательный контакт.............. B-250

Отслеживание изменений.............. A-76

Ошибка......................................... A-114

Ошибка выполнения.................... A-127

Ошибка исполнения..................... D-503

Ошибка исполнения....................... A-33

Память............................................ A-13

Панель управления..................... A-123

Параметер...................................... A-31

Параметр...................................... A-168

Параметр (C функции)................


C-439

Параметр (C функция)................ D-502

Параметр (Плата В/В)................. D-502

Параметр ( функциональный блок) C-449

Параметр платы............... A-102, A-166

Пароль A-24, A-105, A-162, A-178, A-180

Перейти...................... A-45, A-56, A-78

Перекрестная ссылка.................. D-499

Перекрестные ссылки....... A-34, A-121

Переменная A-30, A-46, A-65, A-71, A-75, A-78, A-86, A-121, A-122, A-127, A-168, D-505

Переменная В/В........................... D-501

Переменные ВВ................ C-432, C-433

Перенумеровать............................ A-45

Переход.................. A-38, A-128, D-504

Печатать программу..................... A-82

Печать............ A-24, A-35, A-89, A-176

Печать........................................... A-174

Плата................................ A-100, A-101

Плата В/В......................... A-165, D-501

Подпрограмма.............................. B-236

Подпрограмма....... A-28, B-200, D-504

Подпрограмма FC......................... A-28

Подсмотреть переменную.......... A-134

Положительный контакт............. B-250

Порядок выполнения.................... A-74

Последний шаг............................. D-500

Последовательная Функциональная Диаграмма              D-503

Последовательный....................... B-198

Последовательный канал.............. A-37

Поток.......... A-54, B-235, B-237, B-239

Потоковая диаграмма.................... A-51

Потоковая Диаграмма................. D-500

Потоковые диаграммы................ B-234

Пошаговый режим....................... D-499

Пошаговый режим......................... A-33

Право доступа............................. A-178

Преобразование.............. A-107, D-499

Преобразование ASCII -> символа B-354

Преобразование символа -> ASCII B-353

Привод архива............................. A-172

Привязка В/В................................. A-34

Присвоение (в ST,

=)................................................ B-265

Проверить............. A-33, A-110, A-167



Проверка четности чет/нечет...... B-350

Программа A-27, A-80, A-151, B-198, D-503

Программа верхнего уровня...... D-504

Проект.............................. A-171, D-503

Прожектор................................... A-138

Прыжок........ A-61, A-71, B-242, B-257

Прыжок на шаг............................ D-501

Прыжок на шаг.............................. A-40

Псевдоним...................................... A-67

Рабочее пространство отладки..... A-36

Разблокировать........................... A-126

Разделители проектов................... A-22

Разделитель.................................. D-503

Разединить.................................... A-140

Расхождение......................... A-39, A-43

Реальная плата............................. D-503

Реальное время.................. A-33, A-125

Регистр (IL).................................. D-503

Редактировать дескриптор проекта A-23

Редактор FBD...................... A-69, A-80

Редактор FC................................... A-51

Редактор IL.................................... A-80

Редактор LD................................... A-60

Редактор Quick LD........................ A-80

Редактор SFC....................... A-38, A-80

Редактор ST................................... A-80

Редактор Потоковых Диграмм..... A-51

Режим реального времени.......... D-503

Релейная Диаграмма.................... D-501

Ресурс........................................... A-115

Ресурсы.......................................... A-34

Решение........ A-51, A-55, B-235, D-500

Родительская программа............ D-503

Родительская программа  SFC... D-500

Связь A-37, A-71, A-73, A-74, A-126, A-144, A-186, B-235, B-237, B-239

Связь FC........................................ A-54

Сдвиг влево.................................. B-343

Сдвиг вправо................................ B-344

Сдвинуть проект........................... A-22

Секция................................ A-27, D-503

Секция Begin................................ D-498



Секция End................................... D-500

Секция Sequential......................... D-503

Сетевой адрес............................... D-502

Сетевой адрес...................... A-88, A-90

Сетевые адреса............................... A-94

Сетка............................................... A-63

Сжатие.......................................... A-172

Симулятор............. A-35, A-150, A-152

Симуляция................................... A-148

Синус............................................ B-340

Скорость передачи........................ A-37

Скрипт.............................. A-152, A-154

Словарь A-30, A-86, A-122, A-168, C-433, C-447, D-500

Сложное оборудование В/В....... A-165

Слот.................................. A-101, A-104

Случайное число.......................... B-351

Содержание.................................. A-174

Соединение................ A-71, A-73, A-74

СоединениеВ/В............................. D-501

Соединения В/В........................... A-100

Соединитель........... A-54, B-237, D-499

Создание массива......................... B-364

Создать............................... A-33, A-110

Сообщение....................... A-135, D-502

Сообщение компилятора............. A-114

Сообщение об ошибке................... A-85

Сортировать.................................. A-90

Сохранить....................................... A-25

Сохранить сисок.......................... A-134

Специфический В/В..................... B-235

Список переменных A-134, A-136, A-141

Список проектов................. A-22, A-24

Спмсок Инструкций.................... D-501

Старт............................................. A-124

Стиль.................................. A-76, A-141

Стоп.............................................. A-124

Страница....................................... A-176

Строка.......................................... D-504

Структурный текст..................... D-504

Ступень................................ A-66, A-73



Схождение............................ A-39, A-43

Таблица преобразований............ A-107

Таблица преобразования............ D-499

Таблица преобразования............ A-109

Таблица символов........................ A-189

Таймаут.......................................... A-37

Таймер.......................................... D-504

Таймирование цикла.................... A-151

Текст............................................. A-138

Текущий результат (IL).............. D-499

Тест A-51, A-55, A-123, A-148, B-235, D-504

Технические замечания................ D-504

Технические замечания.... A-102, C-432

Техническое замечание................ A-163

Тип A-86, A-88, A-100, A-121, A-166, D-504

Тип витка........................................ A-66

Тип контакта.................................. A-66

Тип платы..................................... A-101

Точка................................ A-107, A-108

Точка останова.... A-126, A-128, D-498

Угол................................................ A-72

Удаленный стиль........................... A-76

Удалить FBD................................. A-74

Удалить FC.................................... A-56

Удалить LD.................................... A-66

Удалить SFC.................................. A-44

Удалить плату.............................. A-101

Удалить подстроку...................... B-355

Удалить программу...................... A-32

Удалить текст................................. A-78

Уровень 2  SFC............................ D-501

Уровень защиты.......................... A-178

Условие......................................... B-235

Условие (для перехода)............... D-499

Файл

определение конца файла......... B-369

Файл архива.................................. A-173

Файл определения ресурсов....... A-115

Фоновая картинка........................ A-138

Фронт............................................ D-500

Фронт контакта............................ B-250

Функции преобразования C-431, C-432



Функциональная Блочная Диаграмма D-500

Функциональный блок...... A-27, D-500

Функциональный блок A-31, A-61, A-70, A-75, A-87, A-91, A-163, B-201, C-446

Функция A-27, A-31, A-163, A-167, B-200

Функция преобразования........... A-170

Целевая задача............................. A-111

Целевой цикл............................... D-504

Целое............................................ D-501

Цель.............................................. D-504

Цикл.................................. B-198, B-203

Цикл за Циклом........................... A-125

Цикл профилера.......................... A-151

Циклический.................... B-198, D-499

Четность......................................... A-37

Чтение массива............................. B-365

Чтение файла................................ B-371

Чтение файла................................ B-376

Шаг......................... A-38, A-128, D-504

Шина..................................... A-60, A-61

Шина питания............................... D-503

Шина питания............ A-60, A-61, A-69

Шпион.................. A-134, A-136, A-138

Шрифт.......................................... A-177

Экземпляр............................ A-87, A-91

Экземпляр функционального блока C-447

Экспорт.......................................... A-95

Экспортировать функциональный блок           A-33

Экспортировать функцию............ A-33

Язык.................................... A-28, B-203

Язык C.......................................... C-431

Язык C C-431, C-434, C-435, C-441, C-452, C-465, D-498

Ячейка........................................... D-498

[1] Это руководство подразумевает, что пользователь знаком с целевой задачей ISaGRAF


Сообщения об ошибках и их описание


Список ошибок:

Код

Сообщение

Тип

1

Не могу выделить память под базу данных для исполнения

система

2

Неправильная база данных приложения (Motorola/Intel)

приложение

3

Не могу выделить почтовый ящик для связи

система

4

Не могу привязать базу данных ядра

система

5

Таймаут по запросу к ядру

система

6

Таймаут по ответу от ядра

система

7

Не могу инициализировать связь

система

8

не могу выделить память под сохраняемые переменные

приложение

9

приложение остановлено

приложение

10

слишком много одновременных действий N или P

приложение

11

слишком много одновременных действий setting

приложение

12

слишком много одновременных действий resetting

приложение

13

неизвестная инструкция TIC

приложение

16

не могу выполнить запрос чтения данных

система

17

не могу выполнить запрос записи данных

система

18

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

система

19

не могу выполнить запрос modbus

система

20

не могу выполнить запрос приложения отладчика

система

21

не могу ответить отладчику

система

23

неизвестный код запроса

система

24

коммуникационная ошибка ethernet

система

25

коммуникационная ошибка синхронизации

система

28

не могу выделить память для приложения

система

29

не могу выделить память для обновления приложения

система

30

неизвестный код OEM

приложение

31

не могу инициализировать плату булевских входов

приложение

32

не могу инициализировать плату аналоговых входов

приложение

33

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

приложение

34

не могу инициализировать плату булевских выходов

приложение

35

не могу инициализировать плату аналоговых выходов

приложение

36

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

приложение

37

не могу прочитать булевский вход

приложение

38

не могу прочитать аналоговый вход

приложение

39

не могу прочитать строковый вход

приложение

40

не могу вывести переменную булевский выход

приложение

41

не могу вывести переменную аналоговый выход

приложение

42

не могу вывести переменную строковый выход

приложение

43

не могу обработать булевскую переменную

приложение

44

не могу обработать аналоговую переменную

приложение

45

не могу обработать строковую переменную

приложение

46

не могу открыть плату

Приложение

47

не могу закрыть плату

Приложение

50

не могу переписать переменную булевский выход

Программа

51

не могу переписать переменную аналоговый выход

Программа

52

не могу переписать переменную строковый выход

Программа

61

неизвестный системный код запроса

Программа

62

переполнение периода выборки

Программа

63

функция пользователя не реализована

Приложение

64

деление целого на 0

Программа

65

функция преобразования не реализована

Приложение

66

функц. блок не реализован

Приложение

67

стандартная функция не реализована

Приложение

68

деление вещественного на 0

Программа

69

неправильные рабочие параметры

Приложение

72

параметры приложения нельзя модифицировать

Приложение

73

не могу обновить: отличается набор булевских переменных

Приложение

74

не могу обновить: отличается набор аналоговых переменных

Приложение

75

не могу обновить: отличается набор переменных типа timer

Приложение

76

не могу обновить: отличается набор переменных типа message

Приложение

77

не могу обновить: не могу найти новое приложение

Приложение

> 100

особый OEM код ошибки, за более детальной информацией обращайтесь к вашему поставщику.

<
3 типа ошибок соответствуют различным источникам неисправностей:

-Система:

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

Попытайтесь перезапустить вашу целевую задачу, или запустить другие приложения.

О таких ошибках следует докладывать вашей поддержке ISaGRAF.

-Приложение:

Такие проблемы обусловлены параметрами приложения, размером или содержанием.

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

-Программы:

Такие проблемы обусловлены определенной последовательностью программы.

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

Описание сообщений об ошибках:

1. не могу выделить память под базу данных для исполнения

система

Не хватает оперативной памяти.

2. неправильная база данных приложения (Motorola/Intel)

приложение

Неправильный формат сохраненного или загруженного файла приложения. Такая ошибка возникает если приложение было сгенерировано для Intel, а загружено в Motorola или наоборот или если файл был изменен.

3. не могу выделить почтовый ящик для связи

система

Это сообщение об ошибке возникает тогда, когда задача связи не может захватить память для объекта 3 для связи между задачами.

4. не могу привязать базу данных ядра

система

Это сообщение об ошибке выдается задачей связи если она не может найти целевой задачи с номером подчиненного определенным в командной строке.

5. таймаут по запросу к ядру

система

Задача связи не может послать запрос целевой задаче. Целевая задача отсутствует либо занята.

6. таймаут по ответу от ядра

система

Задача связи не может получить ответ от целевой задачи. Целевая задача отсутствует либо занята.

7. не могу инициализировать связь

система

Это сообщение выдается, когда уровень связи не может инициализировать физическую связь.


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

8. не могу выделить память под сохраняемые переменные

приложение

ISaGRAF не может работать с сохраняемыми переменными. Возможны две причины этого сообщения:

- строка, переданная как параметр целевой задаче синтаксически неверна

- размер памяти определенного для каждого блока недостаточен

Вы должны проверить синтаксис параметра сохраняемых переменных или попытаться уменьшить количество сохраняемых переменных.

9. приложение остановлено

приложение

Это сообщение выдается, если приложение было остановлено отладчиком.

10. слишком много одновременных действий N или P

приложение

Это сообщение возникает, если целевая задача должна выполнять слишком много не запоминаемых, импульсных действий или циклических блоков одновременно. Максимальное количество одновременных действий 2 + 4 на программу SFC.

11. слишком много одновременных действий setting

приложение

Это сообщение возникает, если один из циклов целевой задачи должен выполнить слишком много действий установки (выполняемых, когда шаг становится активным).

12. слишком много одновременных действий resetting

приложение

Это сообщение возникает, если один из циклов целевой задачи должен выполнить слишком много действий сброса (выполняемых, когда шаг становится неактивным).

13. неизвестная инструкция TIC

приложение

Целевая задача определила ошибку в коде приложения. Возможны два объяснения:

- Внешняя программа пишет в код приложения. Попытайтесь локализовать ошибку в режиме CC и убедитесь, что интерфейс В/В не имеет неверных параметров.

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

16. не могу выполнить запрос чтения данных

система

Определена ошибка связи при ответе на запрос ISaGRAF Modbus с кодом 18 (чтение файла).


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

17. не могу выполнить запрос записи данных

система

Определена ошибка связи при ответе на запрос ISaGRAF Modbus с кодом 17 (запись в файл). Проверьте связь и конфигурацию системы со стороны целевой задачи и подсистемы разработки.

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

система

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

19. не могу выполнить запрос modbus

система

Определена ошибка связи при ответе на запрос Modbus. Проверьте связь и конфигурацию системы со стороны целевой задачи и подсистемы разработки.

20. не могу выполнить запрос приложения отладчика

система

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

21. не могу ответить отладчику

система

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

23. неизвестный код запроса

система

Неверный запрос отладчика

24. коммуникационная ошибка ethernet

система

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

Второе поле означает:

1.Ошибка при посылке или приеме

2.Ошибка при создании сокета

3.Ошибка при связи или прослушивании сокета

4.Ошибка при приеме нового клиента

25. коммуникационная ошибка синхронизации

система

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

28. не могу выделить память для приложения

система

Не хватает оперативной памяти.


Сравните размер памяти приложения и размер свободной оперативной памяти.

29. не могу выделить память для обновления приложения

система

Не хватает оперативной памяти. Сравните размер памяти приложения и размер свободной оперативной памяти.

30. неизвестный код OEM

приложение

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

Проверьте соединение В/В в системе разработки и используйте атрибут 'VIRTUAL' чтобы локализовать неправильную плату. Ваша библиотека системы разработки может не соответствовать версии вашей целевой задачи.

31. не могу инициализировать плату булевских входов

приложение

Неправильно инициализирована плата цифрового ввода. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы цифрового ввода.

32. не могу инициализировать плату аналоговых входов

приложение

Неправильно инициализирована плата аналогового ввода. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы аналогового ввода.

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

приложение

Неправильно инициализирована плата ввода сообщений. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы ввода сообщений.

34. не могу инициализировать плату булевских выходов

приложение

Неправильно инициализирована плата цифрового вывода. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы цифрового вывода.

35. не могу инициализировать плату аналоговых выходов

приложение

Неправильно инициализирована плата аналогового вывода. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы аналогового вывода.

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

приложение

Неправильно инициализирована плата вывода сообщений. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы вывода сообщений.

37. не могу прочитать булевский вход

приложение

Ошибка при чтении платы цифрового ввода.


Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы цифрового ввода.

38. не могу прочитать аналоговый вход

приложение

Ошибка при чтении платы аналогового ввода. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы аналогового ввода.

39. не могу прочитать строковый вход

приложение

Ошибка при чтении платы ввода сообщений. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы ввода сообщений.

40. не могу вывести переменную булевский выход

приложение

Ошибка при записи платы цифрового вывода. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы цифрового вывода.

41. не могу вывести переменную аналоговый выход

приложение

Ошибка при записи аналогового вывода. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы аналогового вывода.

42. не могу вывести переменную строковый выход

приложение

Ошибка при записи платы вывода сообщений. Проверьте связь ввода/вывода в подсистеме разработки и параметры Вашей платы вывода сообщений.

43. не могу обработать булевскую переменную

приложение

Ошибка при исполнении вызова OPERATE для болевой переменной. Проверьте параметры вашего вызова OPERATE.

44. не могу обработать аналоговую переменную

приложение

Ошибка при исполнении вызова OPERATE для аналоговой переменной. Проверьте параметры вашего вызова OPERATE.

45. не могу обработать строковую переменную

приложение

Ошибка при исполнении вызова OPERATE для переменной сообщения. Проверьте параметры вашего вызова OPERATE.

46. не могу открыть плату

приложение

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

47. не могу закрыть плату

приложение

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



50. не могу переписать переменную булевский выход

программа

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

51. не могу переписать переменную аналоговый выход

программа

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

52. не могу переписать переменную строковый выход

программа

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

61. неизвестный системный код запроса

программа

Программа использует неправильный системный вызов.

62. переполнение периода выборки

программа

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

Существует несколько способов устранения этого сообщения:

- уменьшить количество операций в том месте, где было выдано сообщение

- уменьшить количество переходов, оптимизировать сложную обработку и т.д.

- уменьшить загрузку процессора другими задачами для того, чтобы дать больше времени ISaGRAF

- уменьшить нагрузку на связь для того, чтобы дать больше времени ISaGRAF

- использовать динамическую модификацию длительности циклов, чтобы адаптировать длительность циклов к различным этапам процесса



- установить нулевую длительность цикла и дать возможность ISaGraf так быстро как она может без контроля превышения времени цикла.

63. функция пользователя не реализована

приложение

Программа использует неизвестную целевой задаче C функцию. Ваша библиотека подсистемы разработки может не соответствовать версии целевой задачи.

64. деление целого на 0

программа

Программа пытается разделить целое число на 0. Когда такое случается ISaGRAF использует в качестве результата максимальное число. Если операнд отрицательный то число инвертируется.

Когда это случается, ISaGRAF использует в качестве результата максимальное аналоговое значение.

Если операнд отрицательный, результат инвертируется.

65. функция преобразования не реализована

приложение

Программа использует C функцию преобразования неизвестную целевой задаче. Ваша библиотека подсистемы разработки может не соответствовать версии целевой задачи. Когда такое случается ISaGRAF не преобразует значение.

66. функц. блок не реализован

приложение

Программа использует C функциональный блок неизвестный целевой задаче. Ваша библиотека системы разработки не соответствует версии вашей целевой задачи.

67. стандартная функция не реализована

приложение

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

68. деление вещественного на 0

программа

Программа пытается разделить действительное число на 0. Когда такое случается ISaGRAF использует в качестве результата максимальное число. Если операнд отрицательный то число инвертируется.

Когда это случается, ISaGRAF использует в качестве результата максимальное аналоговое значение.

Если операнд отрицательный, результат инвертируется.

69. неправильные рабочие параметры

приложение

Ваше приложение использует вызов OPERATE с неправильными параметрами. Обычно это отфильтровывается компилятором. Это может быть таймер либо внутренняя переменная.

72. параметры приложения нельзя модифицировать

приложение

<


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

73. не могу обновить: отличается набор булевских переменных

приложение

Модифицированное приложение не может начать работу, потому что некоторые булевы переменные были добавлены или удалены, по сравнению с текущим приложением.

74. не могу обновить: отличается набор аналоговых переменных

приложение

Модифицированное приложение не может начать работу, потому что некоторые аналоговые переменные были добавлены или удалены, по сравнению с текущим приложением.

75. не могу обновить: отличается набор переменных типа timer

приложение

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

76. не могу обновить: отличается набор переменных типа message

приложение

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

77. не могу обновить: не могу найти новое приложение

приложение

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


Пример приложения


Этот раздел объясняет, шаг за шагом, все основные операции, необходимые для создания, разработки и тестирования коротких, но завершённых многоязыковых приложений.

Ниже приведено полное описание такой программы. В ней используется как LD, так и SFC.

Boolean variables:

             IX0_1, IX0_2:                 вход. Переменные для команды процесса

             RunCmd:                       внутренняя команда "run/stop"

             QX1_1:                          вых. Переменная: состояние процесса

Program Command:                   Циклическая секция begin – LD язык

                                                  Вычисляет внутреннюю команду "run/stop"

Program RunStop:                     Sequential section - SFC язык

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

Start     Запуск Системы разработки ISaGRAF

Для запуска Системы разработки ISaGRAF, дважды щёлкните мышью на иконе «Projects» в группе «ISaGRAF». Это приведёт к открытию окна Менеджера Проектов.

        Создание проекта

Создайте проект (под названием «RunStop»), используя команду «Новый» из меню «Файл» или кнопку «Новый». В диалоговом окне:

                                      Введите имя проекта: "RunStop".

                                      Выберите конфигурацию ввода-вывода:  "Sim_Boo".

                                      Нажмите кнопку "Принять".

                                      Теперь проект создан.

        Открытие проекта

Программы проекта появляются при открытии окна Менеджера Программ ISaGRAF. Пользуйтесь командой «Редактор» окна Менеджера Программ, или щёлкните два раза мышью на имени нужного проекта, или воспользуйтесь кнопкой «Редактор».

        Создание программ

Окно Менеджера Программ сейчас открыто и пусто (т.к. ни одна программа не определена). Первая программа создаётся при помощи команды «Новый» меню «Файл» или кнопки «Новый». В окне диалога:

                                      Введите имя программы: "Command".


                                      Выберите язык "Quick LD" .
                                      Выберите раздел "Beginning of cycle".
                                      Нажмите кнопку "Принять" для создания программы.
Те же операции должны быть произведены для второй программы:
Используйте команду «Новый» или кнопки «Новый». В окне диалога:
                                      Введите имя программы:  "RunStop".
                                      Выберите язык "SFC".
                                      Выберите раздел "Sequential".
                                      Нажмите кнопку "Принять" для создания программы.
Теперь программы созданы. Они появились в окне Менеджера Программ.
        Объявление переменных
Перед вводом программы должны быть объявлены внутренние переменные, используемые в данной программе. Это делается при помощи команды «Словарь» меню «Файл» или кнопки Словарь. Переменные ввода-вывода автоматически объявляются при создании проекта.
      Теперь открыто окно словаря. При помощи меню «Файл»,
подменю  «Другой», подменю «Глобальные переменны» и команды «Булевские», выберите Глобальный Булевский Словарь. С тем же эффектом могут быть использованы кнопки «Глобальный» и «Булевский».
           Команда «Новый» меню «Редактор» используется для создания новой булевской переменной. Кроме этого, Вы можете воспользоваться кнопкой «Вставить объект». В открытом окне диалога введите описание внутренней переменной:
                                      имя:                                 RunCmd
                                      комментарий:                 Run/Stop command: internal
                                      атрибут:                          Выберите атрибут "Внутренняя"                     Нажмите кнопку «Сохранить»: переменная создана.
                                      Нажмите кнопку «Отказ» для выхода из окна диалога.


В завершение, покиньте редактор словаря при помощи команды «Выход» меню «Файл». Нажмите «Да» для сохранения изменений.
        Редактирование программы Quick LD
Для начала редактирования LD- программы  «Command», дважды щёлкните мышью на её имени в окне Менеджера Программ или воспользуйтесь кнопкой «Редактор».
      Редактор ISaGRAF Quick LD теперь открыт. Для увеличения рабочей области измените размер окна до полного экрана.
F2 F3       Нажмите клавиши F2 и F3:

           Связь переменных с символами LD: переместите курсор, используя стрелки клавиатуры. Поместите курсор на каждый символ и нажмите клавишу «Enter».  Откроется окно диалога выбора переменных.
                Для первого контакта введите  в окно диалога:  IX0_1 ; затем -  «Enter»
                Для второго контакта введите  в окно диалога:  IX0_2 ; затем -  «Enter»
                Для кольца введите  в окно диалога :  RunCmd ; затем -  «Enter»
Программа теперь завершена. Вот полученный результат :

Выйдите из редактора и сохраните изменения при помощи команды «Выход»  меню «Файл». Щёлкните «Да» для сохранения изменений.
        Редактирование программы SFC
Для начала редактирования программы SFC «RunStop», дважды щёлкните мышью на её имени в окне Менеджера Программ или воспользуйтесь кнопкой «Редактор».
      Окно редактора SFC теперь открыто. Для увеличения рабочей области измените размер окна до полного экрана.
           Начальный шаг уже существует и выбран. Нажмите стрелку "Вниз", чтобы выбрать пустую ячейку после начального шага (0,1)
F4 F3       Нажмите F4, затем F3, чтобы ввести шаг и переход.
F4 F3       Нажмите F4, затем F3, чтобы ввести еще один шаг и переход.
F5            Нажмите F5, чтобы ввести прыжок на шаг и выберите GS2 в качестве назначения прыжка.
 
           Схема готова. Нажмите кнопку "Увеличение" на панели инструментов, чтобы увеличить размер ячеек и дать место для инструкций второго уровня. Вот схема:

           Чтобы ввести программирование перехода "2", выберите его, используя стрелки клавиатуры, и нажмите клавишу "Enter".


Программное окно уровня 2 открыто. Введите программу уровня 2 для перехода 2:
                                      RunCmd;
^TAB      Нажмите клавиши "Control + Tab" чтобы передвинуть фокус назад на схему SFC , сдвиньте выбор на шаг 3, и нажмите клавишу "Enter" чтобы редактировать текст уровня 2:
                                      QX1_1;
                И сделайте то же самое, чтобы ввести текст перехода 3:
                                      Not (RunCmd);
^F4          Нажмите клавиши "Control + F4" чтобы закрыть окно уровня 2.
Программа SFC теперь завершена. Выйдите из редактора и сохраните изменения при помощи команды «Выход»  меню «Файл». Щёлкните «Да» для сохранения изменений.
        Создание кода приложения
Используйте меню «Создать»  и команду «Создать приложение» из окна Менеджера Программ для создания кода ( или соответствующую кнопку панели инструментов )
Когда генерация кода завершена, появится окно диалога, которое будет содержать вопрос : закончить генерацию кода сейчас ( now ) или продолжить работу ( continue ) : Нажмите кнопку «Выход».
        Симуляция
Используйте меню «Отладка»  и команду «Симулировать» из окна Менеджера Программ для запуска ядра симулятора ISaGRAF ( то же возможно при помощи соответствующей кнопки панели инструментов ).
При появлении окна симулятора, приложение может быть протестировано. В данном примере, входы 1 и 2 ( зелёные кнопки ) одновременно должны быть закрыты для запуска процесса ( на выходе красный светодиод ).
Закройте окно отладчика для выхода из симулятора : меню «Файл» - команда  «Выход»

Print


Значение:     Пишет строку или значение переменной в окно вывода. Текст выводится как одна новая строка в конце уже написанного текста в окне вывода.

Синтаксис:  Print '<text>'

         Print <varname>

Аргументы: <text>

любая строка в одиночных кавычках

                      <varname>

символ объявленной переменной или непосредственно представленная переменная В/В использующая соглашения "%".

Замечание:  Выходная переменная всегда форматируется в соответствии с соглашениями IEC.

Пример:        Print 'Hello'

         Print MyBooVar

Выход:    Hello

         MyBoovar = TRUE



PrintTime


Значение:     Пишет текущую временную отметку в выходное окно. Текст выводится как одна новая строка в конце уже написанного текста в окне вывода.

Синтаксис:  PrintTime

Замечание:  Временная отметка форматируется в соответствии с текущими установками Windows

Пример:        Print 'Time now is:'

         PrintTime

Выход:    Time now is:

         15:45:22



":=" Присвоение


Значение:     Присвоить значение переменной ISaGRAF. Она может быть внутренней переменной, входным каналом или выходным каналом.

Синтаксис:  <varname> := <constant_expression>

         <varname> = <constant_expression>

Аргументы: <varname>

символ объявленной переменной или непосредственно представленная переменная В/В использующая соглашения "%".

                      <constant_expression> константа, которая соответствует типу переменной. Для булевских, "0" и "1" могут использоваться "FALSE" и "TRUE". Для таймеров, префикс "T#" или "TIME#" может быть опущен.

Замечание:  Входная переменная устанавливаемая скриптом не требует блокировки. Чертеж соответствующего входного канала изменяется, когда входная переменная изменяется скриптом.

Предупреждение: не изменяйте входную или выходную переменную присоединенную к преобразованию, так как исполнение скрипта не поддерживает функции и таблицы преобразования.

Пример:        MyBooVar := 1         (* то же, что и TRUE *)

         MyIntVar := 1234

         MyRealVar := 1.2345

         MyMsgVar := 'Hello'

         MyTmrVar := t#12s



Профилер цикла


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

Пофилер цикла запускается командой "Инструменты / Профилер цикла" в меню окна симулятора ISaGRAF. Он показывает, для каждой программы, функции или функционального блока, процент потраченного времени цикла:

Если установлена опция "Вид / Средний", представленная информация – это средние проценты рассчитанные с момента запуска приложения, или с последнего запуска команды "Вид / Сброс".

Если не установлена опция "Вид / Средний", представленная информация – это измерения сделанные в течении последнего цикла. Вы можете также использовать эту возможность, когда приложение находится в режиме "Пошаговый" чтобы получить измерения зависящие от контекста приложения.

Используйте команду "Вид / Копировать" чтобы копировать имена программ и проценты в клипборд Windows в ASCII формате. Затем данные могут быть вставлены в текстовый документ или электронную таблицу.

            Важные замечания:

Это неточные измерения. Вычисление процентов основано на подсчете TIC инструкций, принимая во внимание различные времена выполнения инструкций. Вычисление не включает время потраченное на "C" функции и функциональные блоки.

Величина появляющаяся для функции или функционального блока – это сумма всех "времен вызова" из прикладных программ в одном цикле.

Вычисление времени основано на TIC коде и не обеспечивает надежной информации, если действительный код приложения сгенерирован на языке "C" и построен с использованием компилятора "C".



Программирование уровня с помощью Quick LD


Quick LD доступен для программирования 2-уровня. В случае теса решения LD диаграмма состоит из одной ступени с ровно одним витком, представляющим решение. Имя решения не повторяется на символе витка. Ниже приведен пример теста, написанный на Quick LD:

               

При программировании на Quick LD используйте стрелки клавиатуры для перемещения по логической сетке и используйте следующие горячие клавиши для вставки символов:

F2:...................... вставить контакт после выделенного символа

F3:...................... вставить контакт перед выделенным символом

F4:...................... вставить контакт параллельно выделенному символу

F5:...................... добавить виток параллельно выделенному символу (не для тестов)

F6:...................... вставить блок  после выделенного символа

F7:...................... вставить блок перед выделенным символом

F8:...................... вставить блок параллельно выделенному символу

F9:...................... добавить символ прыжка в параллель с выбранным витком (не для тестов)

Прыжок  ведет к имени ступени. Имя ступени может быть введено нажатием ENTER, когда выбран заголовок ступени. Редактор ISaGRAF помнит уже введенные метки ступеней, определены ли они для имени ступени или для операции прыжка. Диалог "Прыжок/Метка"' дает вам возможность ввести новую метку или выбрать существующую. Если вы вводите новое имя, оно будет автоматически добавлено в список. Кнопка "Уничтожить" используется для удаления выделенного имени из списка. Она не удаляет метку на ступени, которую вы выбрали в диаграмме. Чтобы это сделать, просто нажмите Принять

когда прямоугольник редактирования пуст.

Кроме этого вы можете щелкнуть мышью на функциональной кнопке на панели внизу окна программы 2-уровня вместо функциональных клавиш.

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

Нажмите Control + SPACE при выделенном контакте для выбора или изменения его типа (прямой, обратный). Обратитесь к разделу «Использование редактора Quick LD» этого документа за более подробным описанием возможностей Quick LD.



Программы


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

либо циклические операции. Циклические программы выполняются на каждом цикле целевой системы. Исполнение последовательных программ определяется динамическими правилами языка SFC.

Программы связаны друг с другом в иерархическое дерево. Программы, помещенные наверху иерархии, активизируются системой. Подпрограммы (нижний уровень иерархии) активизируются их родителями. Программы могут быть описаны любым из следующих графических или текстовых языков:

Язык последовательных функциональных схем (SFC) для программирования высокого уровня

Flow Chart (FC) for high level programming

Язык функциональных блочных диаграмм (FBD) для сложных циклических операций

Язык релейных диаграмм  (LD) только для булевских операций

Язык структурированный текст (ST) только для циклических операций

Язык инструкций (IL) для операций низкого уровня

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



Просмотр информации


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

        Команды редактирования

Команда “Удалить”

используется для очистки текстового окна. Окно автоматически очищается перед каждой генерацией кодов или операцией проверки синтаксиса. Команда “Копировать” используется для копирования отображенного текста в Windows clipboard, так что это может быть использовано другими приложениями, такими как редакторы текста ISaGRAF.

        Просмотр выходных сообщений компилятора

Команда “Сообщения”

показывает все сообщения, отображенные в течении последних операций “Создать” или “Проверить” в текстовом окне. Это применимо ко всем сообщениям об ошибках.

Другие выборы меню “Редактор”

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



Проверка достоверности связи PC-PLC


Большинство проблем, касающихся плохой связи между ISaGRAF Workbench и целевым PLC, представлены в окне отладчика статусным сообщением “нет связи”. Перед выполнением любых диагностических тестов должна быть проведена проверка достоверности связи, когда нет активных приложений на целевом PLC. Таким методом последовательная связь может быть проверена сама по себе, изолированно от эффектов выполнения приложения.

Язык “С”, используемый для описания функций преобразования и С функций, разрешает прямой доступ к целевой системе. Ошибки программирования в таком программном компоненте могут вызывать системные ошибки или некорректное поведение системы ISaGRAF. Такие проблемы могут случаться, когда драйверы В/В разрабатываются с Опцией ISaGRAF IO development tool. Системные ошибки, например, могут произойти, если плата В/В подключена на неправильный адрес шины. Следующая таблица дает синтетическое обобщение диагностики ошибок:

статус

контекст

диагностика

“нет связи”

(перед загрузкой)

- цель не запущена

- нет кабеля / плохой кабель

- неправильные параметры связи

- цель ISaGRAF плохо установлена

“нет связи”

(после загрузки)

цикл за циклом

режим запуска

- неправильная конфигурация В/В

- сбой системы

реальное время

режим запуска

- неправильная конфигурация В/В

- сбой системы (из-за С программирования)

“нет приложения”

- приложение не загружено

- приложение не запущено (из-за С программирования)

- несовпадение Intel/Motorola

- неправильная целевая версия



Проверка FC


Кроме присоединенных ST, LD или IL программ, некоторые другие синтаксические правила применяются к потоковой диаграмме. Ниже дан список основных правил:

- Все точки "соединения" всех символов должны быть связаны. (связь с символом "Конец" может быть опущена)

- Все символы должны быть связаны (не должно быть изолированных частей)

- Все соединители должны иметь правильный пункт назначения

Могут возникать другие синтаксические ошибки:

- Пустые действия (нет программы) рассматриваются, как шаги во время работы

- Пустые тесты (нет программы) рассматриваются, как "всегда истинные"



Прожектор


С помощью средства ISaGRAF «прожектор»  пользователь может определить списки наблюдения, которые могут показывать либо графические картинки либо списки во время отладки. Графические символы должны быть связаны с переменными ISaGRAF. Картинки могут быть определены и анимированы во процессе работы.

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

Вы можете также закрыть документ (запретить модификацию) используя команду ‘Файл/Закрыть». Когда документ закрыт Вы все же можете воздействовать на переменную при помощи двойного щелчка на ее символе.