background image

Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

Programowanie zaawansowane 

Informacje wst

ę

pne: 

BLOKI DZIAŁAŃ NA BITACH 

W sterownikach GE Fanuc dost

ę

pne s

ą

 nast

ę

puj

ą

ce bloki do działa

ń

 na bitach: 

 

AND - koniunkcja słów bitowych, 

 

OR - alternatywa słów bitowych, 

 

XOR - ró

Ŝ

nica symetryczna słów bitowych, 

 

NOT - negacja słowa bitowego, 

 

SHIFTL - przesuni

ę

cie bitów o 1 pozycj

ę

 w lewo, 

 

SHIFTR - przesuni

ę

cie bitów o 1 pozycj

ę

 w prawo, 

 

ROL - przesuni

ę

cie bitów o 1 pozycj

ę

 w lewo w obiegu zamkni

ę

tym, 

 

ROR - przesuni

ę

cie bitów o 1 pozycj

ę

 w prawo w obiegu zamkni

ę

tym, 

 

BIT_TST - testowanie warto

ś

ci bitu w okre

ś

lonym słowie, 

 

BIT_SET - ustawianie bitu w okre

ś

lonym słowie, 

 

BIT_CLR - zerowanie bitu w okre

ś

lonym słowie, 

 

BIT_POS - testowanie na której pozycji bitowej w danym słowie wyst

ę

puje 1, 

 

BIT_SEQ – kr

ąŜą

ca jedynka, 

 

MASK_COMP – porównanie z maskowaniem. 

Blok funkcyjny  Typ argumentów 

Opis 

 

IN1: WORD 

IN2: WORD 

Q: WORD 

Iloczyn logiczny 
 
Q:= IN1 AND IN2 

 

IN1: WORD 

IN2: WORD 

Q: WORD 

Suma logiczna 
 
Q
:= IN1 OR IN2 

 

IN1: WORD 

IN2: WORD 

Q: WORD 

Alternatywa wył

ą

czaj

ą

ca 

 
Q
:= IN1 XOR IN2 

 

background image

Programowanie zaawansowane 

 Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN1 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

IN2 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

ok 

• 

 

 

 

 

 

 

 

 

 

 

• 

 

• 

• 

• 

• 

•! 

• 

• 

• 

• 

 

 

 •  Dozwolony typ parametru. 
 !  Mo

Ŝ

na stosowa

ć

 wył

ą

cznie zmienne systemowe typu %SA, %SB i %SC. Nie mo

Ŝ

na korzysta

ć

 

ze zmiennych typu %S. 

Blok funkcyjny  Typ argumentów 

Opis 

 

IN: WORD 

Q: WORD 

Negacja 
 
Q
:= NOT IN 

 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN1 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

ok 

• 

 

 

 

 

 

 

 

 

 

 

• 

 

• 

• 

• 

• 

•! 

• 

• 

• 

• 

 

 

 •  Dozwolony typ parametru. 
 !  Mo

Ŝ

na stosowa

ć

 wył

ą

cznie zmienne systemowe typu %SA, %SB i %SC. Nie mo

Ŝ

na korzysta

ć

 ze 

zmiennych typu %S. 
 

Blok funkcyjny 

Typ argumentów 

Opis 

  

 

IN: WORD 

N: INT 

Q: WORD 

length: 1-256 

Powoduje rotacj

ę

 o N bitów (ROL w lewo, ROR 

w prawo) ci

ą

gu bitów, którego pocz

ą

tek okre

ś

la IN 

i składa si

ę

 z tylu WORD, ile wynosi length. Wynik 

po rotacji przechowywany jest w obszarze, 
którego pocz

ą

tek okre

ś

la Q

 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

ok 

• 

 

 

 

 

 

 

 

 

 

 

• 

 

• 

• 

• 

• 

•! 

• 

• 

• 

• 

 

 

 •  Dozwolony typ parametru. 
 ! Mo

Ŝ

na stosowa

ć

 wył

ą

cznie zmienne systemowe typu %SA, %SB i %SC. Nie mo

Ŝ

na korzysta

ć

 ze 

zmiennych typu %S. 
 

Blok funkcyjny 

Typ argumentów 

Opis 

  

 

IN: WORD 

N: INT 

B1: BOOL 

B2: BOOL 

Q: WORD 

length: 1-256 

Powoduje przesuni

ę

cie o N bitów (SHIFTL w lewo, 

SHIFTR w prawo) ci

ą

gu bitów, którego pocz

ą

tek 

okre

ś

la IN i składa si

ę

 z tylu WORD, ile wynosi 

length. Wynik po przesuni

ę

ciu przechowywany jest 

w obszarze, którego pocz

ą

tek okre

ś

la QB1 – bit 

wsuwany, B2 – ostatnio wysuni

ę

ty bit. 

 

background image

Programowanie zaawansowane 

Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

B1 

• 

 

 

 

 

 

 

 

 

 

 

 

B2 

• 

 

 

 

 

 

 

 

 

 

 

• 

 

• 

• 

• 

• 

•! 

• 

• 

• 

• 

 

 

 •  Dozwolony typ parametru. 
 ! Mo

Ŝ

na stosowa

ć

 wył

ą

cznie zmienne systemowe typu %SA, %SB i %SC. Nie mo

Ŝ

na korzysta

ć

 ze 

zmiennych typu %S. 

Blok funkcyjny 

Typ argumentów 

Opis 

  

 

IN: WORD 

BIT: INT 

length: 1-256 

