Skip to main content

18. Makra

Ten rozdział opisuje składnię, metody programowania i użycie poleceń w makrach.

 

18.1.    Wprowadzenie

Makra udostępniają dodatkową funkcjonalność, której może potrzebować aplikacja. Pozwalają na korzystanie z zautomatyzowane sekwencji poleceń wykonywanych w czasie rzeczywistym.
Dodatkowo umożliwiają wykonywanie zadań takich jak złożone operacje skalowania, obsługi ciągów znaków i zdefiniowanie interakcje użytkownika z projektem. Ten rozdział opisuje składnię, użycie i metody programowania przy wykorzystaniu komend w makrach.

. 18-1

18.2.    Instrukcje dotyczące korzystania z edytora makr

Edytor makr udostępnia następujące funkcje:

l   Wyświetlanie numeru linii

l   Cofnij / Ponów

l   Wytnij / Kopiuj / Wklej

l   Zaznacz wszystko

l   Przełącz zaznaczenie/następne zaznaczenie/poprzednie zaznaczenie/usuń wszystkie zaznaczenia

l   Skomentuj/usuń komentarz

l   Ochrona -> Stosuj warunek wywołania

l   Wykonywanie cykliczne

l   Wykonaj jednokrotnie, po uruchomieniu panela

Poniżej opisano sposób korzystania z powyższych funkcji.

1.        Należy otworzyć edytor makr; po lewej stronie obszaru edycji będą widoczne numery linii.

image.png

2.        Kliknij prawym przyciskiem w obszarze edycji, aby otworzyć rozwijaną listę jak pokazano poniżej. Opcje niedostępne zaznaczone są kolorem szarym, co oznacza, że nie można używać ich w danej chwili. Na przykład należy zaznaczyć tekst, aby mieć możliwość kopiowania, w przeciwnym wypadku jest ona wyszarzona. Dostępne są również skróty klawiaturowe.

image.png

3.        Na pasku narzędzi dostępne są funkcje: cofnij, ponów, wytnij, kopiuj, wklej, przełącz zaznaczenie, następne zaznaczenie, poprzednie zaznaczenie, usuń wszystkie zaznaczenia.

image.png

4.        Można cofnąć każdą wprowadzoną funkcję. Funkcja ponów jest dostępna po użyciu funkcji cofnij. Aby wykonać opcję cofnij / ponów, kliknij prawym klawiszem myszy, aby wybrać opcję lub użyj skrótów klawiaturowych. (Cofnij: Ctrl+Z, Ponów: Ctrl+Y).

image.png

5.        Zaznacz słowo w edytorze, aby kopiować lub wyciąć. Po wykonaniu polecenia kopiuj lub wytnij włączona zostaje funkcja wklej.

image.png

6.       Użyj opcji zaznacz wszystko, aby zaznaczyć całą treść w obszarze edycji.

image.png

7.        Jeśli makro jest zbyt długie, użyj zaznaczeń do łatwej edycji i czytania kodu. Poniższe ilustracje przedstawią sposób działania.

l   Przesuń kursor na pozycję w obszarze edycji, gdzie chcesz umieścić zaznaczenie. Kliknij prawym przyciskiem myszy, wybierz polecenie Przełącz zaznaczenie. Pojawi się niebieski kwadrat, który przedstawia znacznik po lewej stronie obszaru edycji.

l   Jeśli w wskazanym miejscu istnieje już zaznaczenie, wybierz opcję przełącz zaznaczenie, aby je zamknąć.

l   Kliknij prawym przyciskiem myszy i wybierz następne zaznaczenie, kursor zostanie przeniesiony do miejsca, gdzie znajduje się następny znacznik. Wybór opcji poprzednie zaznaczenie spowoduje przesunięcie kursora do poprzedniego znacznika.

image.png

l   Opcja usuń wszystkie zaznaczenia spowoduje usunięcie wszystkich znaczników.

