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 ![]()




Recent Comments