BITSET ustawia, BITCLR zeruje dokładnie jeden bit 
o numerze BIT w ci

ą

gu bitów, którego pocz

ą

tek 

okre

ś

la IN i składa si

ę

 z tylu WORD, ile wynosi length 

(bity s

ą

 numerowane od 1). 

 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN 

 

• 

• 

• 

• 

• 

• 

• 

• 

 

 

BIT 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

ok 

• 

 

 

 

 

 

 

 

 

 

 

• 

 •  Dozwolony typ parametru. 
 ! Mo

Ŝ

na stosowa

ć

 wył

ą

cznie zmienne systemowe typu %SA, %SB i %SC. Nie mo

Ŝ

na korzysta

ć

 ze 

zmiennych typu %S. 

Blok funkcyjny 

Typ argumentów 

Opis 

 

IN: WORD 

BIT: INT 

Q: BOOL 

length: 1-256 

Testuje stan bitu o numerze BIT w ci

ą

gu bitów, 

którego pocz

ą

tek okre

ś

la IN i składa si

ę

 z tylu 

WORD, ile wynosi length
Stan testowanego bitu podawany jest na Q

 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

 

BIT 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

• 

 

 

 

 

 

 

 

 

 

 

• 

 •  Dozwolony typ parametru. 

Blok funkcyjny 

Typ argumentów 

Opis 

 

IN: WORD 

POS: INT 

length: 1-256 

Przeszukuje ci

ą

g bitów, którego pocz

ą

tek 

okre

ś

la IN i składa si

ę

 z tylu WORD, ile wynosi 

length, w celu znalezienia pierwszej jedynki. 
Numer pierwszego niezerowego bitu 
umieszcza w POS (bity s

ą

 numerowane od 1). 

 

background image

Programowanie zaawansowane 

 Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

 

Parametr 

Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała  Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

 

POS 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

 

 

ok 

• 

 

 

 

 

 

 

 

 

 

 

• 

 •  Dozwolony typ parametru. 

Blok funkcyjny 

Typ argumentów 

Opis 

 

R: BOOL 
DIR: BOOL 
N: INT 
ST: BYTE 
length: 1-256 
address: 3 WORD 

Zbocze narastaj

ą

ce na wej

ś

ciu Enable 

powoduje przesuni

ę

cie jedynki w ci

ą

gu bitów, 

którego pocz

ą

tek okre

ś

la ST i składa si

ę

 z tylu 

bitów, ile wynosi length

DIR - kierunek przesuni

ę

cia. 

R=1 zeruje obszar okre

ś

lony przez ST i 

length oraz ustawia jedynk

ę

 na bicie o 

numerze okre

ś

lonym przez N. Dopóki 

R=1, Enable nie reaguje na zbocza 
narastaj

ą

ce. 

 

Parametr  Sygnał 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

address 

 

 

 

 

 

 

 

• 

 

 

 

 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

• 

 

 

 

 

 

 

 

 

 

 

 

DIR 

• 

 

 

 

 

 

 

 

 

 

 

 

STEP 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

• 

ST 

 

• 

• 

• 

• 

•! 

• 

• 

• 

• 

 

• 

ok 

• 

 

 

 

 

 

 

 

 

 

 

• 

•  

Dozwolony typ parametru. 

! Mo

Ŝ

na stosowa

ć

 wył

ą

cznie zmienne systemowe typu %SA, %SB i %SC. Nie mo

Ŝ

na korzysta

ć

 ze zmiennych 

typu %S. 

 

Blok funkcyjny 

Typ argumentów 

Opis 

  

 

IN1: WORD lub DWORD 

IN2: WORD lub DWORD 

M: WORD lub DWORD 

BIT: INT 

MC: BOOL 

Q: WORD lub DWORD 

BN: INT 

length: 1-2048 

Porównuje dwa ci

ą

gi bitów, których pocz

ą

tek 

okre

ś

la IN1 i IN2 i składaj

ą

 si

ę

 z tylu WORD 

lub DWORD, ile wynosi length. Porównywanie 
odbywa si

ę

 z mask

ą

 M, tzn. sprawdza tylko te 

bity, które maska ma wyzerowane. 
BIT – nr bitu, od którego zaczyna porównywa

ć

 

(bity s

ą

 numerowane od 0). 

MC =1 – znalazł ró

Ŝ

nic

ę

Q – wynik porównania 
BN – nr bitu, na którym wyst

ą

piła ró

Ŝ

nica (bity 

s

ą

 numerowane od 1) 

 

background image

Programowanie zaawansowane 

Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

 

Parametr  Sygnał 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ 

Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

IN1 

 

 

 

 

 

 

 

• 

• 

• 

 

 

IN2 

 

 

 

 

 

 

 

• 

• 

• 

 

 

 

 

 

 

 

 

• 

• 

• 

 

 

BIT 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

LEN 

 

 

 

 

 

 

 

 

 

 

 

 

MC 

• 

 

 

 

 

 

 

 

 

 

 

• 

 

 

 

 

 

 

• 

• 

• 

 

 

BN 

 

• 

• 

• 

• 

• 

• 

• 

• 

• 

 

 

 •  Typ mo

Ŝ

e by

ć

 wykorzystany jako dany parametr bloku funkcyjnego. 

  Dopuszczalne  jest  stosowanie  wył

ą

cznie  danych  typu  WORD,  nie  mo

Ŝ

na  stosowa

ć

  zmiennych  typu 

DWORD. 

 !  Mo

