Редактор функциональных диаграмм

Материал из CANNY Wiki
Перейти к: навигация, поиск


Основным режимом работы CannyLab является режим редактора функциональных диаграмм.

Общее описание[править]

В режиме редактора функциональных диаграмм, пользователь имеет возможность:

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

В редакторе, предусмотрена команда пошаговой отмены последнего выполненного пользователем действия - UnDo, которая выполняется при выборе пункта «Правка» => «Отменить» главного меню программы или нажатием комбинации клавиш «Ctrl+Z», а также команда пошагового возврата ранее отмененных действий - ReDo, которая выполняется при выборе пункта «Правка» => «Вернуть» главного меню программы или нажатием комбинации клавиш «Ctrl+Y».

Для упрощения разработки пользовательских диаграмм в редакторе предусмотрена возможность использования буфера обмена для вырезания, копирования и вставки фрагментов диаграммы как внутри одного, так и между различными файлами. Доступ к командам «Вырезать», «Копировать» и «Вставить» осуществляется через меню «Правка» или, как и в других приложениях, с помощью привычных сочетаний клавиш «Ctrl+X», «Ctrl+C» и «Ctrl+V» соответственно.

Вертикальная прокрутка рабочей области осуществляется при помощи колеса мыши, клавишами управления курсором Up и Down, клавишами PageUp, PageDown или вертикальной полосы прокрутки, горизонтальная — клавишами управления курсором Left и Right;, вращением колеса мыши при нажатой клавише «Alt» или при помощи горизонтальной полосы прокрутки.

Для быстрого изменения масштаба изображения вращайте колесо мыши удерживая клавишу «Ctrl».

Для быстрого перемещения по полю диаграммы пользователь также может применить метод «Drag-and-Drop» (перетаскивание), который позволяет при нажатии и удержании средней кнопки мыши (колесика) передвигать рабочую область редактора с помощью произвольных перемещений мыши, при этом указатель мыши меняет изображение со стрелочки на сжатую в ладонь.

Добавление функциональных блоков на диаграмму[править]

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

  • выделить блок кликом левой клавиши мыши в панели функциональных блоков, затем кликнуть правой кнопкой мыши в рабочей области диаграммы и выбрать в контекстном меню пункт
4 6 1 1.png;
  • нажать и, удерживая нажатой левую кнопку мыши на блоке в панели функциональных блоков, «перетащить» его в рабочую область редактора диаграмм и отпустить левую кнопку мыши. На время перетаскивания к курсору будет добавлено изображения значка добавляемого блока.

Например:

4_6_1_2.png   - вид курсора мыши, при добавлении блока "Логическое И":

Перемещение функциональных блоков[править]

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


Выделение элементов функциональной диаграммы[править]

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

4 6 3 1.png

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

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


Удаление элементов функциональной диаграммы[править]

Удаление функциональных блоков или сетей диаграммы выполняется выделением удаляемого объекта или группы объектов и нажатием на клавиатуре клавиши «Delete», либо выбором пункта «Удалить» контекстного меню, вызов которого осуществляется нажатием правой кнопки мыши на выделенном элементе диаграммы.


Создание соединительной линии[править]

Построить новую соединительную линию на функциональной диаграмме, возможно:

  • от выхода одного, к входу того-же или другого функционального блока;
  • от входа одного, к выходу того-же или другого функционального блока;
  • от входа или выхода функционального блока к уже существующей линии;
  • от выхода константы к входу или выходу функционального блока, либо к уже существующей линии.

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

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

4 6 5 1.png

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

4 6 5 2.png

Добавление узла (точки излома) линии или завершения линии в точке ее конечного подключения производится кликом левой кнопки мыши.

4 6 5 3.png

4 6 5 4.png

Оборвать линию в произвольной точке диаграммы можно двойным кликом левой кнопки мыши в этой точке, отменить построение линии — нажатием кнопки Esc.

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

4 6 5 5.png

Изменение соединительной линии[править]

