Прыжки и метки используются для управления выполнением диаграммы. К правому краю символа метки или прыжка не может быть присоединено никаких других объектов. Используются следующие обозначения:
>>LAB......................... прыжок на метку (имя метки "LAB")
LAB:............................ определение метки (имя метки "LAB")
Если линия связи слева от символа прыжка находится в состоянии TRUE , исполнение программы переходит на соответствующую метку.
(* Пример FBD программы с использованием меток и прыжков *)
(* IL эквивалент: *)
ld manual
and b1
jmpc NOMODIF
ld input1
or input2
st result
NOMODIF: ld result
or valid
st cmd10
ЊҐвЄЁ, гб«®ўлҐ Ё ЎҐ§гб«®ўлҐ Їал¦ЄЁ, ¬®Јгв Ўлвм ЁбЇ®«м§®ў л ¤«п гЇа ў«ҐЁп ўлЇ®«ҐЁҐ¬ ¤Ё Ја ¬¬л. ЌЁЄ ЄЁе бЁ¬ў®«®ў Є Їа ў®¬г Є®жг бЁ¬ў®« ¬ҐвЄЁ Ё Їал¦Є Ї®¤Є«оз вм Ґ«м§п. €бЇ®«м§говбп б«Ґ¤гойЁҐ ®Ў®§ 票п:
>>LAB......................... Їа릮Є ¬ҐвЄг "LAB"
LAB:............................ ®ЇаҐ¤Ґ«ҐЁҐ ¬ҐвЄЁ "LAB"
…б«Ё «ЁЁп бўп§Ё б«Ґў ®в бЁ¬ў®« Їал¦Є 室Ёвбп ў б®бв®пЁЁ TRUE , ЁбЇ®«ҐЁҐ Їа®Ја ¬¬л ЇҐаҐе®¤Ёв ᮮ⢥вбвўгойго ¬ҐвЄг.
(* IL ќЄўЁў «Ґв: *)
яяяяяяяяяяяяяяяяяяяяяяяя ldnяяяяяяяяяяяяя manual_mode
яяяяяяяяяяяяяяяяяяяяяяяя jmpcяяяяяяяяяя other
яяяяяяяяяяяяяяяяяяяяяяяя ldяяяяяяяяяяяяяяя input1
яяяяяяяяяяяяяяяяяяяяяяяя stяяяяяяяяяяяяяяя result
яяяяяяяяяяяяяяяяяяяяяяяя jmpяяяяяяяяяяяя END
OTHER:яяяяяяяяяяяя ldяяяяяяяяяяяяяяя input2
яяяяяяяяяяяяяяяяяяяяяяяя stяяяяяяяяяяяяяяя result
END:яяяяяяяяяяяяяяяяя (* Є®Ґж Їа®Ја ¬¬л *)
Символ прыжка может быть использован, чтобы определить линию связи от перехода к шагу, не рисуя линию. Символ прыжка должен иметь номер шага назначения:
Связь от шага к переходу нельзя представить с помощью символа прыжка. Следующие схемы эквивалентны:
Аргументы:
CLK BOO любая булевская переменная
Q BOO TRUE, когда CLK поднимается с FALSE на TRUE
FALSE во всех остальных случаях
Описание:
Определяет передний фронт булевской переменной.
(*FBD пример блоков R_TRIG*)
(* ST Эквивалент: Мы предполагаем, что R_TRIG1 - это экземпляр блока R_TRIG *)
R_TRIG1(cmd);
nb_edge := ANA(R_TRIG1.Q) + nb_edge;
(* ILЭквивалент: *)
LD cmd
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ANA
ADD nb_edge
ST nb_edge
В реализации под NT целевая задача представляет собой отдельную программу WISAKER.EXE, причем может работать параллельно несколько ее экземпляров. Каждый экземпляр должен иметь свой номер подчиненного.
Целевая задача не мешает работе драйверов, имеющих обработчики прерывания.
Программа WISAKER предназначена для работы с версией Windows NT 3.51 и выше.
В реализации под MS-DOS целевая задача представляет собой отдельную программу ISA.EXE. При необходимости можно получить подсказку с помощью команды isa -? из каталога CMDS.
Такая конфигурация критична по ресурсам, например, не рекомендуется перегружать коммуникации для того, чтобы гарантировать хорошую производительность. Целевая задача не мешает работе драйверов, имеющих обработчики прерывания.
Конфигурирование коммуникаций: -t ключЦелевая задача ISaGRAF использует последовательный порт для связи с отладчиком. Название порта определяется при помощи ключа -t. Коммуникационный интерфейс учитывает особенности различных машин, поэтому можно использовать порты COM1, COM2 или COM3 в зависимости от версии BIOS.
Нет значения по умолчанию: Если эта опция не использована, то связь с целевой задачей невозможна. В таком случае может быть выдано сообщение об ошибке номер 7.
В DOS связь по ETHERNET не предусмотрена. Такая реализация может быть обеспечена вашим поставщиком.
Параметры последовательного порта должны быть установлены до запуска ISaGRAF. При использовании отладчика системы разработки убедитесь, что параметры порта соответствуют тем, которые установлены в целевой задаче (см. руководство пользователя): Управляющие программы.
Пример:
устанавливает следующие значения параметров порта:
скорость 9600 бит/с
нет контроля четности
данные 8 бит
1 стоп-бит
Заметим, что в некоторых версиях BIOS значение скорости 19200, принятое по умолчанию в системе разработки, не разрешено.
Для установки параметров порта CJ поставляет утилиту ISAMOD.EXE. Вызов
ISAMOD COM1
эквивалентен
MODE COM1:9600,N,8,1
Номер подчиненного: -s ключЭта опция определяет номер подчиненного целевой задачи. Он может принимать значения от 1 до 255, исключая 13 ($0D). Этот номер используется в протоколе связи. Он нужен для того, чтобы отличать целевые задачи друг от друга, когда запущено несколько задач. Когда используется отладчик, убедитесь, что его подчиненный параметр соответствует номеру целевой задачи.
По умолчанию
номер подчиненного равен 1.
Примеры:isamod COM1 устанавливает на COM1: 19200 бод, без четности, данные 8 бит, 1 стоп бит
isa -t=COM1 запуск целевой задачи ISaGRAF как подчиненный 1 с портом связи COM1
isa -s=3 -t=COM1 запуск целевой задачи ISaGRAF как подчиненный 3 с портом связи COM1
ISaGRAF может работать как одна задача. В таком случае не рекомендуется перегружать коммуникации для того, чтобы гарантировать хорошую производительность. В многозадачной системе OS-9 различные целевые задачи ISaGRAF могут быть запущены на одном и том же процессоре, если они имеют различные номера подчиненных и последовательные порты.
Однозадачная реализация, в основном ориентирована на разработку первого прототипа системы при портировании на новую платформу. Многозадачная реализация более предпочтительна.
Задача ISaGRAF не нарушает работу фоновых процессов и программ обработки прерываний. Тем не менее, многозадачная версия ISaGRAF предпочтительнее.
Конфигурирование коммуникаций: -t ключОднозадачная версия ISaGRAF использует последовательный порт для связи с отладчиком. Название порта определяется при помощи ключа -t.
Нет значения по умолчанию: Если эта опция не использована, то связь с целевой задачей невозможна. В таком случае может быть выдано сообщение об ошибке номер 7.
В однозадачной версии связь по ETHERNET не предусмотрена.
Последовательный порт открывается в режиме передачи двоичных данных (нет управляющих данных, нет XON/XOFF). Другие параметры порта должны быть установлены до запуска ISaGRAF. При использовании отладчика убедитесь в соответствии параметров, устанавливаемых для него и для целевой задачи.
Пример:
xmode /t0 baud=19200
Установить скорость передачи 19200 бит/с. на устройстве /t0.
Номер подчиненного: -s ключЭта опция определяет номер целевой задачи. Он может принимать значения от 1 до 255 за исключением 13 ($0D). Этот номер используется в протоколе связи. Он нужен для того, чтобы различать целевые задачи друг от друга, когда запущено несколько задач. Когда используется отладчик, убедитесь, что его подчиненный параметр соответствует номеру целевой задачи.
По умолчанию
номер подчиненного равен 1.
Примеры:isa -t=/t0 запуск однозадачного режима ISaGRAF как подчиненный 1 (по умолчанию) с портом связи /t0
isa -s=3 -t=/t1 запуск однозадачного режима ISaGRAF как подчиненный 3 с портом связи /t1
isa -t=/t0 &
isa -s=3 -t=/t1 запуск двух задач ISaGRAF в однозадачном режиме: первая - подчиненный 1, портом /t0, вторая - подчиненный 3, порт /t1
ISaGRAF может работать как одна задача. В таком случае не рекомендуется перегружать коммуникации для того, чтобы гарантировать хорошую производительность. В многозадачной системе VxWorks различные целевые задачи ISaGRAF могут быть запущены на одном и том же процессоре, если они имеют различные номера подчиненных и последовательные порты.
Однозадачная реализация в основном ориентирована на слабую аппаратуру (дешевые платы и ПК, ориентированные на MS-DOS) или на разработку первого прототипа системы при портировании на новую платформу. Многозадачная реализация более предпочтительна.
Задача ISaGRAF не нарушает работу фоновых процессов и программ обработки прерываний.
Регистрация подчиненныхЦелевая задача ISaGRAF характеризуется номером подчиненного. Он может принимать значения от 1 до 255 за исключением 13 ($0D). Этот номер используется в протоколе связи. Он нужен для того, чтобы различать целевые задачи друг от друга, когда запущено несколько задач. Поэтому перед запуском целевых задач следует их регистрировать. Для этого предназначена функция isa_register_slave()
uchar isa_register_slave
(
uchar slave /* /* Номер подчиненного */
)
Описание:
Регистрирует новый подчиненный в системе с несколькими целевыми задачами.
Возвращаемое значение:
0 в случае успеха, BAD_RET - в случае ошибок.
Каталог для хранения резервных файлов приложенияГлобальная переменная TSK_FUNIT(char *) может содержать название каталога, в котором приложение будет хранить файлы резервных копий. Целевая задача ISaGRAF использует стандартные вызовы fopen, fread, fwrite, fclose для работы с файлами.
Значение по умолчанию - пустая строка (“”), указывающая, что каталог не назначен.
Пример:
TSK_FUNIT = "host name:/C:/ISaGRAF/target/apl/"
Назначает каталог ISaGRAF\target\apl в корне C: на хост-ПК с именем host_name для файлов резервных копий. Важно не забыть последний слеш, иначе файлы будут открываться в каталоге ISaGRAF\target и иметь в имени префикс apl.
При необходимости эта переменная может иметь различные значения для различных целевых задач.
Дальнейшие детали о файлах резервных копий содержатся в разделе Отличительные особенности / Резервирование приложения.
Для того чтобы начать работу с целевой задачей ISaGRAF, прежде всего, нужно переписать программы на целевую машину OS-9. Затем, для того чтобы начать работать, можно просто запустить команду помощи:
isa -?
isaker -?
isatst -?
Isanet -?
Проектам ISaGRAF соответствует одна директория на диске, в которой хранятся все файлы проектов. "Группа проектов " соответствует списку проектов объединенных вместе в одной и той же корневой директории. Группа проектов идентифицируется по имени. По умолчанию, ISaGRAF создает две группы проектов:
"Default"............ в "\ISAWIN\APL":Ваша рабочая область
"Samples"......... в "\ISAWIN\SMP":примеры приложение поставляемые вместе с системой разработки ISaGRAF
Имя текущей группы проектов написано в панели инструментов, рядом с кнопкой выбора группы проектов:
Вы можете, также, использовать команду "Файл / Выбрать группу проектов ", чтобы выбрать существующую группу или создать новую. Открывается следующий диалог:
Выберите группу в списке и нажмите "Выделить", чтобы активизировать список проектов. Вы можете дважды щелкнуть на имени, чтобы выбрать его. Используйте "Новая группа " для создания новой группы. Эта команда может быть использована либо для того, чтобы присвоить имя группы существующей директории, либо чтобы создать новую группу с новой директорией.
Замечание: Группа не может быть выбрана или создана, если открыты другие окна ISaGRAF (менеджер программ, редакторы...).
Меню «Файл» содержит все команды, необходимые для создания, обновления или модификации программ. Она также запускает соответствующие редакторы для ввода содержания прикладных программ.
Создание новой программыФункция «Новый» меню «Файл» позволяет создать программу верхнего уровня, дочернюю или подпрограмму в каждой программной секции. Первая часть информации для ввода - это имя новой программы, подчиняющееся следующим синтаксическим правилам :
· максимальная длина - 8 символов
· Первый символ должен быть буквой
· Последующие символы должны быть буквами, цифрами, или символами подчёркивания.
· Имена программ не различают регистры
Далее, выберите язык, на котором будет создана новая программа :
SFC..................... Последовательные Функциональные Диаграммы
FC....................... Потоковые Диаграммы
FBD..................... Диаграммы Функциональных Блоков ( могут содержать части LD )
LD....................... Релейные схемы, создаваемые при помощи редактора Quick LD
ST....................... Структурный текст
IL......................... Список Инструкций
Теперь выберите режим выполнения программы :
Begin..................................... верхний уровень раздела «Begin».
Sequential.............................. верхний уровень раздела «Sequential».
End........................................ верхний уровень раздела «End».
Функции................................ в разделе «Функции».
Функциональный блок......... в разделе «Функциональные блоки».
Дочерняя программа.......... SFC или FC SFC-дочерняя или подпрограмма существующей программы.
При выборе одного из пяти возможных режимов программа размещается в верхнем уровне разделов Begin, End, Sequential, Функции. Выбор последнего указывает, что новая программа является SFC-дочерней или FC подпрограммой или подпрограммой. Следует помнить, что программы верхнего уровня должны быть написаны на SFC или FC и, что SFC и FC не может использоваться для циклических программ и их подпрограмм.
Команды меню «Редактор» используются для изменения или дополнения существующей диаграммы. Большинство этих команд имеют дело с выделенными элементами диаграммы.
Исправление диаграммыКлавиша DEL может быть использована для удаления выделенных элементов. Невозможно удалить виток, переход или символ возврата, если это единственный выход ступени. Используйте команду «Редактор / Отменить» для восстановления элементов, удалённых командой DEL. Команда DEL может быть применена, как к одному выделенному элементу, так и к их группе. Также этой командой можно удалять комментарии. При удалении заголовка ступени, вся ступень удаляется целиком.
Копирование символовКоманды «Вырезать», «Копировать», «Вставить» меню «Редактор» используются при перемещении или копировании выделенных элементов. Эти команды не оперируют с комментариями. Команда «Редактор / Специальная вставка» даёт Вам выбор для вставки элементов :
· слева от выделенного элемента
· справа от выделенного элемента
· параллельно выделенному элементу
Управление целой ступеньюВсе команды редактирования ( Удалить, Копировать, Вырезать ) оперируют со ступенью целиком, если выделен её заголовок ( левая шина питания ). Это обеспечивает простоту перемещения ступеней в диаграмме, просто перемещением выделения на первую колонку. Кроме того, можно расширить область выделения по вертикали, чтобы она включала в себя несколько заголовков ступеней. В этом случае команды редактирования применимы к списку ступеней.
Поиск и заменаКоманды меню «Редактор / Найти», «Редактор / Заменить»
используются для нахождения и замены текста в диаграмме. Могут быть найдены только полные имена. Поиск производится по контактам, виткам, именам блоков, параметрам блоков и меткам ступеней. Он не может быть использован для нахождения строки в комментарии. Команда Заменить не может быть использована для изменения типа блока. Поиск может быть осуществлён вверх или вниз от выбранной позиции. Он заканчивается по достижении конца диаграммы. Для поиска доступны следующие горячие клавиши
ALT+F2 найти следующий элемент с тем же именем переменной, что и выбранный. Этот поиск может быть применен только к функциональным блокам и меткам ступеней.
ALT+F5 найти следующий виток с тем же именем переменной, что и выбранный. Этот поиск , в основном, используется в режиме отладки для быстрого поиска ступеней, влияющих на переменную.
Для выбора прямоугольной области в схеме Вы можете использовать либо мышку, либо стрелки клавиатуры. Выбранная область помечается серым цветом. Тогда используются команды меню "Редактор":
Команды Вырезать / Копировать / УдалитьСледующие команды доступны в меню «Редактор» при выборе кнопки «стрелка» в панели редактирования :
Вырезать........... переместить выделенный прямоугольник с экрана в буфер SFC
Копировать....... скопировать выделенный прямоугольник с экрана в буфер SFC
Удалить............. Очистить (удалить) выделенный прямоугольник
Вставить........... Вставить содержимое буфера SFC в текущей позиции
«Редактор / Копировать» копирует буфер SFC на экран. Команда Копировать / Вставить как с диаграммами SFC, так и с шагами/переходами программ 2-уровня. Кроме того, можно скопировать диаграмму в программе и вставить её в другую SFC программу. Элементы вставляются перед текущей позицией.
Сдвиг элементовКогда элементы SFC выбраны в схеме, вы можете сдвигать их в другое место путем перетаскивания выбранной области с помощью мыши. Пока вы перетаскиваете выбранную область, начальное положение выбранных элементов закрашивается.
Область назначения должна быть свободна. Во время сдвига SFC символов ввод невозможен.
Перенумерация шагов и переходовКаждый шаг или переход идентифицируется логическим номером в SFC диаграмме. Команда Редактор/Перенумеровать позволяет пользователю автоматически установить последовательно нумерацию ссылок для любого шага или перехода в текущей SFC программе. Когда номер шага изменяется, номера всех переходов к этому шагу автоматически обновляются (тоже самое применимо к макро шагам и начальным шагам ).
Прямой доступ к шагам или переходамКоманда "Редактор / Перейти " позволяет пользователю попадать на существующий шаг или переход. Позиция скроллирования автоматически адаптируется так, чтобы шаг или переход были видны.
Найти и заменить текстКоманда Редактор/Заменить может быть использована для нахождения или замены текстовых строк в законченной программе (все шаги и переходы). Диалоговое окно Заменить используется для ввода искомого текста и открывает уровень 2, в котором находится текст.
Команды меню "Редактор" используются для изменения или завершения существующей диаграммы. Большинство из этих команд действуют на элементы, выбранные в настоящее время на диаграмме.
Исправление схемыКлавиша DEL может быть использована для удаления выбранных элементов. Висячие связи удаляются вместе с выбранными элементами. Используйте команду "Редактор / Отменить" для восстановления элементов после команды DEL. Команда DEL может быть также применена к группе элементов выбранных в диаграмме. Команды "Вырезать", "Копировать", "Вставить" меню "Редактор" используются для перемещения или копирования выбранных элементов.
Вставить и заменитьКоманды "Редактор / Найти Заменить " могут быть использованы для поиска и замены текстовых строк во всей программе (все действия и тесты запрограммированные на ST, IL или Quick LD).Диалог Найти/Заменить используется для ввода текста поиска и для прямого открытия секции программы, где находится текст.
Прямой доступ к элементуКоманда "Редактор / Перейти " дает пользователю прямой доступ к графическому элементу, находящемуся в схеме. Позиция скроллирования автоматически изменяется так, чтобы элемент был виден. Достигнутый элемент выделяется.
Перенумерация элементовКоманда Редактор/Перенумеровать используется для перенумерации элементов потоковой диаграммы. Каждый элемент FC помещенный на схему идентифицируется логическим номером в FC диаграмме. Номера размещаются редактором каждый раз, когда вводится новый элемент. "Перенумеровать" позволяет перенастроить нумерацию элемента в соответствии с его положением в схеме. Номера увеличиваются сверху вниз и слева направо
Аргументы:
base INT определяет допустимое множество чисел
Q INT случайная величина в диапазоне [0..base - 1]
Описание:
Дает случайную целую величину в заданном диапазоне.
(*FBD пример блока “RAND”*)
(* ST Эквивалент: *)
selected := MUX4 ( RAND (4), 1, 4, 8, 16 );
(*
случайный выбор одного из 4 предопределенных значений
RAND выдает значение в интервале [0..3],
так 'selected' выходящий из MUX4, получит случайное значение
1 если 0 выходит из RAND,
или 4 если 1 выходит из RAND,
или 8 если 2 выходит из RAND,
или 16 если 3 выходит из RAND,
*)
(* IL Эквивалент: *)
LD 4
RAND
MUX4 1,4,8,16
ST selected
Следующие функции являются расширениями языка ST:
TSTART-TSTOP :управление таймером
Следующие операторы и функции предназначены для управления исполнением программ наследников SFC:
GSTART запускает SFC программу
GKILL убивает SFC программу
GFREEZE замораживает SFC программу
GRST перезапускает замороженную SFC программу
GSTATUS получает текущее состояние SFC программы
Предупреждение:
эти функции не относятся к стандарту IEC 1131-3.
Простой эквивалент для GSTART и GKILL может быть получен путем использования синтаксиса SFC шагов:
child_name(S); (* эквивалентно GSTART(child_name); *)
child_name(R); (* эквивалентно GKILL(child_name); *)
Следующие поля могут быть использованы для доступа к состоянию SFC шага:
GSnnn.x булевская переменная, представляющая активность шага
GSnnn.t время прошедшее с момента последней активизации шага
(“nnn” номер SFC шага)
Есть возможность, также проверить активность шага объявленного в другой SFC программе, используя следующий синтаксис:
Аргументы:
IN BOO-INT-TMR любая недействительная аналоговая величина
Q INT 0.0 if IN = FALSE / 1 if IN = TRUE
число миллисекунд для таймера
число эквивалентное целому
аналоговому
Описание:
Превращает переменную в действительную.
(*FBD пример блоков REAL*)
(* ST эквивалент: *)
bres := REAL (true); (* bres равно 1.0 *)
tres := REAL (t#1s46ms); (* tres равно 1046.0 *)
ares := REAL (198); (* ares равно 198.0 *)
(* IL эквивалент: *)
LD true
REAL
ST bres
LD t#1s46ms
REAL
ST tres
LD 198
REAL
ST ares
Коммуникационное соединение ISaGRAF распознает пять функциональных кодов Modbus:
1 | читать N бит | ||
3 | читать N слов | ||
5 | писать 1 бит | ||
6 | писать 1 слово | ||
16 | писать N слов |
Доступ к переменным приложения ISaGRAF может осуществляться через их “сетевой адрес ”, если конечно они были определены в библиотеке инструментальных средств.
Эти переменные могут быть:
- Булевыми или Аналоговыми переменными
- Входными, выходными или терминальными переменными
- Локальными или глобальными переменными.
Для записи Булевой переменной могут использоваться функции 5, 6 или 16. Значение TRUE для записи является любым ненулевым значением.
Для чтения Булевой переменной могут использоваться функции 1 или 3. Функция 1 возвращает значение в битовое поле, а функция 3 - в байтовое (значение TRUE соответствует значению 0xFFFF).
Для записи Аналоговой переменной могут использованы функции 6 и 16. Значение является 16-ти битовым целым в диапазоне от -32768 до +32768 (целевые переменные ISaGRAF являются 32-х битовыми).
Для чтения Аналоговой переменной может использоваться функция 3. .
Переменные типа Real не доступны по запросам Modbus.
Предупреждение:
Реализация ISaFRAF не управляет такими кодами ошибки как ‘неизвестный адрес modbus’.
Обозначения:
slv | номер подчиненного | ||
nbw | число слов | ||
nbb | число байт | ||
nbi | число бит | ||
addH | Сетевой адрес (старший байт) | ||
addL | сетевой адрес (младший байт) | ||
vH | значение (старший байт) | ||
vL | значение (младший байт) | ||
V | байтовое значение | ||
bfd | битовое поле (nbb байт) | ||
crcH | контрольная сумма (старший байт) | ||
crcL | контрольная сумма (младший байт) |
Функция 1: читать n бит
Читает nbi бит (булевских значений), начиная с сетевого адреса addH/addL
Запрос | slv | 01 | addH | addL | 00 | nbi | crcH | crcL |
Ответ |
slv |
01 |
nbb |
bfd |
... |
crcH |
crcL |
Запрос |
slv |
03 |
addH |
addL |
00 |
nbw |
crcH |
crcL |
Ответ |
slv |
03 |
nbb |
vH |
vL |
... |
crcH |
crcL |
Запрос |
slv |
05 |
addH |
addL |
vH |
00 |
crcH |
crcL |
Ответ |
slv |
05 |
addH |
addL |
vH |
00 |
crcH |
crcL |
Запрос |
slv |
06 |
addH |
addL |
vH |
vL |
crcH |
crcL |
Ответ |
slv |
06 |
addH |
addL |
vH |
vL |
crcH |
crcL |
Запрос |
slv |
10 |
addH |
addL |
00 |
nbw |
nbb |
vH |
vL |
... |
crcH |
crcL |
Ответ |
slv |
10 |
addH |
addL |
00 |
nbw |
crcH |
crcL |
Запрос |
01 |
01 |
10 |
20 |
00 |
0F |
79 |
04 |
Ответ |
01 |
01 |
02 |
00 |
12 |
39 |
F1 |
Запрос |
01 |
10 |
21 |
00 |
00 |
02 |
04 |
12 |
34 |
56 |
78 |
1C |
CA |
Ответ |
01 |
10 |
21 |
00 |
00 |
02 |
4B |
F4 |
Запрос |
slv |
11 |
addH |
addL |
00 |
nbb |
nbb |
vH |
vL |
... |
crcH |
crcL |
Ответ |
slv |
11 |
addH |
addL |
00 |
nbb |
crcH |
crcL |
Запрос |
slv |
12 |
addH |
addL |
00 |
nbb |
crcH |
crcL |
Ответ |
slv |
12 |
nbb |
V |
V |
... |
crcH |
crcL |
Запрос |
01 |
11 |
F0 |
00 |
00 |
0B |
0B |
74 |
... |
00 |
25 |
9F |
Ответ |
01 |
11 |
F0 |
00 |
00 |
0B |
8F |
0E |
Запрос |
01 |
11 |
F0 |
02 |
00 |
04 |
04 |
00 |
01 |
00 |
00 |
76 |
11 |
Ответ |
01 |
11 |
F0 |
02 |
00 |
04 |
6E |
CA |
Запрос |
01 |
11 |
07 |
D0 |
00 |
04 |
04 |
01 |
02 |
03 |
04 |
28 |
6F |
Ответ |
01 |
11 |
07 |
D0 |
00 |
04 |
FC |
87 |
Запрос |
01 |
12 |
07 |
D0 |
00 |
04 |
B8 |
87 |
Ответ |
01 |
12 |
04 |
01 |
02 |
03 |
04 |
58 |
7D |
Аргументы:
IN MSG любая строка
Str MSG строка, которую нужно вставить
NbC INT Количество символов, которые должны быть удалены
Pos INT Позиция первого измененного символа
(первая правильная позиция 1)
Q MSG измененная строка:
-NbC символов удаляются начиная с позиции Pos
-затем строка Str вводится начиная с этой позиции
возвращает пустую строку если Pos <= 0
возвращает соединение строк (IN+Str) если Pos больше, чем длина строки IN
возвращает начальную строку IN если NbC <= 0
Описание:
Заменяет часть строки новым набором символов.
(*FBD пример блока “REPLACE”*)
(* ST Эквивалент: *)
MyName := REPLACE ('Mr X JONES, 'Frank', 1, 4);
(* MyName - это 'Mr Frank JONES' *)
(* IL Эквивалент: *)
LD 'Mr X JONES'
REPLACE 'Frank',1,4
ST MyName
Аргументы:
IN MSG любая непустая строка
NbC INT не может быть больше, чем длина строки IN
Q MSG правая часть строки IN (ее длина = NbC)
пустая строка если NbC < 0
вся строка IN если NbC > длина IN
Описание:
Берет правую часть строки. Количество символов задано.
(*FBD пример блоков “LEFT” и “RIGHT”*)
(* ST Эквивалент: *)
complete_string := RIGHT ('12345678', 4) + LEFT ('12345678', 4);
(* полная строка - это '56781234'
значение выходящее из RIGHT - это '5678'
значение выходящее из LEFT - это '1234'
*)
(* IL Эквивалент: Сначала вызывается LEFT *)
LD '12345678'
LEFT 4
ST sub_string (* промежуточный результат *)
LD '12345678'
RIGHT 4
ADD sub_string
ST complete_string
Аргументы:
IN INT любая целая аналоговая величина
NbR INT количества вращаемых бит (в диапазоне [1..31])
Q INT провернутая влево величина
если NbR <= 0, то нет никакого эффекта
Описание:
Вращает биты влево. Вращаются 32 бита.
(*FBD пример блока “ROL”*)
(* ST Эквивалент: *)
result := ROL (register, 1);
(* register = 2#0100_1101_0011_0101*)
(* result = 2#1001_1010_0110_1010*)
(* IL Эквивалент: *)
LD register
ROL 1
ST result
Аргументы:
IN INT любая целая аналоговая величина
NbR INT количества вращаемых бит (в диапазоне [1..31])
Q INT провернутая вправо величина
если NbR <= 0, то нет никакого эффекта
Описание:
Вращает биты вправо. Вращаются 32 бита:
(*FBD пример блока “ROR”*)
(* ST Эквивалент: *)
result := ROR (register, 1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1010_0110_1001_1010 *)
(* IL : *)
LD register
ROR 1
ST result
Аргументы:
SET BOO если TRUE, установить Q1 в TRUE
RESET1 BOO если TRUE, установить Q1 в FALSE
(доминанта)
Q1 BOO булевское состояние в памяти
Описание:
Сбрасывает доминанту. См. Таблицу:
Set | Reset1 | Q1 | result Q1 | ||||
0 | 0 | 0 | 0 | ||||
0 | 0 | 1 | 1 | ||||
0 | 1 | 0 | 0 | ||||
0 | 1 | 1 | 0 | ||||
1 | 0 | 0 | 1 | ||||
1 | 0 | 1 | 1 | ||||
1 | 1 | 0 | 0 | ||||
1 | 1 | 1 | 0 |
(*FBD пример блоков RS*)
(* ST Эквивалент: Мы предполагаем, что RS1 - это экземпляр блока RS *)
RS1(start_cmd, (stop_cmd OR alarm));
command := RS1.Q1;
(* IL Эквивалент: *)
LD start_cmd
ST RS1.set
LD stop_cmd
OR alarm
ST RS1.reset1
CAL RS1
LD RS1.Q1
ST command
“С” функции и функциональные блоки - это компьютерные функции, вызываемые из приложения автоматизации, в соответствии с интерфейсом вызова функций языка ST.
Функции являются синхронными процессами. Целевое приложение ISaGRAF приостанавливается во время выполнения функции. Функциональные блоки объединяют операции и статические скрытые данные. Например, функция “счетчик” представляет операцию счета, а также результат счета. Функции и функциональные блоки могут быть использованы для пополнения возможностей стандартного языка автоматизации, или для доступа к системным ресурсам.
Окно определения параметров используется для определения имени и типа каждого вызываемого или возвращаемого параметра функции или функционального блока. Меню команд “Редактировать” используется для определения параметров выбранной функции или функционального блока. Функция может иметь до 31 вызываемого параметра и всегда один возвращаемый параметр. Функциональный блок может иметь до 32 параметров с любым соотношением вызываемых и возвращаемых параметров. Ниже дано соответствие между типами ISaGRAF и типами “С”:BOOLEAN unsigned long беззнаковое 32 битное слово: 1=true / 0=false
ANALOG long знаковое целое 32 битное слово
REAL float простой точности плавающее значение
TIMER unsigned long беззнаковое целое 32 битное слово (блок - 1 ms)
MESSAGE char * строка символов
Когда содержание сообщения передается в “С” функцию или функциональный блок, оно не может содержать нулевые символы. Строка, передаваемая в “С” код, заканчивается нулем.
Обратитесь к ISaGRAF Target User’s Guide для получения дальнейшей информации по тому, как управлять исходным кодом “С” функции или функционального блока, и как интегрировать новый элемент в целевую систему ISaGRAF.
Аргументы
SEL BOO определяет выбранную величину
IN1, IN2 INT любая целая аналоговая величина
Q INT = value1 если SEL = FALSE
= value2 если SEL = TRUE
Описание:
Двоичный селектор: выбирает значение из двух целых чисел.
(*FBD пример блока “”*)
(* ST Эквивалент: *)ProCmd := SEL (AutoMode, ManuCmd, InpCmd);
(* выбор команды *)
IN MSG любая непустая строка
LD AutoMode
SEL ManuCmd,InpCmd
ST ProCmd
Аргументы:
CLAIM BOOLEAN команда “проверить и установить”
RELEASE BOOLEAN освободить семафор
BUSY BOOLEAN состояние семафора
Описание:
(* "x" - это булевская переменная проинициализированная значением FALSE *)
busy := x;
If claim Then
x := True;
Else
If release Then
busy := False;
x := False;
End_if;
End_if;
Сеть Modbus состоит только из одной мастер станции (обычно система визуализации процесса) и одной или более подчиненных станций (обычно PLC).
Мастер каждый раз посылает один запрос одному подчиненному (используя номер подчиненного) и ждет ответа от подчиненного прежде чем послать второй запрос. Другой свободный подчиненный не отвечает.
Каждый фрейм содержит номер подчиненного, номер запроса и соответствующие данные, а также 16-и битный код контрольной суммы(CRC).
Если за время тайм-аута ответ не приходит, запрос может быть повторен некоторое число раз до того, как мастер объявит подчиненный “отсоединенным”.
Значение тайм-аута и число переповторов устанавливается на мастер станции для установки запросов к подчиненному (в зависимости от приложения, и т.д.).
Если при обработке запроса обнаруживается ошибка, то подчиненный может послать сообщение об ошибке вместо ожидаемого ответного фрейма.
Modbus является протоколом Modicon, а не международным стандартом, который имеет много различных реализаций Modbus совместимых протоколов, с большим числом возможных вариантов, например:
- Список поддерживаемых функциональных кодов
- Отображение адресов
- RTU (двоичный код) или ASCII протокол и т.д.
Шаг представляется одиночным квадратом. Каждому шагу присваивается номер, написанный внутри квадрата. Основное описание шага пишется внутри прямоугольника , присоединенного к символу шага. Это свободный комментарий (который не является частью языка). Вышеприведенная информация называется Уровнем 1 шага:
Во время работы активный шаг помечается маркером:
Активный шаг: Неактивный шаг:
Начальная ситуация программы SFC описывается начальными шагами. Начальный шаг обозначается графическим символом с двойной рамкой. После запуска программы маркер автоматически устанавливается на каждый начальный шаг.
начальный шаг:
SFC программа должна содержать, по крайней мере, один начальный шаг.
У шага есть атрибуты. Они могут быть использованы в любом другом языке:
GSnnn.x........................активность шага (логическая переменная)
GSnnn.t........................продолжительность активного состояния шага (таймер)
(где nnn - номер начального шага)
В схеме списка символы представлены классическими коробками. Высота каждого символа рассчитывается в соответствии со стилем. Картинки (битмапы и метафайлы) не видны на схеме списка. Имеется возможность выбора на схеме списка и должно использоваться для установки стиля символа или изменения значения переменной.
Вы можете переупорядочить символы в списке используя команду “Редактор/ Двигать в списке”. Символы, которые надо сдвинуть должны быть выбраны в списке.Аргументы:
IN INT любая целая аналоговая величина
NbR INT количества сдвигаемых бит (в диапазоне [1..31])
Q INT провернутая вправо величина
если NbR <= 0, то нет никакого эффекта
младший бит заменяет нулем
Описание:
Сдвигает биты влево. Сдвигаются 32 бита.
(*FBD пример блока “SHL”*)
(* ST Эквивалент: *)
result := SHL (register,1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1001_1010_0110_1010 *)
(* IL Эквивалент: *)
LD register
SHL 1
ST result
Расхождения - это множественные связи от одного символа SFC (шага или перехода) ко многим. Схождение - это множественные связи от более чем одного символа SFC к одному другому символу. Схождения и расхождения могут быть одиночными или двойными.
Аргументы:
IN INT любая целая аналоговая величина
NbR INT количества сдвигаемых бит (в диапазоне [1..31])
Q INT провернутая вправо величина
если NbR <= 0, то нет никакого эффекта
младший бит заменяет нулем
Описание:
Сдвигает биты влево. Сдвигаются 32 бита.
(*FBD пример блока “SHR”*)
(* ST Эквивалент: *)
result := SHR (register,1);
(* register = 2#1100_1101_0011_0101 *)
(* result = 2#1110_0110_1001_1010 *)
(* IL Эквивалент: *)
LD register
SHR 1
ST result
Аргументы:
RUN BOO режим : TRUE=работать/FALSE=сброс выхода в FALSE
PERIOD TMR период образца
MAXIMUM INT максимальное значение
PULSE BOO инвертируется после каждого образца
UP INT счетчик, увеличивающийся на каждом образце
END BOO TRUE, когда заканчивается счет вверх
SINE REAL синусоидальный сигнал (период = время счета)
Описание:
Генерирует различные сигналы : булевский мигающий, целый счетчик вверх, действительная синусоида.
Когда счетчик достигает максимума, он перезапускается с нуля. Так что END удерживает TRUE в течении одного периода.
Временная диаграмма:
LD диаграмма ограничена справа и слева вертикальными линиями, которые называются левым силовым рельсом и правым силовым рельсом соответственно.
Символы LD диаграммы связаны с силовыми рельсами и другими символами при помощи соединительных линий. Соединительные линии могут быть горизонтальными или вертикальными.
Каждый отрезок линии имеет состояние TRUE
или FALSE. Отрезки, соединенные напрямую имеют одно и то же булевское состояние. Любая горизонтальна линия, соединенная с левым вертикальным рельсом
имеет состояние TRUE.
Команды меню используются для запуска графического редактора ISaGRAF как в режиме симуляции, так и в режиме реального соединения.
СимуляцияКоманда «Симулировать» открывает отладчик в режиме симуляции. В этом режиме появляется другое окно, называемое симулятором. Эта программа очень полезна для проверки любой программы, когда целевая машина не доступна. Запуск симулятора закрывает окно Менеджера Программ. Оно снова открывается в режиме отладки, когда открыты одновременно окна отладчика и симулятора. Симулятор. Симулятор не может быть запущен, если открыты дочерние окна ( редактора, генератора кодов, соединения ввода-вывода...). Каждое из них должно быть закрыто до выполнения этой команды. Кроме того, эта команда доступна из меню редакторов ISaGRAF.
Реальный отладчикКоманда «Отладка» открывает главное окно отладчика и закрывает окно Менеджера Программ. Оно снова открывается после установления связи между отладчиком и целевым приложением. Отладчик не может быть запущен, если целевой код не сгенерирован. Отладчик не может быть запущен, если открыты дочерние окна ( редактора, генератора кодов, соединения ввода-вывода...). Каждое из них должно быть закрыто до выполнения этой команды. Кроме того, эта команда доступна из меню редакторов ISaGRAF.
Подготовка рабочего пространства отладкиКоманда "Отладка / Рабочее пространство" позволяет Вам определить список документов для начального рабочего пространства. Такими документами могут быть программы, графика Прожектора, списки переменных. Графики и списки временных диаграмм из предыдущих версий ISaGRAF также записываются документами проекта. Документы, определенные в начальном рабочем пространстве автоматически открываются при запуске симуляции или отладки.
Диалог показывает существующие документы проекта слева и документы, выбранные для начального рабочего пространства. Используйте ">>" и "<<" клавиши для продвижения документов из одного списка в другой.
Каждый проект имеет свой собственный список документов для начального рабочего пространства.
Платы В/В, появляющиеся в окне симулятора, подписываются по их имени и номеру разъема. Обрабатываются любые стандартные типы В/В ISaGRAF (логический, аналоговый или сообщение). Каналы входных плат отображаются со специальными кнопками и полями. Каналы выходных плат отображаются с графическими индикаторами статуса и полями данных.
Логические входы: Логический вход представлен квадратной зеленой кнопкой. Номер канала отображается вместе с кнопкой. Входное значение - TRUE, когда кнопка нажата. Щелчок мышкой по кнопке изменяет соответствующее значение В/В. Используйте правую кнопку мышки для установки входа только тогда, когда кнопка нажата.
Логические выходы: Логический выход представлен маленьким кругом. Номер канала отображается вместе с В/В. Выходное значение - TRUE, когда графический символ высвечен.. Аналоговые входы: Канал аналогового входа - это простое числовое поле, где может быть введено значение соответствующего входа. Щелчок мышкой на прямоугольнике отобразит знак вставки. Тогда может быть введено новое значение для канала. Нет необходимости использовать клавишу ENTER после ввода. Аналоговые значения могут введены либо в десятичном, либо шестнадцатеричном виде. Используйте кнопки вверх/вниз для увеличения или уменьшения текущего значения. Аналоговые выходы: Канал аналогового выхода - это цифровое поле вывода. Выходное значение может быть отображено либо как десятичное, либо как шестнадцатеричное число. Пользователь не может выполнить ни одного действия на выходном канале. Входы сообщений: Канал входа сообщения - это простое текстовое поле, где вводится значение соответствующего входа. Щелчок мышкой на прямоугольнике отобразит знак вставки. Тогда может быть введено новое значение для канала. Нет необходимости использовать клавишу ENTERпосле ввода.
Выходы сообщений: Канал выхода сообщения - это текстовое поле вывода. Пользователь не может выполнить ни одного действия на выходном канале.К каждому объекту приложения ISaGRAF ссылаются по имени (введенному во время объявления переменной ) и по внутреннему виртуальному адресу, вычисленному генератором кодов. Виртуальный адрес переменной - это не ее сетевой адрес, введенный во время объявления переменной. Виртуальные адреса используются для связной работы, и специальных “С” приложений, использующих опцию IO development tool. Когда генератор кодов ISaGRAF запущен, он создает ASCII файл с логическим соответствием между именами и виртуальными адресами для всех объектов (переменные, программы, шаги…) проекта. Этот файл может быть легко запрошен из любого приложения пользователя для получения информации о статической базе данных ISaGRAF. Файл называется “APPLI.TST” и располагается в каталоге проекта ISaGRAF: “\ISAWIN\APL\proname” (proname - имя проекта). Этот раздел описывает детальный формат файла “APPLI.TST”. Основные нотации, используемые для последующего описания, показаны ниже:
VA виртуальный адрес
ATTR атрибут переменной
USR “С” функция
Возможные значения для атрибутов переменной показаны ниже. Такие значения содержатся в полях “атрибутов” (“attributes”):
+X внутренняя переменная
+C внутренняя переменная только на чтение
+I входная переменная
+O выходная переменная
Все числа, исключая виртуальные адреса, выражаются как десятичные целые. Виртуальные адреса (VA) выражаются как шестнадцатеричные числа их 4 цифр, и предваряются символом “!”. Например:
123 это десятичное значение
!А003 это шестнадцатеричный виртуальный адрес
Основная структура файла “APPLI.TST” показана ниже. Файл структурирован как список блоков. Блок - это список записей. Каждая запись описывается на одной строке текста. Каждый блок начинается с заголовка, помещенного на одной строке текста.
начало блока
описание блока
конец блока
Основной синтаксис одного блока показан ниже:
Аргументы:
IN REAL любая действительная аналоговая
Q REAL синус входа в диапазоне [-1.0..+1.0]
Описание:
Вычисляет синус действительной величины.
(*FBD пример блока “SIN” и “ASIN”*)
(* ST Эквивалент: *)
sine := SIN (angle);
result := ASIN (sine); (*результат равен углу *)
(* IL Эквивалент: *)
LD angle
SIN
ST sine
ASIN
ST result
ISaGRAF симулятор включает средство для построения и запуска скриптов симуляции. Скрипт описывается на простом языке типа ST, и используется для тестирования с помощью симулятора ISaGRAF.
Редактор скрипта симуляции запускается командой "Инструменты / Скрипты симуляции " окна Симулятора. Ниже дана рамка редактора скрипта:
Верхнее окно – это текстовый редактор, в котором вводятся инструкции скрипта. Оно используется также, как и другие текстовые редакторы ISaGRAF и включает возможности верхнего уровня, такие как выбор мышкой символа переменной. Вы можете использовать команды меню "Опции" для установки ширины табуляции и выбора шрифта.
Нижнее окно показывает все сообщения при работе скрипта. Разделительная линия между окнами может быть свободно передвинута чтобы изменит размер окон. Выходное окна может быть скрыто во время редактирования скрипта, но автоматически открывается каждый раз когда запускается скрипт.
Редактирование скриптовИспользуйте команды меню "Файл" для управления файлами скриптов:
Новый............... создает новый скрипт без заголовка
Открыть............ загружает существующий скрипт из файла
Сохранить........ сохраняет текст скрипта и содержание выходного окна на диске директории проекта
Сохранить как. сохраняет скрипт под другим именем
Для каждого скрипта в директории проекта ISaGRAF создаются два файла:
<имяскрипта>.SCC....... текст скрипта (инструкции)
<имяскрипта>.SCO...... содержание выходного окна
где <имяскрипта> - имя скрипта. Оба файла – стандартные текстовые файлы и могут быть открыты любым текстовым редактором.
Во время редактирования скрипта, вы можете использовать команду "Редактор/ Вставить символ" чтобы выбрать объявленное имя переменной и ввести его в позиции курсора. Запуск скриптовПеред запуском скрипт должен быть проверен и скомпилирован. Если нужно, синтаксис проверяется автоматически по команде "Запустить".
Используйте следующие команды меню "Скрипт":
Все каналы одиночной платы имеют тот же самый тип (логический, аналоговый или сообщение) и направление (ввод или вывод). Сложное оборудование В/В представляет устройство В/В с каналами различных типов или направлений. Сложное оборудование В/В представляется как список одиночных плат В/В. Оно использует только один разъем в списке шасси соединений В/В.
Для определения сложного оборудования В/В пользователь должен определить список одиночных плат, которые определят оборудование В/В. Он также должен ввести детальные параметры каждой одиночной платы. Список одиночных плат В/В вводится при помощи окна диалога.Нажатие кнопки “Добавить” позволяет пользователю добавить одиночную плату в конец текущего списка. Кнопка “Вставить” используется для вставки новой одиночной платы перед текущей выбранной платой в списке. Кнопка “Удалить” удаляет выбранную одиночную плату из списка. Кнопки “Переименовать” и “Параметры” используются для изменения имени и параметров выбранной одиночной платы. Обратитесь к соответствующему разделу для полного объяснения параметров одиночной платы. Сложное оборудование В/В может группировать до 16 одиночных плат В/В. Имя одиночной платы (внутри оборудования В/В) не может превышать 8
символов.
Эта секция показывает примеры сложных структур, которые могут быть определены в Потоковых Диаграммах. Такие структуры объединяют основные объекты связанные вместе.
IF / THEN / ELSE
(1) место для ввода действий по "THEN" (2) место для ввода действий по "ELSE" | |||
REPEAT / UNTIL
(3) место для ввода повторяемых действий | |||
WHILE / DO
(3) место для ввода повторяемых действий |
Текст на языке IL может быть непосредственно введен в блок действия SFC, на основе следующего синтаксиса:
ACTION (P) : (* или N *)
#info=IL
<инструкция>
<инструкция>
....
#endinfo
END_ACTION;
Специальные ключевые слова “#info=IL” и “#endinfo” должны быть введены именно так, прописными буквами. Пробелы и символы табуляции вводить нельзя до или после ключевых слов. Пример:
(* SFC программ с последовательностью IL в блоке действия *)
Язык Список Инструкций (IL) можно использовать для описания SFC переходов, согласно следующему синтаксису:
#info=IL
<инструкция>
<инструкция>
....
Значение, которое содержит текущий результат
(IL регистр) в конце IL последовательности, будет являться условием присоединенным к переходу:
текущий результат = 0 условие FALSE
текущий результат <> 0 условие TRUE
Специальные ключевые слова “#info=IL” и “#endinfo” должны быть введены именно так, прописными буквами. Пробелы и символы табуляции вводить нельзя до или после ключевых слов. Пример:
(* SFC программа с IL программой для переходов *)
Язык Релейных Диаграмм (LD) можно использовать для описания условий, присоединенных к переходам. Диаграмма состоит из штанги с витком. Значение витка представляет значение перехода. Пример:
Язык Структурный Текст (ST) можно использовать для описания условий, присоединенных к переходам. Выражение должно иметь логический
тип и заканчиваться точкой с запятой:
< boolean_expression > ;
Выражение может быть константой TRUE или FALSE, входом или внутренней логической переменной, или комбинацией переменных, которые дают логическое значение. Пример:
(* Программа SFC с программой ST для переходов *)
Используя симулятор ISaGRAF, входными каналами можно управлять , действуя на кнопки и управление редактирования панели симулятора. Вы можете в любое время использовать следующие команды меню "Инструменты" чтобы сохранять и восстанавливать состояние всех входных каналов:
Загрузить входную схему Присвоить входным каналам значения сохраненные в файле который был создан на диске с помощью команды "Сохранить входную схему".
Сохранить входную схему Сохранить состояния входных каналов в файле, так чтобы они могли быть восстановлены позднее с помощью команды "Загрузить входную схему". Файл сохраняется в директории проекта и таким образом сохраняется с другими файлами проекта с помощью архиватора ISaGRAF .
Замечаниe: Только именованные входные каналы (имеющие присоединенные переменные) сохраняются на диске.
Существует возможность сохранения любого состояния любой прикладной программы, однако представляется рискованным восстанавливать программу в том состоянии, которое было зафиксировано в момент последнего резервирования, по крайней мере, по трем причинам:
- Некоторые процессы требуют определенных предварительных действий перед рестартом
- Очень нудно возиться со всеми многочисленными статусными характеристиками состояния процесса
- Некоторые внешние ресурсы, такие как периферийные устройства или программы C не могут быть автоматически перезапущены
Представляется, что лучшее решение - это сохранить аналоговые или булевские переменные, описывающие состояние процесса, в те моменты, когда, по мнению программиста, есть возможность использовать их при рестарте. После этого было бы возможно с помощью возможно неполного, но достаточно разумного ‘снимка’ состояния процесса запустить, убить или заморозить программы SFC и инициализировать переменные, чтобы привести приложение в адекватное состояние. В ISaGRAF не предусмотрено никакой автоматической процедуры старта.
Затем можно из незавершенного, но интеллектуального 'образа' процесса запускать, убивать или замораживать программы SFC и инициализировать переменные, чтобы привести приложение в адекватное состояние. Но процедура автоматического запуска не может быть обеспечена ISaGRAF.
Представляется, что лучшее решение - это сохранить аналоговые или булевские переменные, описывающие состояние процесса, в те моменты, когда, по мнению программиста, есть возможность использовать их при рестарте. После этого было бы возможно с помощью возможно неполного, но достаточно разумного ‘снимка’ состояния процесса запустить, убить или заморозить программы SFC и инициализировать переменные, чтобы привести приложение в адекватное состояние. В ISaGRAF не предусмотрено никакой автоматической процедуры старта.
Пример:
Выгрузка поддерживается в целевой задаче и системе разработки в версиях 3.22 и старше.
Нет ограничений на встроенный упакованный код (ВУК) в версиях от 3.03 до 3.21, так как ВУК запоминается как стандартный ресурс. Но встроенная информация не может быть выгружена в этом случае из-за того, что целевая задача не поддерживает требуемые куммуникационные функции.
Для того, чтобы изобразить диаграмму SFC, пользователю просто нужно ввести основные компоненты диаграммы. Все одиночные линии, соединяющие два элемента ( горизонтальные или вертикальные ) рисуются редактором SFC автоматически. Для вставки символа выберите в редакторе панель инструментов и щёлкните мышью в области диаграммы, в которую нужно произвести вставку. Символы вводятся в текущей позиции. Могут использоваться следующие горячие клавиши:
................. Ввести начальный шаг ................. Ввести одиночный шаг ................. Ввести переход ................. Ввести прыжок на шаг ...... Ввести OR расхождение или схождение / Добавить ветви ...... Ввести AND расхождение или схождение / Добавить ветви ................. Ввести макрошаг ...... Ввести начальный или конечный шаг для тела макрошага(Символ "
" определяет комбинацию с клавишей SHIFT)Сетка редактирования
показывает центр каждой ячейки редактируемой матрицы. Опции редактора позволяют изображать и убирать сетку во время ввода диаграммы. Сетка очень полезна для изначального расположения диаграммы SFC или выбора её части. Используйте команду «Опции / Настройки» для того, чтобы изобразить или убрать сетку.
Редактор SFC ISaGRAF всегда показывает текущую позицию в матрице. Текущая ячейка отмечена серым. Маленький квадрат в нижнем правом углу может быть использован для свободного изменения размеров ячеек. Отношение X/Y может быть, также изменено.
Создание Схождения или РасхожденияСхождение или Расхождение всегда изображается слева направо. Для изображения Схождения или Расхождения его левый угол должен быть помещён в область диаграммы. Тип изображения (одиночный или двойной) устанавливается выбором одной из этих кнопок на панели.
...... Ввести OR расхождение или схождение / Добавить ветви ...... Ввести AND расхождение или схождение / Добавить ветви Добавление ветви СхожденияПозиции start и stop каждой дополнительной ветви размещаются на линии Схождения или Расхождении при помощи кнопок панели.
Левый угол Схождения или Расхождения должен быть выбран перед вставкой новой ветви. Правый угол имеет тот же стиль ( одиночный или двойной ), что и главный левый угол. Правый угол не может быть вставлен, если не добавлен левый.
Команды меню менеджера проектов используются для создания новых проектов, их редактирования и управления существующими.
Создание нового проектаДля создания нового проекта, введите его имя. В результате этого будет создан пустой проект, который не содержит объектов. Конфигурация ввода-вывода может быть присоединена к созданному проекту. Эта конфигурация должна быть определена в библиотеках. Если конфигурация выбрана, то ISaGRAF автоматически установит соединение ввода-вывода и объявит соответствующие переменные ввода-вывода в словаре нового проекта. Если Вы создаёте или переименовываете проект, то необходимо придерживаться следующих правил относительно его имени :
· Длина имени не должна превышать 8
символов
· Первый символ должен быть буквой
· Следующие символы могут быть буквой, цифрой или символом подчёркивания
· В имени проекта прописной и строчный регистры не различаются
После создания проекта, пользуйтесь командой «Редактор / Текст комментария» для ввода описания проекта для отображения в списке.
Редактирование описания проектаКоманда «Проект / Дескриптор проекта» используется для редактирования описания проекта. Этот документ полностью характеризует проект и его отличия от остальных проектов в списке. Кроме того, он может быть использован для заметок при работе с проектом.
Редактирование проектаКоманда «Файл / Редактор» открывает окно менеджера программ для выбранного проекта. Из этого окна можно управлять содержимым проекта ( программами, параметрами приложения и т.д. ). Для редактирования проекта также можно дважды щёлкнуть мышью на его имени.
Предыстория измененийСистема ISaGRAF сохраняет все изменения, относящиеся к компонентам проекта, в файле предыстории. Каждое изменение снабжено именем, датой и временем, когда оно было произведено. Файл предыстории содержит последние 500 изменений. Для каждого проекта существует свой файл предыстории. Файл предыстории - это дополнение к файлу-дневнику данного проекта.
Команда «Проект / История» позволяет пользователю просмотреть или напечатать предысторию изменений выбранного проекта. Пользователь может выбрать один или несколько элементов в главном списке, нажав соответствующие кнопки :
Принять......................................... закрыть окно
Печать........................................... распечатать содержимое списка
Помощь.......................................... вывести справку об этом окне диалога
[Удалить] Отмеченные................ удалить все выделенные линии из списка
[Удалить] Все................................ очистить список полностью
Поиск.............................................. найти шаблон в списке
Строка ввода над кнопкой «Поиск» служит для ввода шаблона поиска. Эта функция не различает регистры. Когда поиск доходит до конца списка, он возобновляется с начала и проходит до начальной позиции.
Система разработки ISaGRAF позволяет пользователю создавать таблицы преобразования. Таблица преобразования - это набор точек, используемых для аналогового преобразования. Таблица преобразования может быть подключена к входной или выходной аналоговой переменной. Таблица создает пропорциональное соотношение между электрическими значениями (считанных с входных датчиков или посланных на выходное устройство) и физическими значениями (используемыми в программировании приложения).
Таблицы преобразований редактируются с помощью диалога команды "Инструменты / Таблицы преобразований" словаря ISaGRAF.
Определенная таблица преобразований может быть использована для фильтрации значений любой входной или выходной аналоговой переменной выбранного проекта. Для подключения таблицы преобразования к переменной, должен быть открыт редактор объявления переменных. Входная или выходная аналоговая переменная после должна быть выбрана и ее параметры отредактированы. Переменная не может быть подключена к таблице преобразования, которая еще не определена.
Следующие логические операторы являются специфическими для языка ST:
- REDGE определение восходящего фронта
- FEDGE определение падающего фронта
Могут быть использованы другие логические операторы, такие, как:
- NOT логическое отрицание
- AND(&) логическое И (AND)
- OR логическое ИЛИ (OR)
- XOR логическое исключающее ИЛИ (OR)
Их описание можно найти в главе ‘Стандартные операторы функциональные блоки и функции’.
“REDGE” операторИмя: REDGE
Значение: определяет передний фронт булевского выражения
Синтаксис: <edge> := REDGE ( <boo_expression>,<memo_variable> );
Операнды: Первый операнд - любая булевская переменная или сложное выражение, второй операнд - внутренняя переменная, использующаяся для хранения последнего состояния выражения
Возвращаемое значение: TRUE если значение выражения меняется с FALSE на TRUE. FALSE во всех остальных случаях.
Передний фронт не может быть определен при помощи оператора REDGE более одного раза в течении одного цикла. Этот оператор можно использовать для описания состояния присоединенного к SFC переходу.
Предупреждение:
Булевская переменная для хранения последнего состояния выражения не может быть использована в качестве триггера для фронтов нескольких выражений.
Если выражение - это булевская переменная с именем “xxx”, то нужно объявить уникальное имя внутренней переменной “EDGE_xxx” и использовать его в выражении REDGE для этой переменной. Этот метод гарантирует, что эта переменная не будет изменена во время других вычислений REDGE.
Пример:
(*ST программа, использующая REDGE оператор*)
(*Эта программа считает передние фронты булевского входа*)
В начале работы ISaGRAF выполняется следующий алгоритм:
· Определения
Код приложения это двоичный код, который генерируется и загружается подсистемой разработки и затем исполняется на целевой машине. Он может быть дополнен таблицей символов.
Таблица символов - это ASCII база данных, которая генерируется и загружается подсистемой разработки. Эта таблица обеспечивает связь символьных объектов и внутренних объектов целевой задачи. Она требуется в целевой задаче только в случаях специфического управления символами. Подробнее о таблице символов можно узнать в руководстве пользователя: Продвинутые средства программирования.
Когда приложение загружается отладчиком подсистемы разработки в целевую машину, код приложения сохраняется на диске в файле под именем
ISAx1 резервная копия файла кода приложения ISaGRAF (x - номер подчиненного)
Если, кроме того загружена таблица символов, она тоже сохраняется на диске в файле под именем
ISAx6 резервная копия файла таблицы символов приложения (x - номер подчиненного)
Когда ISaGRAF запускается, целевая задача ищет код приложения и таблицу символов в текущем каталоге и загружает их в память. Если файл таблицы символов не найден, то целевая задача исполняет код приложения без таблицы символов. Если в памяти нет кода приложения, то целевая задача ждет, когда приложение будет загружено.
Для того чтобы запустить приложение при включении машины без использования отладчика скопируйте эти файлы на диск целевой машины в текущий каталог целевой задачи. В бездисковой конфигурации можно использовать виртуальный диск.
Если система разработки ISaGRAF установлена в стандартном каталоге \ISAWIN, то:
файл кода приложения проекта MYPROJ будет называться
\ISAWIN\APL\MYPROJ\appli.x8m
файл таблицы символов приложения проекта MYPROJ будет называться
\ISAWIN\APL\MYPROJ\appli.tst
Пример:
Если из каталога, где находится isa.exe, выдать команду
Команда “Списки переменных” в меню “Списки шпиона” окна Отладчика позволяет пользователю строить раздельные списки переменных, которые обновляются их текущими значениями. Списки строятся во время отладки приложения. Списки могут быть сохранены на диске и открыты снова во время другой сессии отладки. Список может содержать до 32 переменных. Переменные разного типа могут быть смешаны в одном и том же списке. Глобальные и локальные переменные могут быть вставлены в список. Список переменных предназначен для одного проекта. Списки переменных очень полезны для функционального тестирования приложения. Они позволяют пользователю наблюдать изменения ограниченной части контролируемого процесса, независимого от соответствующих исходных кодов в программах приложения. Списки переменных также полезны во время отладки текстовых ST и IL программ. Пользователь может легко сгруппировать в список набор переменных, используемых в программе, для того чтобы контролировать или отображать выполнение запрограммированных инструкций.
Для каждой переменной списка ISaGRAF показывает ее имя, текущее значение и текст комментария. Размер колонок может быть изменен путем перетаскивания разделительной линии в панели заголовка списка.
Сохранение списков на жесткий дискКоманды меню “Файл” используются для создания, открытия и сохранения списков переменных. ISaGRAF не ограничивает число списков для одного проекта. Правила, показанные ниже, должны выполняться при наименовании списков переменных, которые будут сохраняться на диск:
· имя не должно превышать 8 символов
· первый символ должен быть буквой
· следующие символы могут быть буквами, цифрами или символом подчеркивания
· Верхний и нижний регистры в наименовании списков не различаются
Редактор списка не может отобразить больше, чем один список переменных за раз в одном и том же окне. Однако, редактор списка может быть запущен более, чем один раз, для просмотра различных списков одновременно.
Вставка переменных в списокАргументы:
IN REAL аналоговая величина должна быть больше нуля
Q REAL квадратный корень входа
Описание:
Вычисляет квадратный корень действительной величины.
(*FBD пример блока “SQRT”*)
(* ST Эквивалент: *)
xpos := ABS (xval);
xroot := SQRT (xpos);
(* IL Эквивалент: *)
LD xval
ABS
ST xpos
SQRT
ST xrout
Аргументы:
SET1 BOO если TRUE, установить Q1 в TRUE (доминанта)
RESET BOO если TRUE, сбросить Q1 в FALSE
Q1 BOO булевское состояние в памяти
Описание:
Устанавливает доминанту. См. Таблицу:
Set1 | Reset | Q1 | result Q1 | ||||
0 | 0 | 0 | 0 | ||||
0 | 0 | 1 | 1 | ||||
0 | 1 | 0 | 0 | ||||
0 | 1 | 1 | 0 | ||||
1 | 0 | 0 | 1 | ||||
1 | 0 | 1 | 1 | ||||
1 | 1 | 0 | 1 | ||||
1 | 1 | 1 | 1 |
(*FBD пример блоков SR*)
(* ST эквивалент: Мы предполагаем, что SR1 - это экземпляр блока SR *)
SR1((auto_mode & start_cmd), stop_cmd);
command := SR1.Q1;
(* IL Эквивалент: *)
LD auto_mode
AND start_cmd
ST SR1.set1
LD stop_cmd
ST SR1.reset
CAL SR1
LD SR1.Q1
ST command
INT
Аргументы:
PUSH BOO команда “PUSH” (на переднем фронте)
добавить значение IN в верхушку стека
POP BOO команда “POP” (на переднем фронте)
удалить из верхушки стека последнее сохраненное значение
R1 BOO сбросить стек в пустое состояние
IN INT сохраняемое значение
N INT размер стека определенный приложением
EMPTY BOO TRUE если стек пустой
OFLO BOO переполнение: TRUE если стек переполнен
OUT INT значение в верхушке стека
Описание:
Управляет стеком целых значений.
Функциональный блок “STACKINT” включает определение переднего фронта для команд PUSH и POP. Максимальный размер стека 128. Размер стека определенный приложением - N не может быть меньше 1 и больше 128.
Заметим, что значение OFLO действительно только после сброса (R1 было установлено в TRUE, по крайней мере, однажды и обратно в FALSE)
(*FBD пример блоков “STACKINT” : управление ошибками*)
(* ST Эквивалент: Мы предполагаем, что STACKINT1 - это экземпляр блока STACKINT *)
STACKINT1(err_detect, acknoledge, manual_mode, err_code, max_err);
appli_alarm := auto_mode AND NOT(STACKINT1.EMPTY);
err_alarm := STACKINT1.OFLO;
last_error := STACKINT1.OUT;
(* IL Эквивалент: *)
LD err_detect
ST STACKINT1.push
LD acknoledge
ST STACKINT1.pop
LD manual_mode
ST STACKINT1.r1
LD err_code
ST STACKINT1.IN
LD max_err
ST STACKINT1.N
CAL STACKINT1
LD auto_mode
ANDN STACKINT1.empty
ST appli_alarm
LD STACKINT1.OFLO
ST err_alarm
LD STACKINT1.OUT
ST last_error