Ŝ

na  stosowa

ć

  wył

ą

cznie  zmienne  systemowe  typu  %SA,  %SB  i  %SC.  Nie  mo

Ŝ

na  korzysta

ć

  ze 

zmiennych typu %S. 

  Maksymalna warto

ść

 stałej mo

Ŝ

e wynosi

ć

 4095 dla danych typu WORD i 2047 dla danych typu DWORD. 

Przykład 1. 

 

Gdy marker %M00050=1 program steruj

ą

cy ma zerowa

ć

 nast

ę

puj

ą

cy obszar pami

ę

ci: %M00001÷%M00016, 

%M00030÷%M00035 oraz ustawia

ć

 same jedynki w obszarze pami

ę

ci %M00020 

÷

 %M00026. 

Rozwi

ą

zanie I (z wykorzystaniem bloków z grupy Data Move)

 

Zmienne M00030 i M00020 nale

Ŝ

y zadeklarowa

ć

 jako typu BOOL. 

 

 

Rozwi

ą

zanie II (z wykorzystaniem bloków z grupy Bit Operations)

 

 

Przykład 2. 

 

Program  ma  sprawdza

ć

  ósmy  i  siódmy  bit  rejestru  o  nazwie  STATUS.  Je

ś

li  oba  s

ą

  jedynkami,  to  ustawia 

jedynk

ę

  na  szesnastym  bicie  rejestru  o  nazwie  PARAMETR,  w  przeciwnym  przypadku  16-ty  bit  rejestru 

PARAMETR zeruje. Pozostałe bity rejestru PARAMETR pozostaj

ą

 bez zmian. 

background image

Programowanie zaawansowane 

 Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

Rozwi

ą

zanie 

 

DZIAŁANIA NA TABLICACH 

Bloki do wykonywania operacji na tablicach danych dzi

ę

ki indeksacji znacznie upraszczaj

ą

 program: 

 

SEARCH_EQ - przeszukiwanie tablicy w celu znalezienia warto

ś

ci równej warto

ś

ci zadanej, 

 

SEARCH _NE - przeszukiwanie tablicy w celu znalezienia warto

ś

ci ró

Ŝ

nej od warto

ś

ci zadanej, 

 

SEARCH _GT - przeszukiwanie tablicy w celu znalezienia warto

ś

ci wi

ę

kszej od warto

ś

ci zadanej, 

 

SEARCH _GE - przeszukiwanie tablicy w celu znalezienia warto

ś

ci wi

ę

kszej lub równej warto

ś

ci zadanej, 

 

SEARCH _LT - przeszukiwanie tablicy w celu znalezienia warto

ś

ci mniejszej od warto

ś

ci zadanej, 

 

SEARCH _LE - przeszukiwanie tablicy w celu znalezienia warto

ś

ci mniejszej lub równej warto

ś

ci zadanej 

background image

Programowanie zaawansowane 

Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

 

Blok funkcyjny 

Typ argumentów 

Opis 

  

  

  

 

 

SR: INT, DINT, WORD, BYTE lub BOOL 

SNX: UINT 

DNX: UINT 

N: UINT 

DS: INT, DINT, WORD, BYTE lub BOOL 

length: 32767 

Kopiowanie 

Kopiuje N elementów 
z tablicy 

ź

ródłowej 

zdefiniowanej przez SR 
length pocz

ą

wszy od 

elementu o numerze SNX 
do tablicy przeznaczenia 
zdefiniowanej przez DS 
length pocz

ą

wszy od 

elementu o numerze DNX
Elementami tablic s

ą

 INT, 

DINT, WORD, BYTE lub 
BOOL liczone od 1. 

 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

SR 

 

 

 

 

 

 

• 

• 

• 

 

 

SNX 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

DNX 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

ok 

• 

 

 

 

 

 

 

 

 

 

 

• 

DS 

 

 

 

 

 

 

• 

• 

• 

 

 

 •  Dozwolony typ parametru. W funkcji ARRAY_MOVE_BOOL warto

ś

ci zmiennych dyskretnych %I, %Q, 

%M i %T nie musz

ą

 by

ć

 podawane z uwzgl

ę

dnieniem podziału na bajty. 

  Mo

Ŝ

e by

ć

 wykorzystany wył

ą

cznie jako parametr do operacji na danych typu INT, BIT, BYTE lub WORD. 

Nie mo

Ŝ

na go wykorzystywa

ć

 w przypadku operacji na danych typu DINT. 

  Mo

Ŝ

e by

ć

 wykorzystany wył

ą

cznie jako parametr do operacji na danych typu BIT, BYTE lub WORD. 

Nie mo

Ŝ

na go wykorzystywa

ć

 w przypadku operacji na danych typu INT lub DINT. 

 !  Mo

Ŝ

na stosowa

ć

 wył

ą

cznie zmienne systemowe typu %SA, %SB i %SC. Nie mo

Ŝ

na korzysta

ć

 

ze zmiennych typu %S. 

 

Blok funkcyjny 

Typ argumentów 

Opis 

  

  

  

 

AR: INT 

INX: UINT 

ONX: UINT 

IN: INT 

FD: BOOL 

length: 32767 

Przeszukuje tablic

ę

 zdefiniowan

ą

 przez 

AR i length pocz

ą

wszy od elementu 

INX w celu znalezienia elementów 
równych wzorcowi IN. Je

Ŝ

eli wynik 

przeszukiwania b

ę

dzie pozytywny, 