8.        Edytor Makr umożliwia zarysowanie (lub składanie) kodu. Opcja ta pozwana na ukrycie kodu makro, który należy do tego samego bloku i wyświetli je jak pokazano poniżej. Po lewej stronie obszaru edycji pojawi się schemat drzewa. Klikając w minus, można ukryć blok. Aby otworzyć blok należy kliknąć w znak plus.

image.png

9.       Aby rozwinąć wszystkie zwinięte kody można nacisnąć prawym przyciskiem i wybrać opcję rozwiń wszystkie zwinięcia.

image.png

10.     Fragment kodu zawarty pomiędzy następującymi słowami kluczowymi nazywane są "blokiem" kodu makr:

l   Blok kodu: sub – end sub

l   Pętle:

                  i.              for – next

                 ii.              while – wend

l   Wyrażenia logiczne:

                  i.              if – end if

l   Opcje wyboru: select case – end select

11.     Edytor makr nie jest oknem z wyłącznością. Pozwala na powrót z niego do ekranu głównego i edytowanie projektu przy otwartym oknie roboczym makra.

image.png

12.    Edytor makro pozwala na wykorzystanie funkcji znajdź i zamień.

image.png

13.     Gdy zaznaczone jest opcja wykonywanie cykliczne, makro jest  uruchomiane okresowo.

image.png

14.    Wybierz opcję w polu ochrona » stosuj warunek wywołania » ustawienia, aby wybrać jedno z następujących:

l   Wyłącz, gdy bit jest w stanie ON.

l   Wyłącz, gdy bit jest w stanie OFF.

image.png

image.png

15.    Jeśli wybrano opcję wykonaj jednokrotnie, po uruchomieniu panela, po włączeniu panela HMI makro wykona się jeden raz.

18.3.    Konfiguracja

W programie makro wykorzystujemy deklaracje. Zawierają się w nich stałe, zmienne i operacje. Umieszczane są one w określonym porządku, co pozwala na zdefiniowanie pożądanego wyjścia. Makro ma następującą strukturę:

image.png

W programie makro można zdefiniować tylko jeden główny program, która jest punktem wyjścia dla wykonania makra. Format to:

macro_command main()

Lokalne zmienne są używane w głównym programie marko lub w zdefiniowanym bloku funkcyjnym. Wartość tych zmiennych pozostaje ważna tylko w konkretnym bloku. Zmienne globalne są zadeklarowane przed dowolnymi blokami funkcyjnymi i są ważne dla wszystkich funkcji w makrze. Kiedy lokalne zmienne i zmienne globalne mają tę samą deklarację nazwy, tylko lokalne zmienne działają poprawnie.

Poniższy przykład przedstawia proste makro zawierające deklaracje zmiennych i wywołanie funkcji.

macro_command main()
     short pressure = 10                                                           //  zmienna lokalna
     SetData(pressure, "Allen-Bradley DF1", N7, 0, 1) //  wywołanie funkcji
end macro_command

18.4.    Składnia

18.4.1. Stałe i zmienne

18.4.1.1 Stałe

Stałe są wartościami stałymi i mogą być bezpośrednio zapisywane w instrukcjach. Dostępne są następujące formaty:

Typ Uwaga Przykład
Dziesiętne
345, -234, 0, 23456
Hexadecymalne Musi rozpoczynać się od przedrostka 0x 0x3b, 0xffff, 0x237
ASCII Pojedynczy znak musi być umieszczony w apostrofach, a ciąg znaków musi być umieszczony pomiędzy cudzysłowami ‘a’, "data", "name"
Dyskretne
prawda, fałsz

Poniżej przykład wykorzystania stałych:
macro_command main()
short A, B                //  A i B są zmiennymi
A = 1234
B = 0x12                  //  1234 i 0x12 są stałymi
end macro_command

18.4.1.2 Zmienne