Изменение положения и формы соединительной линии производится методом ее «перетаскивания» за прямые отрезки.

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

4 6 6 1.png

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

4 6 6 4.png

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

4 6 6 5.png


Сегменты и сети соединительных линий[править]

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

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

4 6 7 1.png

При нажатии левой кнопкой мыши на соединительную линию, принадлежащую какому-либо сегменту, происходит выделение всего сегмента.

4 6 7 2.png

Удаление сегмента происходит аналогично удалению любого другого элемента функциональной диаграммы.

Именованные сети[править]

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

4 6 8 1.png

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

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

4 6 8 2.png - разорвать сегмент, удалив отрезок между ближайшими узлами;
- задать новое имя данной сети на диаграмме;
- вырезать выделенный элемент или сегменты;
- копировать выделенный сегмент или сегменты;
- вставить скопированный или вырезанный сегмент или сегменты;
- удалить выделенный сегмент или сегменты.

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

4 6 8 3.png 4 6 8 4.png

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

4 6 8 5.png

Идентификационные номера функциональных блоков[править]

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

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

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

Константы[править]

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

Добавление новой константы на диаграмму можно осуществить следующими способами:

  • кликнуть правой кнопкой мыши в рабочей области диаграммы и выбрать в контекстном меню пункт
4 6 10 10.png;
  • нажать и, удерживая нажатой левую кнопку мыши на элементе "Константа" в панели функциональных блоков, «перетащить» его в рабочую область редактора диаграмм и отпустить левую кнопку мыши. На время перетаскивания к курсору будет добавлено изображение соответствующего значка: 4 6 10 11.png.

Кроме того, константа может быть добавлена непосредственно к свободному входу любого функционального блока.

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

4 6 10 1.png

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

4 6 10 2.png

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

4 6 10 3.png

При выборе пункта «Ввести значение» пользователь может задать константе числовое значение с помощью диалогового окна. Ввод значения может осуществляться в десятичном, шестнадцатеричном, двоичном формате или в символьном виде, при этом отображение введенного значения на диаграмме будет выполнено в выбранном формате.

4 6 10 4.png 4 6 10 5.png
4 6 10 6.png 4 6 10 7.png

Десятичное значение может быть задано 1..5-значным числом в интервале от 0 до 65535, шестнадцатеричное — 1..4-значным числом в интервале от 0 до FFFF (допускается вводить символы как в верхнем так и в нижнем регистре), двоичное — 1..16-значным числом в интервале от 0 до 1111111111111111, а символьное — символами основной таблицы ASCII.

Примечание: При вводе символьных значений допускается использование специальных символов в следующем формате: «\n» - код символа ASCII 0x0A (перевод строки), «\r» - код символа ASCII 0x0D ( возврат каретки), «\t» - код символа ASCII 0x09 (табуляция), «\0» - код символа ASCII 0x00 (ноль, пустое значение), «\xYY» любой символ, где YY – его ASCII код в шестнадцатеричном формате.

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

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

Именованные константы представлены в виде дерева и сгруппированы по назначению.

4 6 10 8.png

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

4 6 10 9.png

Быстрый доступ к списку именованных констант можно получить, используя двойное нажатие левой кнопки мыши на поле константы, при удержании в нажатом состоянии клавиши «Ctrl».

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

Регистры[править]

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

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

  • кликнуть правой кнопкой мыши в рабочей области диаграммы и выбрать в контекстном меню пункт
4 6 11 6.png;
  • нажать и, удерживая нажатой левую кнопку мыши на элементе "Регистр чтения" или "Регистр записи" в панели функциональных блоков, «перетащить» его в рабочую область редактора диаграмм и отпустить левую кнопку мыши. На время перетаскивания к курсору будет добавлено изображение значка добавляемого элемента.

Например, добавление регистра чтения: 4 6 11 7.png

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

4 6 11 8.png

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

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

4 6 11 3.png

При выборе регистра, на диаграмме будет отображено его сокращенное наименование.

4 6 11 4.png

4 6 11 5.png

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

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