to D=1 i ONX - numer znalezionego 
elementu tablicy. Elementami tablicy s

ą

 

INT, DINT, WORD lub BYTE. INX jest 
liczone od 0, ONX jest liczone od 1. 

background image

Programowanie zaawansowane 

 Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

  

  

  

 

AR: INT 

INX: UINT 

ONX: UINT 

IN: INT 

FD: BOOL 

length: 32767 

Przeszukuje tablic

ę

 zdefiniowan

ą

 przez 

AR i length pocz

ą

wszy od elementu 

INX w celu znalezienia elementów 

Ŝ

nych od wzorca IN. Je

Ŝ

eli wynik 

przeszukiwania b

ę

dzie pozytywny, 

to D=1 i ONX - numer znalezionego 
elementu tablicy. Elementami tablicy s

ą

 

INT, DINT, WORD lub BYTE. INX jest 
liczone od 0, ONX jest liczone od 1. 

  

  

  

 

AR: INT 

INX: UINT 

ONX: UINT 

IN: INT 

FD: BOOL 

length: 32767 

Przeszukuje tablic

ę

 zdefiniowan

ą

 przez 

AR i length pocz

ą

wszy od elementu 

INX w celu znalezienia elementów 
wi

ę

kszych od wzorca IN. Je

Ŝ

eli wynik 

przeszukiwania b

ę

dzie pozytywny, 

to D=1 i ONX - numer znalezionego 
elementu tablicy. Elementami tablicy s

ą

 

INT, DINT, WORD lub BYTE. INX jest 
liczone od 0, ONX jest liczone od 1. 

  

  

  

 

AR: INT 

INX: UINT 

ONX: UINT 

IN: INT 

FD: BOOL 

length: 32767 

Przeszukuje tablic

ę

 zdefiniowan

ą

 przez 

AR i length pocz

ą

wszy od elementu 

INX w celu znalezienia elementów 
wi

ę

kszych lub równych wzorcowi IN

Je

Ŝ

eli wynik przeszukiwania b

ę

dzie 

pozytywny, to FD=1 i ONX - numer 
znalezionego elementu tablicy. 
Elementami tablicy s

ą

 INT, DINT, 

WORD lub BYTE. INX jest liczone 
od 0, ONX jest liczone od 1. 

  

  

  

 

AR: INT 

INX: UINT 

ONX: UINT 

IN: INT 

FD: BOOL 

length: 32767 

Przeszukuje tablic

ę

 zdefiniowan

ą

 przez 

AR i length pocz

ą

wszy od elementu 

INX w celu znalezienia elementów 
mniejszych od wzorca IN. Je

Ŝ

eli wynik 

przeszukiwania b

ę

dzie pozytywny, 

to D=1 i ONX - numer znalezionego 
elementu tablicy. Elementami tablicy s

ą

 

INT, DINT, WORD lub BYTE. INX jest 
liczone od 0, ONX jest liczone od 1. 

  

  

  

 

AR: INT 

INX: UINT 

ONX: UINT 

IN: INT 

FD: BOOL 

length: 32767 

Przeszukuje tablic

ę

 zdefiniowan

ą

 przez 

AR i length pocz

ą

wszy od elementu 

INX w celu znalezienia elementów 
mniejszych lub równych wzorcowi IN
Je

Ŝ

eli wynik przeszukiwania b

ę

dzie 

pozytywny, to FD=1 i ONX - numer 
znalezionego elementu tablicy. 
Elementami tablicy s

ą

 INT, DINT, 

WORD lub BYTE. INX jest liczone 
od 0, ONX jest liczone od 1. 

 

Parametr  Przepływ 

%I 

%Q 

%M 

%T 

%S 

%G 

%R 

%AI 

%AQ  Stała 

Brak 

enable 

• 

 

 

 

 

 

 

 

 

 

 

 

AR 

 

 

 

 

 

 

 

• 

• 

• 

 

 

INX 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

• 

 

IN 

 

 

 

 

 

 

 

• 

• 

• 

• 

 

ONX 

 

• 

• 

• 

• 

 

• 

• 

• 

• 

 

 

FD 

• 

 

 

 

 

 

 

 

 

 

 

• 

•   Dozwolony typ parametru. 

  Mo

Ŝ

e by

ć

 wykorzystany wył

ą

cznie jako parametr do operacji na danych typu INT, BYTE lub WORD. Nie 

mo

Ŝ

na go wykorzystywa

ć

 w przypadku operacji na danych typu DINT. 

  Mo

Ŝ

e by

ć

 wykorzystany wył

ą

cznie jako parametr do operacji na danych typu BYTE lub WORD. Nie mo

Ŝ

na 

go wykorzystywa

ć

 w przypadku operacji na danych typu INT lub DINT. 

background image

Programowanie zaawansowane 

Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

Przykład 3. 

 

Nale

Ŝ

y  skopiowa

ć

  zawarto

ść

  rejestrów  %R00002÷%R00006  do  rejestrów  %R00044÷%R00048.  Sygnał 

dopływaj

ą

cy  do  %I00001  powinien  uruchomi

ć

  procedur

ę

  kopiowania,  brak  sygnału  na  %I00001  powinien 

spowodowa

ć

 wyzerowanie tablicy docelowej. 

Rozwi

ą

zanie: 

 

 
Do  wyzerowania  obszaru  %R00041÷%R00050  słu

Ŝ

y  blok  BLK_CLR_WORD.  Tablica 

ź

ródłowa  zajmuje 