Zmienne to nazwy reprezentujące wartości. Wartości można zmieniać, gdy zmienna jest modyfikowana przez instrukcje.

Zasady nazewnictwa dla zmiennych

l   Nazwa zmiennej musi zaczynać się od litery.

l   Niedozwolone są nazwy zamiennych dłuższe niż 32 znaki

l   Istnieją zarezerwowane słowa, które nie mogą być użyte, jako nazwy zmiennych.

Istnieje 8 różnych typów zmiennych, 5 dla danych ze znakiem oraz 3 typy dla zmiennych bez znaku:

Typ Opis Wartości
bool (boolean) 1 bit (dyskretna) 0, 1
char (character) 8 bits (bajt) +127 to -128
short (short integer) 16 bits (słowo) +32767 to -32768
int (integer) 32 bits (podwójne słowo) +2147483647to -2147483648
float (floating point) 32 bits (podwójne słowo)
unsigned char 8 bits (bajt) 0 to 255
unsigned short 16 bits (słowo) 0 to 65535
unsigned int 32 bits (podwójne słowo) 0 to 4,294,967,295

Deklaracja zmiennych

Zmienne muszą być zadeklarowane przed ich użyciem w programie makro. Aby zadeklarować zmienną, należy podać typ przed nazwą zmiennej.

Przykład:

int                            a

short                       b, przełącznik

float                        ciśnienie

unsigned short       c

Deklaracja tablicy

Makra obsługują tablice jednowymiarowe (z indeksem zerowy). Aby zadeklarować tablicę zmiennych, należy podać typ i nazwę zmiennej, a następnie liczbę zmiennych w tablicy w nawiasie "[]". Długość tablicy może wynosić od 1 do 4096. (Makra obsługują maksymalnie 4096 zmiennych w programie makro).

Przykład:

int                a[10]

short           b[20], przełącznik [30]

float            ciśnienie [15]

Najniższy indeks tablicy to 0, a najwyższy = rozmiar tablicy – 1

Przykład:

char data [100]                   //  rozmiar tablicy 100

W tym przypadku najniższy indeks to 0 a najwyższy to 99 (=100-1)

Inicjalizacja zmiennej  i tablicy

Istnieją dwa sposoby inicjowania zmiennych:

l   Przez deklarację za pomocą operatora przypisania (=)

Przykład:

        int a

        float b[3]

        a = 10

        b[0] = 1

l   Podczas deklarowania zmiennej

char a = ‘5’, b = 9

Deklaracja tablic jest szczególnym przypadkiem. Całą tablicę można zainicjować podczas deklaracji, zamykając oddzielone przecinkami wartości wewnątrz nawiasów klamrowych "{}". Przykład:

float data[4] = {11, 22, 33, 44}  //  wartość w indeksie[0] to 11, w indeksie[1] to 22….

18.4.2. Operatory

Operatory służą do określania sposobu obliczania wartości zmiennych.

Operator Opis Przykład
= Operator przypisania ciśnienie = 10
Operacja matematyczna Opis Przykład
+ Dodawanie A = B + C
- Odejmowanie A = B – C
* Mnożenie A = B * C
/ Dzielenie A = B / C
% Modulo (reszta z dzielenia) A = B % 5

Domyślnie uważa się, że liczby całkowite (1, 2,3..etc) mają typ danych całkowitych; dlatego też, gdy dzielenie odbywa się z udziałem dwóch liczb całkowitych, w których wynik powinien mieć punkt dziesiętny, część dziesiętna zostanie usunięta. Aby temu zapobiec, dodaj przecinek lub kropkę do wartości zmiennoprzecinkowej, 0. (1.0, 2.0, 3.0 ... itd.).

Przykład:

A = 3 / 2 = 1            »          3 i 2 są liczbami całkowitymi, dlatego wynik również jest liczą całkowitą.

