 Использование генератора кода

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

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

Опции компилятора

Генерация исходных С кодов

Просмотр информации

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


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

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

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

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

Запрос на полную перекомпиляцию

Двойной щелчок на ошибке открывает программу и помещает курсор на ошибке


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

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

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


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

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

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


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

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


Опции компилятора

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

Выбор целевой задачи

Обработка SFC

Опции оптимизатора

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


Выбор целевой задачи

Верхний список показывает перечень возможных кодов назначения, которые могут быть сгенерированы. Знак >> используется для обозначения выбора. Генератор кодов ISaGRAF может генерить до 3 различных кодов в одной операции компилирования. Используйте кнопки Выделить и Отм. выделение для установки списка желаемых кодов, в соответствии с вашим оборудованием. Ниже даны стандартные коды назначения ISaGRAF:

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

ISA86M:	Этот TIC код (системно-независимый код) предназначен для ISaGRAF ядер, установленных на Intel процессорах. Тип процессора необходим только для установки последовательности байт в генерируемом коде.

ISA68M:	Этот TIC код (системно-независимый код) предназначен для ISaGRAF ядер, установленных на Motorola процессорах. Тип процессора необходим только для установки последовательности байт в генерируемом коде.

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

CC86M:	Этот выбор заставляет компилятор ISaGRAF генерить исходные коды неструктурного языка С, которые будут компилироваться и линковаться с  библиотеками ядра ISaGRAF для получения встроенных выполняемых кодов. Эта секция сделана для обеспечения совместимости с версиями ISaGRAF до V3.23, когда генерация кодов структурного "C" не поддерживалась.

Обратитесь к своему руководству по оборудованию, чтобы узнать тип ISaGRAF ядра, установленного на вашей PLC. Другие типы (машинные коды, исходные коды С …) могут быть поддержаны в будущих выпусках системы разработки ISaGRAF (Workbench).


Обработка SFC

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


Опции оптимизатора

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

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

Когда установлена опция Вычислять константные выражения, выражения констант вычисляются компилятором. Например, цифровое выражение 2 + 3 заменяется на 5 в получаемых кодах. Если эта опция не установлена, то выражения констант вычисляются во время работы.

Когда установлена опция Удалять неиспользуемые метки, Оптимизатор упрощает систему переходов и меток программы, удаляя неиспользуемые метки или нулевые переходы.

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

Когда установлена опция Удалить неиспользуемый код, Оптимизатор подавляет коды, которые не имеют значения. Например, если запрограммировано следующее выражение: var := 1; var := X;, то соответствующий генерируемый код будет только: var := X;.

Когда установлена опция Оптимизировать арифметические операции, Оптимизатор упрощает арифметические операции согласно специальным операндам. Например, выражение А + 0 заменяется на А. Когда установлена опция Оптимизировать булевские операции, Оптимизатор упрощает логические операции согласно специальным операндам. Например, логическое выражение A & A заменяется на A.

Когда установлена опция Строй бинарные диаграммы принятия решения, Оптимизатор заменяет логические уравнения (смесь операторов AND, OR, XOR и NOT) сокращенным списком операций перехода. Преобразование происходит только в том случае, если ожидаемое время последовательности переходов меньше, чем время ожидаемое для оригинального выражения.

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

Выигрыш(произв.)	время

Оптимизация в два прохода	xxxx	(*)

Оптимизировать константные выражения	xxxxxxxx	xxxx

Удалять неиспользуемые метки	xxxx	xxxxxxxx

Оптимизировать копирование переменных	xxxx	xxxxxxxx

Оптимизировать выражения	xxxx	xxxxxxxx

Удалять неиспользуемый код	xxxx	xxxxxxxx

Оптимизировать арифметические операции	xxxxxxxx	xxxx

Оптимизировать булевские операции	xxxxxxxx	xxxx

Строить бинарные диаграммы решений	xxxxxxxxxxx 	xxxxxxxxxxx

(*)  время компиляции также умножается на 2.


Генерация исходных С кодов

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

CC86M	(C исходный код - V3.04) генерирует исходный код неструктурного "C". Этот стиль нужно выбирать, если ваша целевая задача основана на версии ISaGRAF до 3.23.

SCC	(структурный C исходный код) генерирует исходный код структурного "C". Этот стиль нужно выбирать, если ваша целевая задача основана на версии ISaGRAF 3.23 или поздней.

Следующие два файла создаются в каталоге проектов:

APPLI.C	общие исходные коды приложения

APPLI.H	определения языка С

В случае генерации исходного кода структурного "C", ".C" файлы исходников и ".H" файлы определений создаются для каждой программы приложения, в дополнение к общим файлам "APPLI.C" и "APPLI.H". Эти файла должны быть скомпилированы и слинкованы с библиотекой ISaGRAF для получения окончательного исполняемого кода. Обратитесь к ISaGRAF I/O development toolkit Users Guide для дальнейшей информации насчет рекомендуемой техники реализации.

Замечание: Некоторые отладочные возможности, такие как загрузка приложения, модификация по ходу работы и точки прерывания не доступны, когда приложение ISaGRAF скомпилировано на языке С.


Просмотр информации

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

Команды редактирования

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

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

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

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


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

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

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

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

Пример

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

Реализация


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

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


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

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

ULONGDATA

VARLIST

BINARYFILE

TEXTFILE

TARGET

ANYTARGET

FROM

TO


ULONGDATA

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

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

BEGIN

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

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

END

Example:	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.  Пути и данные следуют за каталогом ресурсов.