obszar  od  %R00001  do  %R00010,  tablica  docelowa,  zajmuje  obszar  od  %R00041  do  %R00050.  Blok 
ARRAY_MOVE_INT  kopiuje  5  elementów  z tablicy 

ź

ródłowej  pocz

ą

wszy  od  elementu  nr  2  do  tablicy 

docelowej, umieszczaj

ą

c je pocz

ą

wszy od elementu nr 4. Poni

Ŝ

szy rysunek ilustruje zasad

ę

 kopiowania. 

 

 

R1 

N=5 

Tablica 

ź

ródłowa 

Tablica docelowa 

SNX=2 

DNX=4 

Length=10 

R2 

R3 

R4 

R5 

R6 

R7 

R8 

R9 

R10 

R41 

R42 

R43 

R44 

R45 

R46 

R47 

R48 

R49 

R50 

 

Przykład 4. 

 

Program ma  sprawdza

ć

,  czy  na  którym

ś

  z  kanałów  16-to  kanałowego  modułu  wej

ść

  analogowych  wyst

ą

piło 

przekroczenie  górne  o  warto

ś

ci  10000.  Je

Ŝ

eli  jest  przekroczenie,  to  program  ma  wł

ą

czy

ć

  wyj

ś

cie  o nazwie 

BUCZEK  oraz  wskaza

ć

  w rejestrze  o  nazwie  NR_KAN  numer  pierwszego  kanału,  na  którym  wyst

ą

piło 

przekroczenie. 

Rozwi

ą

zanie: 

Do  przeszukiwania  tablicy  w  celu  znalezienia  elementów  wi

ę

kszych  lub  równych  wzorcowi  słu

Ŝ

y  funkcja 

SEARCH_GE_INT. Aby był przeszukiwany obszar od %AI0001 do %AI00016 nale

Ŝ

y ustawi

ć

 parametr length 

na  warto

ść

  16.  Je

Ŝ

eli  ma  by

ć

  przeszukiwana  cała  tablica,  nale

Ŝ

y  poda

ć

  wej

ś

ciowy  parametr  INX=0.  Gdyby 

interesowało nas przeszukiwanie tablicy nie od elementu z indeksem 0 lecz dalszym, to nale

Ŝ

y poda

ć

 offset 

w wej

ś

ciowym  parametrze  INX  (mo

Ŝ

na  to  wykorzysta

ć

  do  poszukiwania  kolejnych  wyst

ą

pie

ń

  wzorca). 

Wyj

ś

ciowy  parametr  ONX  okre

ś

la  miejsce,  gdzie  zostanie  umieszczony  indeks  elementu  przeszukiwanej 

tablicy, który jest zgodny z wzorcem. Sygnał FD=1 sygnalizuje pozytywny wynik przeszukiwania. 

background image

Programowanie zaawansowane 

10 

 Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

 

 

FUNKCJE STERUJĄCE 

Do funkcji steruj

ą

cych nale

Ŝą

 nast

ę

puj

ą

ce bloki: 

 

DO_IO - natychmiastowe uaktualnienie stanu wej

ść

/wyj

ść

 

PID_ISA - regulator PID z algorytmem standardowym, 

 

PID_IND - regulator PID z algorytmem o niezale

Ŝ

nych wyrazach, 

 

SVC_REQ - uruchomienie specjalnych funkcji sterownika. 

 

Blok funkcyjny 

Argument

 

Opis 

FNC: 1 