B = 3 / 2.0 = 1.5      »          3 jest liczbą całkowitą 2.0  jest liczbą zmiennoprzecinkową, dlatego wynik jest również wartością zmiennoprzecinkową.

C = 3.0 / 2 = 1.5      »          3.0 jest liczbą zmiennoprzecinkową, 2 jest liczbą całkowitą, wynik jest również wartością zmiennoprzecinkową.

Operatory porównań Opis Przykład
< Mniejsze niż if A < 10 then B = 5
<= Mniejsze, bądź równe if A <= 10 then B = 5
> Większe niż if A > 10 then B = 5
>= Większe, bądź równe if A >= 10 then B = 5
== Równe if A == 10 then B = 5
<> Różne if A <> 10 then B = 5
Operacje logiczne Opis Przykład
and Logiczny AND if A < 10 and B > 5 then C = 10
or Logiczny OR if A >= 10 or B > 5 then C = 10
xor Logiczny Exclusive OR if f A xor 256 then B = 5
not Logiczny NOT if not A then B = 5

Operatory przesunięcia i operacje na bitach są używane do manipulowania bitami zmiennych całkowitych ze znakiem i bez znaku. Operatory te działają na bitach zaczynając od lewej do prawej strony..

Operacje przesunięcia Opis Przykład
<< Przesuwa bity z wskazanego słowa B  o określoną liczbę bitów (8) w lewą stronę i zapisuje do A A = B << 8
>> Przesuwa bity z wskazanego słowa B  o określoną liczbę bitów (8) w prawą stronę i zapisuje do A A = B << 8
Operatory bitowe Opis Przykład
& Operator bitowy AND A = B & 0xf
| Operator bitowy OR A = B | C
^ Operator bitowy XOR A = B | C
~ Kod uzupełnień do jedności A = ~B

Priorytety wszystkich operatorów

Priorytet wykonywania wszystkich jest następujący:

1.        Operacje w nawiasie są przeprowadzane najpierw

2.        Operacje arytmetyczne

3.        Operacje przesunięcia, lub operacje z operatorami bitowymi

4.       Porównania

5.       Logiczne operacje

6.       Przypisanie

Zarezerwowane słowa klucze

Następujące słowa kluczowe są zarezerwowane dla systemu. Te słowa nie mogą być użyte, jako zmienna, tablica lub nazwy funkcji.

+, -, *, /, %, >=, >, <=, <, <>, ==, and, or, xor, not, <<, >>,=, &, |, ^, ~

exit, macro_command, for, to, down, step, next, return, bool, short, int, char, float, void, if, then, else, break, continue, set, sub, end, while, wend, prawda, fałsz

SQRT, CUBERT, LOG, LOG10, SIN, COS, TAN, COT, SEC, CSC, ASIN, ACOS, ATAN, BIN2BCD, BCD2BIN, DEC2ASCII, FLOAT2ASCII, HEX2ASCII, ASCII2DEC, ASCII2FLOAT, ASCII2HEX, FILL, RAND, DELAY, SWAPB, SWAPW, LOBYTE, HIBYTE, LOWORD, HIWORD, GETBIT, SETBITON, SETBITOFF, INVBIT, ADDSUM, XORSUM, CRC, INPORT, OUTPORT, POW, GetCnvTagArrayIndex, GetError, GetData, GetDataEx, SetData, SetDataEx, SetRTS, GetCTS, Beep, SYNC_TRIG_MACRO, ASYNC_TRIG_MACRO, TRACE, FindDataSamplingDate, FindDataSamplingIndex, FindEventLogDate, FindEventLogIndex

StringGet, StringGetEx, StringSet, StringSetEx, StringCopy, StringMid, StringDecAsc2Bin, StringBin2DecAsc, StringDecAsc2Float, StringFloat2DecAsc, StringHexAsc2Bin, StringBin2HexAsc, StringLength, StringCat, StringCompare, StringCompareNoCase, StringFind, StringReverseFind, StringFindOneOf, StringIncluding, StringExcluding, StringToUpper, StringToLower, StringToReverse, StringTrimLeft, StringTrimRight, StringInsert, String2Unicode

