Datum: Datei:Kapitel 2, C-Aktionen.1 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Глава 2: C-акции C
Datum: Datei:Kapitel 2, C-Aktionen.2 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Для акций, относящихся к объекту, проектируемому не средствами стандартного WinCC Для акций, относящихся к объекту, проектируемому не средствами стандартного WinCC C-программы в WinCC Для стандартных и проектных функций Для акций, работающих в фоновом режиме Для Dynamic Wizardа
Datum: Datei:Kapitel 2, C-Aktionen.3 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Типы данных/ Объявления Локальные переменные акции
Datum: Datei:Kapitel 2, C-Aktionen.4 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Упражнение: Типы данных/ Объявления Задание 1: // Z1 - Z2 = Ergebnis // Z1, Z2: от 0 до 250 ______Z1, Z2; ______ Ergebnis; Задание 2: // Z1 - Z2 = Ergebnis // Z1,Z2:от -100 до +100 ______Z1, Z2; ______Ergebnis; Задание 3: // Давление велико и Давление ok в переменных Text1 и Text2 с начальными значениями ______Text1 = _________________________; ______Text2 = _________________________; Задание 4: // rot, gelb или gruen в свойстве объекта Color (Тип данных long !!!) ____rot= ____________;// FF hex ____gelb= ____________;// FFFF hex ____gruen= ____________;// FF00 hex
Datum: Datei:Kapitel 2, C-Aktionen.5 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Команды / операторы Команды для числовых переменных:// Zahl1 и Zahl2 -переменные или константы Результат = Выражение;// Команда Zahl1 + Zahl2; // Сложение Zahl1 -Zahl2;// Вычитание Zahl1 *Zahl2;// Умножение Zahl1 /Zahl2;// Деление Zahl1 &Zahl2;// Побитовая команда И Zahl1 |Zahl2;// Побитовая команда ИЛИ Zahl1 ^Zahl2;// Побитовая команда ИСКЛЮЧАЮЩЕЕ ИЛИ... Команды для логических переменных: // Bit1 и Bit2 - переменные или значения TRUE и FALSE Результат = логическое выражение; // Команда ! Bit1; // Отрицание Bit1 &&Bit2; // логическая команда И Bit1 ||Bit2; // логическая команда ИЛИ... Преобразование типов числовых переменных: // Тип - числовой тип Результат =(Тип) (Выражение)... ; // Преобразование типа
Datum: Datei:Kapitel 2, C-Aktionen.6 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Создание C-акции Свойства объекта Должно возвращаться значение такого же типа данных Создание акции оканчивается только при сообщении "0 Error (s)" Установка триггера
Datum: Datei:Kapitel 2, C-Aktionen.7 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Чтение / запись переменных WinCC
Datum: Datei:Kapitel 2, C-Aktionen.8 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Упражнение: чтение / запись переменных WinCC Задание 1: 3 переключателя из библиотеки с бинарными переменными WinCC Bit_1, Bit_2, Bit_3 C-акция к свойству Display элемента Static Text (триггеры переменных: Bit_1, Bit_2, Bit_3 по 500 ms): // Возвращаемое значение (Anzeige) должно быть равно Bit_1 && Bit_2 || Bit_3 _____ Anzeige; Anzeige = __________________________________________________________________________________; return Anzeige; Задание 2: 3 элемента I/O-Field для изменения 16-разрядных переменных WinCC со знаком Wert_1, Wert_2, Wert_3 C-акция свойства Output Value 4-го элемента I/O-Field (триггеры переменных : Wert_1, Wert_2, Wert_3 по 500 ms): // Возвращаемое значение (Ausgabewert) равно (Wert_1 + Wert_2 + Wert_3) / 3 ____Ausgabewert; Ausgabewert = (float) _________________________________________________________________________; return Ausgabewert;
Datum: Datei:Kapitel 2, C-Aktionen.9 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Сязывание (Linking) в C-акциях Связывание не возможно:Связывание возможно:
Datum: Datei:Kapitel 2, C-Aktionen.10 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Условные операторы Отеротор ЕСЛИ-ТО if (Bedingung) {Оператор 1; Оператор 2;...; последний_Оператор;} else {Оператор 1; Оператор 2;...; последний_ Оператор;} (Bedingung)- бинарный результат сравнения или опроса: (Операнд 1 >Операнд 2) Сравнение на больше (Операнд 1 > = Операнд 2) Сравнение на больше или равно (Операнд 1 < Операнд 2) Сравнение на меньше (Операнд 1 < = Операнд 2) Сравнение на меньше или равно (Операнд 1 = = Операнд 2) Сравнение на равно (Операнд 1 ! = Операнд 2) Сравнение на не равно (GetTagBit(бинарная_переменная)) Опрос двоичной переменной WinCC (бинарная_переменная ) Опрос двоичной локальной переменной Выолняются, если Bedingung выполнен (= TRUE) Выолняются, если Bedingung не выполнен(= FALSE) Пример: if (GetTagSWord(Stand) > 120) {SetTagBit(Überlauf,TRUE);}// Наблюдение уровня наполнения if (b < 0) b = - b;// Образует абс. величину b if (GetTagBit(Bit1)) {b = 30; c = 17;} else {b = 17; c = 30;}//
Datum: Datei:Kapitel 2, C-Aktionen.11 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Упражнение: условные операторы Задание 1: Бинарная переменная WinCC DruckOK должна применяться для смены статического текста: DruckOKText TRUEДавление ok FALSEДавление слишком высоко Задание 2: Бинарные переменные WinCC Rot и Grün" оценивают цвет заднего плана прямоугольника: RotGrünBackground Color TRUETRUEЖелтый (FFFF hex) TRUEFALSEКрасный(FF hex) FALSETRUEЗеленый (FF00 hex) FALSEFALSEЧерный (0)
Datum: Datei:Kapitel 2, C-Aktionen.12 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Оператор выбора Оператор выбора : switch (Ausdruck) { case Inhalt1: Оператор 1; Оператор 2;...; break; case Inhalt2: Оператор 1; Оператор 2;...; break;... case Inhaltn: Оператор 1; Оператор 2;...; break; default: Оператор 1; Оператор 2;...; break; } Выполняется, если значение Ausdruck равно Inhaltn Выполняется, если значение Ausdruck равно Inhalt2 Выполняется, если значение Ausdruck равно Inhalt1 Пример: // C-акция к свойствуText элемента Static Text switch (GetTagSDWord(Farbe)){ case 0x000000FF:return(Красный); break; // Text = Красный, если Farbe = FF hex case 0x0000FF00:return(Зеленый); break; // Text = Зеленый, если Farbe = FF00 hex case 0x00FF0000:return(Синий); break; // Text = Синий, если Farbe = FF0000 hex default: return(?); break; // особый текст = ? }
Datum: Datei:Kapitel 2, C-Aktionen.13 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Упражнение: оператор выбора Задание 1: Беззнаковая 8-разрядная переменная Meldung10: Содерж Текст Цвет фона 2TF10 Темп. упала Желтый (FFFF) 1TF10 Темп. высока Красный (FF) 0TF10 Темп. ok Зеленый (FF00) Задание Z1: Круг двигается в прямоугольной области: Intervall X-PositionY-Position до до до до Движение: Временной триггер 500ms Позиция меняется каждые 500 ms на 10 пикселей
Datum: Datei:Kapitel 2, C-Aktionen.14 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Циклы Цикл со счетчиком: int i; for (i = нач_знач ; i
Datum: Datei:Kapitel 2, C-Aktionen.15 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Упражнение: циклы Задание Z1: // в тексте должен показываться, в текстовой переменной TextVar занесен. // C-акция в свойстве Display элемента "Static Text" с в тексте : int i; // определение переменной цикла BOOL anz=FALSE; // определение возвращаемого значения с нач. знач. char text[256]; // определение переменной text длиной в 256 символов sprintf (text, GetTagChar(TextVar)); // чтение перем. TextVar и запись ее в text for (i=0; i
Datum: Datei:Kapitel 2, C-Aktionen.16 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Образец решения упражнения: типы данных/ объявления Задание 1: // Z1 - Z2 = Ergebnis // Z1, Z2: 0 до 250 BYTEZ1, Z2; intErgebnis; Задание 2: // Z1 - Z2 = Ergebnis // Z1, Z2: -100 до +100 shortZ1, Z2; intErgebnis; Задание 3: // Давление слишком высоко и Давление ok в переменных Text1 и Text2 с //начальными значениями char*Text1 = Давление слишком высоко ; char*Text2 = Давление ok ; Задание 4: // rot, gelb или grün в свойстве объекта Color (тип данных long !!!) longrot= 0x000000FF;// FF hex longgelb= 0x0000FFFF;// FFFF hex longgruen= 0x0000FF00;// FF00 hex
Datum: Datei:Kapitel 2, C-Aktionen.17 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Образец решения упражнения: чтение / запись переменных WinCC Задание 2: Внутренние 16-разрядные переменные WinCC со знаком Wert_1, Wert_2, Wert_3: doubleAusgabewert; Ausgabewert =(double)((GetTagSWord(Wert_1)+GetTagSWord(Wert_2)+GetTagSWord(Wert_3))/3; return Ausgabewert; zur Vorgabe der drei Bits. Wert_1, Wert_2, Wert_ ms. 3 I/O-Field для задания трех значений. Задание 1: Внутренние бинарные переменные WinCC Bit_1, Bit_2 и Bit_3: BOOLAnzeige; Anzeige = GetTagBit(Bit_1) && GetTagBit(Bit_2) || GetTagBit(Bit_3); return Anzeige; Триггер переменных для Bit_1, Bit_2, Bit_ ms. Выключатель (из библиотеки) для задания бита.
Datum: Datei:Kapitel 2, C-Aktionen.18 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Образец решения упражнения: условные операторы Задание 1: Бинарная переменная WinCC DruckOK оценивается в свойстве Text элемента Static Text: if (GetTagBit(DruckOK) = = TRUE) return (Давление ok); elsereturn (Давление слишком высоко); Задание 2: Бинарные переменные WinCC Rot и Grünоценивается в свойстве Background Color прямоугольника: BOOL Rot = GetTagBit(Rot), Grün = GetTagBit(Grün);// инициализация локальных переменных if (Rot && Grün) return 0x0000FFFF;// желтый if (Rot && !Grün) return 0x000000FF;// красный if (!Rot && Grün)return 0x0000FF00;// зеленый if (!Rot && !Grün)return 0;// черный
Datum: Datei:Kapitel 2, C-Aktionen.19 SIMATIC HMI Siemens AG All rights reserved. Informations- und Trainings-Center Wissen für Automatisierung Образец решения упражнения: оператор выбора Задание 1: 8-разр. беззнаковыя переменная Meldung10: C-Aktion для Text статического текста: switch (GetTagByte(Meldung10)) { case 2: return TF10 ausgefallen; break; case 1: return TF10 Temp. zu hoch; break; case 0: return TF10 Temp. ok; break;} C-Aktion для Backgroun Color текста: switch (GetTagByte(Meldung10)) { case 2: return 0x0000FFFF; break; case 1: return 0x000000FF; break; case 0: return 0x0000FF00; break;} Задание Z1: Круг перемещается в прямоугольной области: новая переменная WinCC типа unsigned 8-bit value Intervall mit Anfangswert: 1 C-Aktion для X-Position круга: static int pos = 400; switch (GetTagByte(Intervall)) { case 1: pos = 400; break; case 2: pos = pos+10; if (pos>=600) SetTagByte(Intervall,3); break; case 3: pos = 600; break; case 4: pos = pos-10; if (pos=300) SetTagByte(Intervall,2); break; case 2: pos = 300; break; case 3: pos = pos-10; if (pos