Odczyt/zmiana trybu pracy pracy sterownika (Normal, Const Sweep

FNC: 2

 

Odczyt ustawie

ń

 p

ę

tli (Programmer Window, Communication Window, 

Background Window) 

FNC: 3 

Zmiana trybu Programmer Window 

FNC: 4 

Zmiana trybu Communication Window 

FNC: 6 

Odczyt/zmiana liczby słów sumy kontrolnej 

FNC: 7 

Odczyt/zmiana wskaza

ń

 zegara czasu rzeczywistego 

FNC: 8

 

Restart Watchdoga 

FNC: 9 

Odczyt czasu, jaki upłyn

ą

ł od pocz

ą

tku p

ę

tli 

FNC: 10 

Odczyt PLC Target Name 

FNC: 11 

Odczyt SNP ID 

FNC: 12 

Odczyt stanu Run 

FNC: 13

 

Stop PLC 

FNC: 14 

Zerowanie Fault Table 

FNC: 15 

Odczyt ostatniego bł

ę

du z tablicy bł

ę

dów 

FNC: 16

 

Odczyt czasu, jaki upłyn

ą

ł od zał

ą

czenia sterownika 

FNC: 18 

Sprawdzenie, czy s

ą

 ustawione wymuszenia 

FNC: 23 

Odczyt sumy kontrolnej 

FNC: 26/30 

Porównanie konfiguracji sprz

ę

towej z konfiguracj

ą

 w RAM i generowanie 

ę

dów 

 

FNC: 29 

Odczyt czasu, jaki upłyn

ą

ł od wył

ą

czenia sterownika 

 

background image

Programowanie zaawansowane 

Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

11 

SVC_REQ #7 – odczyt/zmiana wskaza

ń

 zegara czasu rzeczywistego 

PARM 

0=odczyt bie

Ŝą

cego czasu i daty 

1=zapis nowego czasu i daty 

PARM +1 

1=kod BCD 
3=kod ASCII 

PARM +2 do ko

ń

ca bloku parametrów   

Odczyt daty i czasu w formacie BCD (niedziela 3 lipca 1988, godz. 14:45:30) 

 

Bajt wy

Ŝ

szy 

Bajt ni

Ŝ

szy 

Bajt wy

Ŝ

szy 

Bajt ni

Ŝ

szy 

PARM 

1=zapis lub 0=odczyt 

PARM +1 

1=kod BCD 

PARM +2 

miesi

ą

rok 

07 

88 

PARM +3 

godziny 

dzie

ń

 miesi

ą

ca 

14 

03 

PARM +4 

sekundy 

minuty 

30 

45 

PARM +5 

(puste pola) 

dzie

ń

 tygodnia 

00 

01 

Odczyt daty i czasu w formacie ASCII (poniedziałek 2 pa

ź

dziernika 1989, godz. 23:13:00)

 

Bajt wy

Ŝ

szy 

Bajt ni

Ŝ

szy 

Bajt wy

Ŝ

szy 

Bajt ni

Ŝ

szy 

PARM 

1=zapis lub 0=odczyt 

PARM +1 

3=ASCII 

PARM +2 

Rok 

Rok 

39 

38 

PARM +3 

Miesi

ą

(spacja) 

31 

20 

PARM +4 

(spacja) 

Miesi

ą

20 

30 

PARM +5 

Dzie

ń

 miesi

ą

ca 

Dzie

ń

 miesi

ą

ca 

32 

30 

PARM +6 

Godziny 

(spacja) 

32 

20 

PARM +7 

Godziny 

3A 

33 

PARM +8 

Minuty 

Minuty 

33 

31 

PARM +9 

Sekundy 

30 

3A 

PARM +10  (spacja) 

Sekundy 

20 

30 

PARM +11  Dzie

ń

 tygodnia 

Dzie

ń

 tygodnia 

32 

30 

Przykład 5. 

 

Napisa

ć

  program  do  obsługi  zegara  czasu  rzeczywistego  w  sterowniku.  Bie

Ŝą

ce  wskazania  zegara  maj

ą

 

po odczytaniu  znale

źć

  si

ę

  w  rejestrach  %R00003÷%R00006.  Rejestry  %R00003÷%R00005  maj

ą

  tak

Ŝ

umo

Ŝ

liwia

ć

  wprowadzanie  do  sterownika  nowych  ustawie

ń

  zegara.  Odczyt  zegara  ma  si

ę

  odbywa

ć

  raz  na 

sekund

ę

.  Sygnał  dwustanowy  ZAPIS  okre

ś

la,  czy  jest  wykonywany  odczyt,  czy  zapis  nowych  ustawie

ń

 

zegara. 

ZAPIS = 0 

odczyt zegara, 

ZAPIS = 1 

mo

Ŝ

liwo

ść

 wprowadzania nowych ustawie

ń

 zegara. 

Rozwi

ą

zanie 

Skorzystano  z  bloku  funkcyjnego  SVC_REQ  o  numerze  funkcji  FNC=7.  Parametrami  tego  bloku  s

ą

  rejestry 

pocz

ą

wszy  od  R00001.  Wprowadzenie  do  R00001  warto

ś

ci  0  powoduje  odczyt  zegara,  wprowadzenie 

warto

ś

ci  1  powoduje  wej

ś

cie  w  tryb  zapisywania.  Zapis  nowych  ustawie

ń

  do  zegara  czasu  rzeczywistego 

odbywa  si

ę

  przy  zmianie  stanu  sygnału  ZAPIS  z  jedynki  na  0.  Ustawienia  zegara  s

ą

  odczytywane 

(i wprowadzane) w nast

ę

puj

ą

cy sposób: 

rejestr %R00003 = miesi

ą

c i rok (w kodzie BCD), 

rejestr %R00004 = godzina i dzie

ń

 (w kodzie BCD), 

rejestr %R00005 = sekunda i minuta (w kodzie BCD), 
rejestr %R00006 = numer dnia tygodnia (tylko odczyt). 

 

background image

Programowanie zaawansowane 

12 

 Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

 

Przykład 6. 

 

Po 15 s od momentu wykrycia braku modułu wej

ść

/wyj

ść

 sterownik ma si

ę

 zatrzyma

ć

 (przej

ść

 w stan Stop). 

Rozwi

ą

zanie 

Do  rozwi

ą

zania  zadania  posłu

Ŝ

ono  si

ę

  zmienn

ą

  systemow

ą

  #LOS_IOM,  która  zostaje  ustawiona  na  1,  gdy 

procesor nie mo

Ŝ

e skomunikowa

ć

 si

ę

 z modułem wej

ść

/wyj

ść

. Programowe przej

ś

cie sterownika w stan Stop 

zrealizowano przy pomocy bloku SVC_REQ o numerze FNC=13. 

 

background image

Programowanie zaawansowane 

Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

13 

Program 

ć

wiczenia: 

Zad. 1. 

Napisa

ć

 program, w którym na wyj

ś

ciach Q00001 

÷

 Q00016 co sekund

ę

 b

ę

d

ą

 pojawia

ć

 si

ę

 stany: 

Q00016   

 

 

 

Q00001 

0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0  
0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 1  
0 0 0 0 0 0 0 0   0 0 0 0 0 0 1 1  
0 0 0 0 0 0 0 0   0 0 0 0 0 1 1 1  

.  
.  

0 1 1 1 1 1 1 1   1 1 1 1 1 1 1 1  
1 1 1 1 1 1 1 1   1 1 1 1 1 1 1 1  
1 1 1 1 1 1 1 1   1 1 1 1 1 1 1 0  
1 1 1 1 1 1 1 1   1 1 1 1 1 1 0 0  
1 1 1 1 1 1 1 1   1 1 1 1 1 0 0 0  

.  
.  

1 1 0 0 0 0 0 0   0 0 0 0 0 0 0 0  
1 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0  
0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0  
0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 1  
0 0 0 0 0 0 0 0   0 0 0 0 0 0 1 1  

Itd., czyli wydłu

Ŝ

aj

ą

cy si

ę

, a potem skracaj

ą

cy w

ąŜ

 jedynek. 

Zad. 2. 

Napisa

ć

  program  do  pobierania  wybranej  przez  operatora  receptury.  Zakładamy, 

Ŝ

e  program  obsługuje 

12 receptur 10-składnikowych przechowywanych w nast

ę

puj

ą

cym obszarze rejestrów: 

receptura nr 1: 

%R00001 

÷

 %R00010 

receptura nr 2: 

%R00011 

÷

 %R00020 

receptura nr 3: 

%R00021 

÷

 %R00030 

receptura nr 4: 

%R00031 

÷

 %R00040 

receptura nr 5: 

%R00041 

÷

 %R00050 

receptura nr 6: 

%R00051 

÷

 %R00060 

receptura nr 7: 

%R00061 

÷

 %R00070 

receptura nr 8: 

%R00071 

÷

 %R00080 

receptura nr 9: 

%R00081 

÷

 %R00090 

receptura nr 10:  %R00091 

÷

 %R00100 

receptura nr 11:  %R00101 

÷

 %R00110 

receptura nr 12:  %R00111 

÷

 %R00120. 

Operator  wybiera 

Ŝą

dan

ą

  receptur

ę

  przez  wpisanie  numeru  receptury  do  rejestru  %R00411.  Wówczas 

program ma pobra

ć

 wybran

ą

 receptur

ę

 do rejestrów %R00401

÷

%R00410 przewidzianych do wy

ś

wietlenia na 

ekranie wizualizacji. 

Zad. 3. 

Program  ma  co  sekund

ę

  pobiera

ć

  odczyt  z  wej

ś

cia  analogowego  WE_ANAL  i  przez  1 minut

ę

  wpisywa

ć

 

odczyty  do  obszaru  rejestrów  %R00001

÷

%R00060.  Po  upływie  1  min.  ma  przepisa

ć

  obszar  odczytów 

z ostatniej minuty do obszaru rejestrów %R00101

÷

%R00160 (przewidzianych np. do narysowania wykresu na 

ekranie  wizualizacji)  oraz  wyzerowa

ć

  rejestry  %R00001

÷

%R00060,  aby  przygotowa

ć

  je  do  pobierania 

odczytów z nast

ę

pnej minuty. 

Zad. 4.

 

Napisa

ć

  program,  który  co  0.5  s  odczytuje  stan  zegara  czasu  rzeczywistego  ze  sterownika  i przesyła  do 

rejestrów o nazwach ROK, MIES, DZIEN, GODZ, MIN, SEK aktualne odczyty zegara w formacie INT. 

Zad. dod. 1. 

Zaprojektowa

ć

  układ  sterowania  ruchem  manipulatora  zgodnie 

z zało

Ŝ

eniami  zawartymi  w  instrukcji  nr  3  zad.  2,  wykorzystuj

ą

c  blok 

BIT_SEQ.  Zakładamy, 

Ŝ

e  manipulator  znajduje  si

ę

  w  poło

Ŝ

eniu  dolnym 

prawym.  Po  naci

ś

ni

ę

ciu  niestabilnego  przycisku  START  uruchamiana 

jest jednorazowa sekwencja ruchu manipulatora: w gór

ę

, w lewo, w dół, 

w  gór

ę

,  w  prawo,  w  dół.  Po  powrocie  manipulatora  w  dolne  prawe 

poło

Ŝ

enie  system  sterowania  czeka  na  nast

ę

pne  naci

ś

ni

ę

cie  przycisku 

START. 

 

START 

background image

Programowanie zaawansowane 

14 

 Laboratorium Podstaw Automatyki i Regulacji Automatycznej II 

Zad. dod. 2.

 

Zaprojektowa

ć

  układ  sterowania  ruchem  manipulatora  zgodnie  z  zało

Ŝ

eniami  zawartymi  w  instrukcji  nr  4 

zad. dod.  1,  wykorzystuj

ą

c  blok  BIT_SEQ.  Program  ma  kontrolowa

ć

  stan  czujników  otwarcia  i  zamkni

ę

cia 

chwytaka i nie wykonywa

ć

 nast

ę

pnej akcji, dopóki nie dostanie prawidłowego sygnału z czujnika. 

Zad. dod. 3.

 

Napisz  program  sterowania 

ś

wiatłami  na  skrzy

Ŝ

owaniu  wykorzystuj

ą

c  BIT_SEQ.  Fazy 

ś

wiateł  zgodnie 

z zało

Ŝ

eniami zawartymi w instrukcji nr 4 zad. 2.

 

Zad. dod. 4.

 

Program ma  sprawdza

ć

,  czy  na  którym

ś

  z  kanałów  16-to  kanałowego  modułu  wej

ść

  analogowych  wyst

ą

piło 

przekroczenie  górne  o  warto

ś

ci  10000.  Je

Ŝ

eli  jest  przekroczenie,  to  program  ma  wł

ą

czy

ć

  wyj

ś

cie  o nazwie 

BUCZEK  oraz  wskaza

ć

  w rejestrze  o  nazwie  KAN_NR  numer  kanału,  na  którym  wyst

ą

piło  przekroczenie. 

Je

Ŝ

eli  przekroczenia  s

ą

  na  kilku  kanałach,  to  naciskaj

ą

c  niestabilny  przycisk  DALEJ  w  rejestrze  KAN_NR 

b

ę

dziemy dostawa

ć

 kolejne numery kanałów, na których wyst

ą

piło przekroczenie. Po wy

ś

wietleniu ostatniego 

kanału  z  przekroczeniem,  nast

ę

pne  DALEJ  powoduje  wy

ś

wietlenie  w  KAN_NR  numeru  pierwszego  kanału 

z przekroczeniem itd. 

Zad. dod. 5.

 

Napisa

ć

  program,  który  znajduje  najwi

ę

ksz

ą

  warto

ść

  w

ś

ród  pomiarów  przechowywanych  w  obszarze 

%R00201-%R00260 i wpisuje j

ą

 do rejestru o nazwie MAXIMUM. Zmiana warto

ś

ci pomiarów ma powodowa

ć

 

uaktualnienie rejestru MAXIMUM. 

Zad. dod. 6.

 

Napisa

ć

  program  obliczaj

ą

cy 

ś

redni

ą

  arytmetyczn

ą

  z  pomiarów  znajduj

ą

cych  si

ę

  w rejestrach  pocz

ą

wszy 

od %R00001. Ilo

ść

 pomiarów, któr

ą

 program ma bra

ć

 do obliczenia 

ś

redniej znajduje si

ę

 w rejestrze o nazwie 

L_REJ.  Wynik  ma  by

ć

  przechowywany  w  rejestrze  o  nazwie  SREDNIA.  Zakładamy, 

Ŝ

e  ilo

ść

  pomiarów 

do obliczania 

ś

redniej nie przekroczy 100 i warto

ść

 ka

Ŝ

dego pomiaru mie

ś

ci si

ę

 w granicach –300

÷

+300. 

Zad. dod. 7.

 

Napisa

ć

  program,  który  zmienia  czas  zegara  czasu  rzeczywistego  w  sterowniku  z letniego  na  zimowy 

i odwrotnie.  Naci

ś

ni

ę

cie  niestabilnego  przycisku  PLUS  ma  spowodowa

ć

  dodanie  1  godziny,  a naci

ś

ni

ę

cie 

niestabilnego przycisku MINUS ma odj

ąć

 1 godzin

ę

Wymagana wiedza: 

typy zmiennych w sterownikach GE Fanuc, 

działanie bloków funkcyjnych z grupy Bit Operations, Data Table, Data Move, Control,

 

zasady konstrukcji szczebla,

 

podstawy obsługi oprogramowania narz

ę

dziowego Proficy ME Logic Developer PLC.

 

Warunek zaliczenia: 

obecno

ść

 na zaj

ę

ciach, 

wykazanie si

ę

 wymagan

ą

 wiedz

ą

 w trakcie 

ć

wicze

ń

wykonanie  zada

ń

  według  instrukcji.  Ka

Ŝ

dy  program  powinien  znajdowa

ć

  si

ę

  w  oddzielnym  projekcie 

o nazwie:  T6_X_ZZ  (X  –  nr  zadania,  ZZ  –  nr  sekcji). Wszystkie  projekty  powinny  zawiera

ć

  konfiguracj

ę

 

zgodn

ą

  ze  sprz

ę

tem  znajduj

ą

cym  si

ę

  na  stanowisku,  nazwy  zmiennych  zgodne  z  tre

ś

ci

ą

  zadania 

i komentarze.  Konfiguracja  sterownika  powinna  posiada

ć

  adresy  referencji  dwustanowych  zaczynaj

ą

ce 

si

ę

 od numeru referencji wyliczanego ze wzoru:  

nr sekcji * 8 – 7 

oraz  adresy  referencji  analogowych  zaczynaj

ą

ce  si

ę

  od  numeru sekcji. W komentarzu  powinny  znale

źć

 

si

ę

 nazwiska członków sekcji oraz opis programu.  

przesłanie backup’ow projektów w terminie podanym w systemie e-learning’u, 

pozytywne zaliczenie projektów, 

uzyskanie pozytywnej oceny z ustnej lub pisemnej odpowiedzi na pytania kontrolne. 

zadania  dodatkowe  nale

Ŝ

y  przysyła

ć

  w  systemie  e-learning’u  w  projektach  o  nazwach  T6_X_nazwisko. 

Nie s

ą

 one wymagane do zaliczenia, natomiast prawidłowo rozwi

ą

zane przez pierwsz

ą

 osob

ę

 w grupie s

ą

 

premiowane ocen

ą

 bardzo dobr

ą

Literatura: 

[1]  Sterowniki serii VersaMax. Podr

ę

cznik u

Ŝ

ytkownika. Astor Kraków 2001.

 

GFK1503C-PL 

[2]  Sterowniki serii VersaMax Micro/Nano. Opis funkcji. Astor Kraków.

 

LI

ASK

OF

GE1 

[3]  Zbiór zada

ń

 dla sterowników GE Fanuc serii 90-30, VersaMax, VersaMax Micro/Nano wraz z przykładami 

rozwi

ą

za

ń

. LI-ASK-ZZ-GE3