. 18-9

18.5.    Wyrażenia

18.5.1. Definicja zmiennych

Definicja zmiennych i tablic - składnia jest następująca:

image.png

Określa zmienną o nazwie "nazwa" i typie "typ".

Przykład:

int A                        // definicja zmiennej integer o nazwie A

image.png

Określa tablicę o nazwie "nazwa" i rozmiarze określoną przez "stałą" i typu "typ"

Przykład:

int B[10]                  // definicja jednowymiarowej tablicy integer-ów B rozmiarze 10

 

18.5.2. Przypisania

Instrukcja przypisania używa operatora przypisania do przenoszenia danych z wyrażenia po prawej stronie operatora do zmiennej po jego lewej stronie. Wyrażenie to kombinacja zmiennych, stałych i operatorów, które pozwalają na uzyskania danej wartości.

image.png

Przykład

A = 2                                               gdzie do zmiennej A zostaje przypisana wartość 2

 

18.5.3. Pętle logiczne

Pętle logiczne wykonują akcje w zależności od warunku wyrażenia logicznego
Składnia wygląda następująco:

Format jednoliniowy

image.png

Przykład:

if a == 2 then

                               b = 1

else

                               b = 2

end if

Format blokowy

image.png

Przykład:

if a == 2 then

                               b = 1

else if a == 3 then

                               b = 2

else

                               b = 3

end if

Opis składni

if Musi być użyty do rozpoczęcia pętli
<Warunek> Wymagany. Jeśli jest spełniony zostaje wykonane wyrażenie
then Poprzedza instrukcje do wykonania, jeśli <Warunek> zostanie spełniony
[Wyrażenie] Jest opcjonalny w formacie blokowym, ale konieczny w formacie jednoliniowym, bez opcji użycia opcji else. Wyrażenie zostanie wykonana, gdy <Warunek> jest spełniony.
else if Opcjonalny. Instrukcja else if zostanie wykonana, gdy <Warunek-n> zostanie spełniony.
<Wyrażenie-n> Opcjonalny. Działa na tej samej zasadzie, co <Wyrażenie>
else Opcjonalny. Wyrażenie występujące po else zostanie wykonane, gdy <Warunek> i < Warunek -n> nie zostaną spełnione
end if Musi być użyty do zakończenia pętli.

18.5.4. Pętle wyboru

Pętla select-case może być używana na tej samej zasadzie jak użycie wielu instrukcji if-else i wykonywać wybrane akcje w zależności od wartości danej zmiennej. Po znalezieniu dopasowanej wartości wszystkie wyrażenia zostaną wykonane, dopóki nie zostanie spełniona instrukcja break. Składnia jest następująca:

Format bez domyślnego przypadku

image.png

Przykład:

                    Select Case A

                               Case 1

                                           b=1

                               break

                    end Select

Format z domyślnym przypadkiem (Case else)

image.png

Przykład:

                    Select Case A

                               Case 1

                                           b=1

                               break

                               Case else

                                           b=0

                               break

                    end Select

Wiele przypadków w tym samym bloku

image.png

Przykład:

                    Select Case A

                               Case 1

break

                               Case 2

                                           b=2

break

                               Case 3

                                           b=3

                               break

                    end Select

Opis składni

Select Case Musi być użyty do rozpoczęcia pętli
[zmienna] Musi być użyty do rozpoczęcia pętli
Case else Opcjonalny. Reprezentuje domyślny przypadek. Jeśli żaden z wcześniejszych przypadków nie zostanie spełniony, zostanie wykonane wyrażenie z domyślnego przypadku. Jeśli nie ma domyślnego przypadku i żaden inny przypadek nie zostanie spełniony program przejdzie bezpośrednio do końca pętli select-case
break Opcjonalny. Pętla będzie wykonywana, dopóki nie zostanie osiągnięte polecenie przerwania. Jeśli polecenie przerwania nie jest używane, program kontynuuje wykonywanie następnego wyrażanie, aż do osiągnięcia polecenia końcowego
break Musi być użyty do zakończenia pętli.

