Membuat Fungsi “Copy DB “

Step 7 Add comments

Salah satu bentuk penerapan dari tipe data ANY, yaitu membuat suatu fungsi di S7 tentang bagaimana cara copy suatu address ke address yang lain, dalam hal ini copy antar Data Block (DB).
Dalam contoh kali ini, saya juga menggunakan system function SFC20 BLKMOV, karna contohnya sebenarnya merupakan pengembangan dari SFC20 tersebut. Kelemahan dari SFC20 adalah bahwa parameter untuk source dan destination adalah absolut, nah di dalam fungsi Copy DB ini kita bisa membuat variabel source dan destination.

1. Prepare Interface Variabel

Nah, disana kita menggunakan tipe data ANY untuk PointerSource dan PointerDest, karna tipe data tersebut berisi informasi - informasi dari suatu address.

2. Script Function (STL)

{Preparing Source Pointer}

L P##PointerSource
LAR1

L B#16#10
T LB [AR1,P#0.0]

L B#16#2
T LB [AR1,P#1.0]

L #SourceLength
T LW [AR1,P#2.0]

L #SourceDB
T LW [AR1,P#4.0]

L B#16#84
T LB [AR1,P#6.0]

L B#16#0
T LB [AR1,P#7.0]

L #SourceBegin
SLW 3
T LW [AR1,P#8.0]

Keterangan :
- Byte 0 = untuk S7 nilainya 10 (hexadecimal)
- Byte 1 = data type

Karena kita menggunakan satuan byte, maka data untuk byte 1 = B#16#02

- Word 2 = merupakan panjang data
- Word 4 = nomor data blocknya
- Byte 6 = jenis address

karna kita menggunakan DB, maka Byte 6 = W#16#84

- Byte 7 = gak dipake (dikosongin)
- Word 8 = awal dari data block (byte address)

{Preparing Destination Pointer}

L P##PointerDest
LAR1

L B#16#10
T LB [AR1,P#0.0]

L B#16#2
T LB [AR1,P#1.0]

L #DestLength
T LW [AR1,P#2.0]

L #DestDB
T LW [AR1,P#4.0]

L B#16#84
T LB [AR1,P#6.0]

L B#16#0
T LB [AR1,P#7.0]

L #DestBegin
SLW 3
T LW [AR1,P#8.0]

{Copying Data}

CALL SFC20
SRCBLK :=#PointerSource
RET_VAL:=#RetV
DSTBLK :=#PointerDest

====================================

3. Contoh Penggunaan Fungsi Tersebut

CALL “Copy DB”
SourceDB :=1
SourceBegin :=0
SourceLength:=4
DestDB :=2
DestBegin :=0
DestLength :=4
NOP 0

Nah, script itu berarti kita melakukan copy data dari DB1 (panjang 4 bytes) ke DB2 (panjang 4 bytes). Sangat fleksibel bukan ??? nilai source dan destination bisa kita ubah semau kita :)

Leave a Reply

Copyright © 2008 Achmad Fathoni, Powered by Wordpress, WP Theme redesign from Glossyblue
Entries RSS Comments RSS Log in