Показаны сообщения с ярлыком WinCC. Показать все сообщения
Показаны сообщения с ярлыком WinCC. Показать все сообщения

четверг, 14 июня 2012 г.

Импульсные кнопки в WinCC (продолжение)

Ранее мы уже реализовали выдачу коротких импульсов с использованием скриптов WinCC. Однако иногда импульсы должны всё-таки иметь какую-то минимальную длительность.
Рассмотрим один из способов формирования таких импульсов. Создадим Global action,  выполняемый по срабатыванию циклического триггера с заданной периодичностью (я использовал 500 мс), и будем подсчитывать количество его вызовов:


#include "apdefap.h"

int gscAction( void )
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
    #define tag1 "tag1"
// WINCC:TAGNAME_SECTION_END

    static long counter = 0;
    if(GetTagBit(tag1)){
        if(++counter > 4){
            counter = 0;
            SetTagBit(tag1, 0);
        }
    }
    return 0; 
}


среда, 13 июня 2012 г.

Импульсные кнопки в WinCC

Одним из методов реализации управления объектом с помощью SCADA-систем является выдача в контроллер импульсных команд.
Для обеспечения реакции на команду во многих случаях будет вполне достаточно импульса длиной в один скан ПЛК. Если используемый контроллер обновляет значения внешних переменных (получаемых через коммуникационные интерфейсы или I/O) между сканами, то для того, чтобы выдать импульс длительностью по крайней мере в один скан, необходимо:
  1. установить значение выходного тега в 1;
  2. убедиться, что это значение попало в контроллер;
  3. установить значение выходного тега в 0. Теперь мы можем быть уверены, что нулевое значение тега будет прочтено контроллером в следующем или еще более позднем скане.
Первые два пункта выполняются в WinCC с помощью функций синхронной записи тега.

понедельник, 11 июня 2012 г.

Инвертирование тега при нажатии на кнопку в WinCC

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

С-скрипт

Вызываем Global Script C-Editor и в меню File выбираем New Project Function (Alt-P). Наша функция будет принимать в качестве аргумента имя тега, который необходимо инвертировать, и выглядит достаточно просто:

void InvertTag(char* tagName)
{
    SetTagBit(tagName, !GetTagBit(tagName));
}


пятница, 8 июня 2012 г.

Использование Global Scripts для изменения тегов в WinCC

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

среда, 6 июня 2012 г.

Настройка периода обновления динамических элементов в WinCC

Состояние динамических элементов на экранах WinCC изменяется при срабатывании триггеров, заданных при их конфигурировании. Существуют три типа триггеров: Cyclic Triggers, Tag Triggers, Event-Driven Triggers. 
При задании динамических свойств с помощью C-Action или VBS-Action по умолчанию создается Cyclic Trigger, а при использовании Dynamic Dialog создается Tag Trigger, включающий в себя все теги, используемые в выражении Dynamic Dialog.
Cyclic Trigger просто периодически вызывает скрипт или вычисляет выражение, Tag Trigger же срабатывает при изменении периодически опрашиваемых тегов, включенных в него:

Заданный по умолчанию период опроса тегов и вызова скриптов можно изменить в окне Settings Graphics Designer'а (вызывается из меню Tools->Settings...) на вкладке Default Object Settings:

среда, 23 мая 2012 г.

Отображение текста в несколько строк в WinCC

Для отображения текста с новой строки (например, в Static Text или на кнопке) необходимо при вводе текста нажимать Shift-Enter или Ctrl-Enter или напечатать \r\n в нужном месте.


WinCC V7.0+SP3

вторник, 22 мая 2012 г.

Глобальная палитра в WinCC

Для унификации цвета визуальных элементов в WinCC можно использовать глобальную для всего проекта палитру.
Настройка палитры производится с помощью WinCCExplorer в окне свойств проекта :
На вкладке User Interface and Design окна Project properties надо нажать кнопку Edit расположенную напротив надписи Central Color Palette.

среда, 16 мая 2012 г.

Навигация между экранами в WinCC (продолжение)

Вызов нового окна способом, описанным в предыдущем сообщении, имеет одну особенность - всплывающее окно существует только до тех пор, пока открыт экран на котором расположен Picture Window нового окна. При переходе на другой экран всплывающее окно закрывается.
Чтобы избежать этого, создадим ещё один экран (назовем его для примера layout.pdl) и добавим на него новый Picture Window (присвоим ему имя "MainWindow"). В этом Picture Window мы будем отображать главный технологический экран нашего проекта, для чего в окне Object Properties объекта MainWindow свойству Picture Name присвоим имя главного экрана (main.pdl в данном примере). После чего сделаем layout.pdl стартовым экраном нашего проекта.
Теперь у нас появилась возможность использовать два подхода к организации навигации между экранами:
  • кнопки перехода на другой экран и вызова всплывающих окон располагаются на экранах, отображающихся в MainWindow. В этом случае MainWindow растягиваем на всю площадь layout;
  • некоторые (или все) кнопки навигации располагаются на экране layout (для этой цели на предыдущем рисунке выделена область вверху экрана).  В этом случае MainWindow получается по размеру меньше layout.

вторник, 15 мая 2012 г.

Выбор стартового экрана в WinCC


Стартовый экран проекта WinCC выбирается в WinCCExplorer в разделе Graphics Designer с помощью контекстного меню соответствующего файла:
Start screen selection

WinCC V7.0+SP3

Навигация между экранами в WinCC


Изменение экрана в текущем окне

В окне Object Properties кнопки изменения экрана выбираем Events->Mouse->Mouse Action->Direct Connection. 
В окне Direct Connection
  • в качестве Source выбираем Constant. В соответствующем поле вводим имя экрана, на который требуется перейти (расширение файла вводить не обязательно). Имя экрана может быть введено вручную или выбрано с помощью безымянного окна вызываемого кнопкой, расположенной рядом с полем ввода;
  • в качестве Target выбираем Current Window. В списке Property выбираем Picture Name.
Смена экрана в текущем окне