18.5.5. Pętle wielokrotne

Iteracyjne pętle i powtarzające zadania w zależności od stanu. Istnieją dwa rodzaje instrukcji iteracyjnych.

18.5.5.1. Pętla for-next

Pętla for-next jest uruchamiana dla określonej liczby iteracji. Zmienna jest używana, jako licznik wykonania pętli i sprawdzania warunków końcowych. Można ją wykorzystać w celu wykonywania stałej liczby pętli. Składnia jest następująca:

image.png
Or

image.png

Przykład:

                    for a = 0 to 10 step 2

                               b = a

                    next a

Opis składni

for Musi być użyty do rozpoczęcia pętli
[licznik] Wymagany. Wartość zmiennej jest wykorzystywana do porównania, czy pętla została wykonana daną ilość pętli
<wartość_startowa> Wymagany. Wartość początkowa licznika
to/down

Wymagany. Określa, czy wartość określona w polu <krok> zwiększa lub zmniejsza wartość licznika.

"to" zwiększa wartość licznika, a "down" zmniejsza wartość licznika o wartość kroku.
<wartość_końcowa> Wymagany. Wykorzystywany do porównywania z wartością licznika, jeśli jego wartość jest większa od wartości końcowej program makra wychodzi z pętli
step

Opcjonalny. Pozwala na określenie więcej niż jednej wartości kroku.

[krok] Opcjonalny. Krok służy do zwiększania / zmniejszania wartości licznika. Można go pominąć, wtedy wartość domyślna kroku wynosi 1.
[wyrażenie] Opcjonalny. Wyrażenie wykonywane, gdy warunek dla petli jest spełniony. Można używać zagnieżdżonych pętli.
next Wymagany
[licznik] Opcjonalny. Jest używany podczas zagnieżdżania kolejnych pętli.

18.5.5.2. Pętla while-wend

Pętla while-wend nie ma określonej liczby iteracji. Zmienna jest używana do sprawdzania warunków końcowych. Gdy warunek jest spełniony, pętla jest wykonywana, do momentu, gdy warunek przestanie być spełniany. Składnia jest następująca.

image.png

Przykład:

                    while a < 10

                               a = a + 10

                    wend

Opis składni

while Musi być użyty do rozpoczęcia pętli
continue Wymagany. Warunek sprawdzający. Gdy jest spełniony, pętla będzie wykonywana. Kiedy przestanie być spełniany, pętla zakończy wykonywanie.
return [wartość] Wyrażenie do wykonania, gdy warunek jest spełniony
wend Musi być użyty do zakończenia pętli

18.5.5.3. Inne komendy sterujące

break Używane w pętlach for-next i while-wend. Instrukcja powoduje natychmiastowe przejście do końca pętli iteracyjnej
continue Używane w pętlach for-next i while-wend. Kończy bieżącą iterację pętli i rozpoczyna następną
return Polecenie return wewnątrz głównego bloku makra powoduje zatrzymanie się wykonywanie programu w dowolnym miejscu. Program przechodzi natychmiast do końca głównego bloku

 

. 18-14

18.6.   Bloki funkcyjne

Bloki funkcyjne są wykorzystywane do redukcji powtarzających się fragmentów kodów. Muszą one być zdefiniowane przed wykorzystaniem w programie, obsługują każdy typ zmiennej i instrukcji. Blok funkcyjny można wywołać, umieszczając jego nazwę, a następnie parametry w nawiasach. Po wykonaniu bloku funkcyjnego zwraca on wartość do funkcji wywołującej, w której jest używana, jako wartość lub warunek. Nie jest wymagane, aby blok funkcyjny zwracał wartość. Parametry mogą być również pomijane w definicji funkcji funkcja nie musi pobierać żadnych parametrów od programu wywołującego blok. Składnia jest następująca:

Definicja funkcji z zwracaniem wartości

image.png

Przykład:

sub int Add(int x, int y)

                               int result

                               result = x +y

                               return result

                     end sub

 

                    macro_command main()

                               int a = 10, b = 20, sum

                               sum = Add(a, b)

                    end macro_command

lub:

sub int Add()

                               int result, x=10, y=20

                               result = x +y

                               return result

                     end sub

                    macro_command main()

                               int  sum

                               sum = Add()

                    end macro_command

Definicja funkcji bez zwracania wartości

image.png

Przykład:

sub Add(int x, int y)

                               int result

                               result = x +y

                     end sub

 

                    macro_command main()

                               int  a = 10, b = 20

                               Add(a, b)

                    end macro_command

lub:

sub Add()

                               int result, x=10, y=20

                               result = x +y

                     end sub

 

                    macro_command main()

                               Add()

                    end macro_command

Opis składni

sub Musi być użyty, jako rozpoczęcia bloku funkcyjnego
type Opcjonalny. Jest to typ danych zwracanych przez funkcję. Blok funkcyjny nie zawsze musi zwracać wartość
(parametry)

Opcjonalny. Jest to typ danych zwracanych przez funkcję. Blok funkcyjny nie zawsze musi zwracać wartość.

Na przykład: sub int Moja_funkcja (int x, int y). x i y będą liczbami całkowitymi przekazanymi do funkcji. Funkcję tą można wywołać na przykład: ret = Moja_funkcja (456, ciśnienie) gdzie "ciśnienie" musi być liczbą całkowitą zgodnie z definicją funkcji.

Należy zauważyć, że funkcja wywołująca może przekazywać zmienne do funkcji. Po wykonaniu tej funkcji wartości całkowite zostają przypisane do zmiennej "ret".

Deklaracja zmiennych lokalnych Zmienne, które są używane w bloku funkcyjnym, muszą być zadeklarowane jako pierwsze. Są to dodatkowe zmienne. W powyższym przykładzie x i y są dodatkowymi zmiennymi, z których można korzystać. Zmienne globalne są również dostępne w bloku funkcyjnym
[Wyrażenie] Funkcja, która ma zostać wykonana
[return [wartość]] Opcjonalny. Służy do zwracania wartości do instrukcji wywołującej. Wartość może być stałą lub zmienną. Zwrócenie wartości również kończy działanie bloku funkcyjnego. Blok funkcyjny nie musi zwracać wartości, ale gdy korzystamy z składni funkcji z zwracaniem wartości, wyrażenie to jest niezbędne.
end sub Wykorzystywany do zakończenia bloku funkcyjnego.

 

. 18-19

18.7.   Zaimplementowane bloki funkcyjne

EasyBuilder Pro ma wiele wbudowanych funkcji, które można wykorzystać w programie makra.

18.7.1. Funkcje matematyczne

image.pngimage.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

18.7.2. Konwersja formatu danych

 

 

 

 

 

 

 

 

. 18-22

18.8.   Jak utworzyć i wywołać program makro.

18-81

18.9.   Funkcje makro zdefiniowane przez użytkownika. 18-85

18.10.   Uwagi dotyczące korzystania z makr 18-99

18.11.   Używanie Free protokołu do sterowania urządzeniem.. 18-99

18.12.   Komunikaty o błędzie kompilacji 18-104

18.13.   Przykładowe programy makro. 18-110

18.14.   Funkcja TRACE programu makro. 18-115

18.15.   Przykłady operacji na ciągach znaków String. 18-119

18.16.   Zabezpieczenie programu marko hasłem   18-127