SUBPROGRAM PENGHITUNG JARAK ANTARA PIPA DAN BIDANG UNTUK PERANCANGAN SISTEM PERPIPAAN OTOMATIS Ari Satmoko∗
ABSTRAK SUBPROGRAM PENGHITUNG JARAK ANTARA PIPA DAN BIDANG UNTUK PERANCANGAN SISTEM PERPIPAAN OTOMATIS Sebuah subprogram DISTLNPL telah disusun dengan menggunakan bahasa pemrograman AutoLISP. Subprogram ini direncanakan untuk melengkapi piranti lunak CAPD (Computer Aided Piping Design) yang sedang dikembangkan untuk perancangan sistem perpipaan secara otomatis. Prinsip kerja CAPD adalah mengusulkan sebuah lintasan pipa untuk kemudian dievaluasi apakah lintasan tersebut bebas dari segala rintangan. DISTLNPL mampu menghitung jarak antara pipa dengan benda berbentuk bidang seperti misalnya tembok, platform, lantai, dsb. Pipa dimodelkan dengan garis yang mencerminkan sumbu pipa. Sedangkan benda berbidang dimodelkan dengan sebuah bidang yang dibatasi oleh beberapa garis. Jarak yang diperoleh antara garis dan bidang dapat dikonversikan untuk melihat apakah terjadi tabrakan antara pipa dengan benda berbidang. Subprogram ini juga mampu memberikan saran, bila perlu untuk menghindari tabrakan, berupa titik alternatif untuk dilalui sebuah sistem perpipaan. Meski belum dapat diakses oleh CAPD, subprogram DISTLNPL menjanjikan manfaat yang besar untuk pemodelan tembok, platform, lantai, dan sejenisnya.
ABSTRACT SUBPROGRAM CALCULATING THE DISTANCE BETWEEN PIPE AND PLANE FOR AUTOMATIC PIPING SYSTEM DESIGN. DISTLNPL subprogram was created using AutoLISP software. This subprogram is planned to complete CAPD (Computer Aided Piping Design) software being developed. The CAPD works under the following method: suggesting piping system line and evaluating whether any obstacle allows the proposed line to be constructed. DISTLNPL is able to compute the distance between pipe and any equipment having plane dimension such as wall, platform, floors, and so on. The pipe is modeled by using a line representing its axis, and the equipment is modeled using a plane limited by some lines. The obtained distance between line and plane gives information whether the pipe crosses the equipment. In the case of crashing, the subprogram will suggest an alternative point to be passed by piping system. So far, DISTLNPL has not been able to be accessed by CAPD yet. However, this subprogram promises good prospect in modeling wall, platform, and floors.
∗
Pusat Pengembangan Teknologi Keselamatan Nuklir - BATAN
PENDAHULUAN Suatu instalasi industri baik di bidang nuklir, perminyakan ataupun kimia selalu didahului dengan disain sistem perpipaan. Sistem perpipaan adalah sebuah sistem yang terdiri dari pipa, katup, flense dan komponen perpipaan lainnya yang menghubungkan dua atau lebih peralatan seperti tanki, boiler, heat exchanger, dsb. Sebuah piranti lunak CAPD telah dikembangkan untuk melakukan rancangan otomatik sistem perpipaan [1] meski masih untuk masalah sederhana. Berbagai batasan diambil untuk menyederhanakan permasalahan. Komponen perpipaan yang dipertimbangkan hanya pipa, siku serta peralatan. Prinsip kerja CAPD adalah mengusulkan sebuah lintasan pipa untuk kemudian dievaluasi apakah lintasan tersebut bebas dari segala rintangan. Dalam piranti lunak tersebut semua benda dipertimbangkan dengan model silinder. Benda-benda yang berbentuk bidang seperti misalnya tembok ataupun platform tidak dapat dimodelkan. Dalam rangka meningkatkan kinerja piranti lunak CAPD tersebut, dikembangkanlah sebuah subprogram DISTLNPL yang mampu mengevaluasi bendabenda berbentuk bidang. Subprogram ini dapat menghitung jarak antara sebuah pipa yang sedang dirancang dengan tembok ataupun platform berbentuk bidang yang mungkin menjadi penghalang bagi lintasan pipa tersebut. Jarak ini kemudian dapat digunakan untuk mengevaluasi apakah lintasan yang sedang dirancang sudah bebas dari rintangan atau belum. Dan bahkan dalam kondisi bertabrakan, subprogram juga dapat memberikan saran agar lintasan pipa digeser melalui sebuah titik tertentu.
TEORI Dalam perancangan sistem perpipaan, lintasan pipa tidak boleh menabrak suatu benda. Benda yang ada pada suatu instalasi pipa sangat beragam dan beraneka bentuk. Salah satunya yang dipelajari dalam makalah ini adalah bentuk bidang dengan ketebalan tertentu dan seragam yang dalam keadaan riilnya bisa berupa tembok, plat besi, platform, dsb. Benda seperti ini akan dimodelkan dengan menggunakan sebuah bidang yang dibatasi oleh beberapa garis (poly-line). Sedangkan pipa yang sedang dirancang digambarkan sebagai sebuah silinder yang dikarakterisasikan dengan garis sumbu dan jari-jari tertentu.
Gambar 1. Perpotongan antara garis dengan bidang Mengevaluasi adanya tabrakan antara pipa yang sedang dirancang dengan sebuah bidang tak lain adalah menghitung jarak antara sebuah garis dengan sebuah bidang. Misalkan AB adalah sebuah garis yang menghubungkan titik A(Ax, Ay, Az) dengan titik B (Bx, By, Bz), dan PQRS adalah sebuah bidang segi empat yang dibatasi oleh garis-garis yang menghubungkan titik-titik P, Q, R, dan S (lihat Gambar 1). Sebuah bidang dalam koordinat kartesien (X,Y.Z) secara matematika dapat digambarkan dengan persamaan berikut: Z = aX + bY + c
(1)
di mana a, b, dan c adalah konstanta skalar yang dapat diperoleh dengan memasukkan koordinat titik-titik P, Q, dan R sehingga menghasilkan tiga persamaan sebagai berikut:
Px Py 1 a Pz Qx Q y 1 b = Qz R R R 1 c z x y
(1b)
Sebuah titik U (Ux, Uy, Uz) di sepanjang garis AB digambarkan dengan persamaan berikut:
U
U x Ax B x − Ax = U y = Ay + k B y − Ay U z Az B z − Az
di mana k adalah skalar.
(2)
Garis AB akan memotong bidang PQRS di sebuah titik bila Persamaan 1 dan Persamaan 2 terpenuhi. Operasi matematika mengantarkan kepada persamaan berikut: k = [Az – a Ax – b Ay – c] / [a (Bx– Ax) + b (By– Ay) – (Bz– Az)]
(3)
Setelah nilai k diperoleh, koordinat titik potong U dapat diperoleh dengan menggunakan Persamaan 2.
METODOLOGI Tujuan dari kegiatan penelitian ini adalah menyusun sebuah subprogram yang dapat menghitung jarak antara garis dengan bidang. Beberapa tahapan telah dilalui untuk mewujudkan tujuan ini. Tahap pertama adalah pengembangan teori matematika seperti yang telah dibicarakan sebelumnya. Selanjutnya adalah mendaftar semua kemungkinan yang terjadi baik kemungkinan yang bersifat matematika (seperti misalnya pembagian dengan nol) maupun kemungkinan riil (tabrakan antara pipa dengan benda). Setelah lengkap tahap berikutnya adalah penyusunan flowchart yang kemudian diakhiri dengan penulisan program dan validasi eksekusi.
PEMBAHASAN Diskusi mengenai jarak antara garis dan bidang merupakan topik kelanjutan dalam rangka penyusunan piranti lunak CAPD (Computer Aided Piping Design) untuk perancangan sistem perpipaan secara otomatis. Berbagai subprogram penghitung jarak telah tersedia dan sudah didiskusikan dalam Ref. [1] di antaranya adalah: DIST2PT : menghitung jarak antara dua buah titik DISTPTLN : menghitung jarak (minimum) antara titik dan garis DIST2LN : menghitung jarak (minimum) antara dua buah garis Tentu saja masih banyak subprogram tambahan yang turut membantu dalam mengolah data seperti misalnya perkalian vektor, perkalian skalar antara dua vektor, berbagai operasi matriks, dsb. Untuk melengkapi subprogram-subprogram yang telah ada tersebut, dikembangkanlah subprogram DISTLNPL (subprogram penghitung jarak antara sebuah garis dan sebuah bidang) yang akan didiskusikan dalam makalah ini.
Jarak Antara Garis dan Bidang Seperti terlihat pada Gambar 1, yang pertama perlu diperiksa adalah apakah garis AB sejajar dengan bidang PQRS. Apabila sejajar, maka Persamaan 3 tidak dapat digunakan. Jarak antara garis dan bidang dapat diperoleh dengan prinsip berikut. Garis AB diproyeksikan terhadap bidang PQRS sebagai garis A’B’, kemudian diperiksa apakah garis A’B’ memotong salah satu garis PQ, QR, RS dan SP. Bila terdapat titik potong, maka jarak garis bidang diperoleh dengan menghitung jarak titik potong ini dengan garis AB (menggunakan subprogram DISTPTLN). Mungkin saja terjadi keadaan di mana kedua proyeksi titik A dan B berada di dalam bidang PQRS. Dalam hal ini jarak antara garis dan bidang diwakili oleh garis AA’ atau BB’. Bila ternyata proyeksi AB terdapat di luar bidang PQRS, maka perlu dihitung jarak yang paling dekat di antara pasangan garis AB-PQ, AB-QR, AB-RS, dan AB-SP (menggunakan subprogram DIST2LN). Pada kasus di mana AB tidak sejajar dengan bidang PQRS, Persamaan 3 dan Persamaan 2 digunakan sehingga diperoleh titik pertemuan U antara garis dan bidang. Selanjutnya diperiksa apakah titik U ini berada di dalam atau di luar bidang PQRS. Pemeriksaan juga dilakukan apakah titik U juga berada di dalam segmen garis AB (0 ≤ k ≤ 1) ataukah perpanjangannya (k < 0 atau k > 1). Dari kedua pemeriksaan tadi, sebenarnya terdapat enam kasus kemungkinan, namun dua kasus kemungkinan mempunyai perlakuan yang identik seperti ditunjukkan oleh Tabel 1 di bawah. Masing-masing kasus dipersiapkan subprogramnya yang sesuai seperti berikut ini. Tabel 1. Beberapa Kemungkinan Kasus Perpotongan Anantara Garis dan Bidang Kemungkinan kejadian U di dalam bidang U di luar bidang
Subprogram kasus 1:
Subprogram kasus 2:
Subprogram kasus 3:
k<0 Subprogram Kasus 4 Subprogram Kasus 4
0≤k≤1 Subprogram Kasus 1 Subprogram Kasus 2
k>1 Subprogram Kasus 3 Subprogram Kasus 3
Dalam kasus ini, garis AB menembus bidang PQRS, sehingga jarak minimum adalah nol dan ini berarti lintasan pipa AB nyata-nyata menabrak benda PQRS. Dalam kasus ini, garis AB tidak melewati bidang PQRS. Jarak minimum antara garis dan bidang diperoleh dengan mencari jarak terdekat di antara empat kemungkinan berikut: AB-PQ, AB-QR, AB-RS, dan AB-SP. Dalam kasus ini perlu diperiksa apakah proyeksi dari titik B (memberikan titik B’) berada di dalam bidang PQRS. Bila
Subprogram kasus 4:
jawaban adalah positif maka jarak garis – bidang diberikan oleh jarak BB’. Bila sebaliknya, maka menggunakan subprogram kasus 2. Kasus ini mirip dengan kasus 3, hanya titik B diganti dengan titik A.
Pergeseran Pipa Bila Terjadi Tabrakan Berdasarkan Ref. [2], jarak minimum antara permukaan luar pipa dengan permukaan bidang (tembok, plat, platform, dsb) adalah 3 inchi. Dengan demikian jarak minimum antara sumbu pipa dengan garis tengah bidang diberikan oleh persamaan berikut: jarak minimum (inchi) = D/2 + t/2 +3
(4)
di mana D adalah diameter nominal pipa, dan t adalah tebal benda yang berbentuk bidang. Dengan menggunakan metode yang telah dibicarakan sebelumnya, jarak antara lintasan pipa yang sedang dirancang dengan benda-benda berbentuk bidang dapat dihitung. Apabila jarak yang diperoleh melebihi jarak minimal maka berarti lintasan pipa yang sedang digambar tidak menjumpai rintangan. Bila ternyata jarak yang diperoleh masih di bawah jarak minimum yang dipersyaratkan oleh Persamaan 4, hal ini menunjukkan indikasi adanya tabrakan antara pipa yang sedang dirancang dengan benda tertentu. Dalam hal ini lintasan pipa harus digeser. Arah dan jauhnya pergeseran ditentukan dengan menggunakan metode berikut. Mungkin saja jarak yang diperoleh melalui perhitungan sama dengan nol. Ini berarti pipa yang sedang dirancang nyata-nyata menabrak benda. Dalam hal ini titik pertemuan antara garis dan bidang dicatat. Langkah selanjutnya adalah menghitung jarak minimum untuk keluar dari bidang. Vektor ke arah luar ini direkam. Bila jarak garis dan bidang tidak sama dengan nol namun masih di bawah batas minimum Persamaan 4, ini berarti pipa dan benda yang sedang dievaluasi berada dalam keadaan bersinggungan (riilnya berarti bertabrakan). Solusi dari singgungan ini adalah dengan mencatat kedua titik yang menggambarkan jarak minimum kedua benda. Dengan menyusunnya sebagai vektor maka pergeseran pipa dapat disarankan secara optimal.
FLOWCHART DAN PEMROGRAMAN Urutan eksekusi program sebagaimana yang telah dibicarakan sebelumnya terangkum dalam flowchart seperti ditunjukkan dalam Gambar 2. Berdasarkan diagram alur ini, penyusunan program dilakukan. Bahasa pemrograman yang digunakan adalah AutoLISP yang juga telah dipakai dalam perangkat lunak CAPD yang sedang dikembangkan. Bahasa ini mempunyai fasilitas untuk menangani struktur data yang bersifat list atau urutan data dan sangat cocok untuk problem-problem mengenai kecerdasan buatan. AutoLISP juga memiliki kelebihan karena dieksekusi dalam piranti lunak AutoCAD[3] yang banyak digunakan dalam rancang bangun suatu instalasi industri. Namun perlu pula dicatat bahwa AutoLISP juga memiliki kekurangan. Seperti yang digambarkan pada Tabel 1, ada beberapa kasus kemungkinan yang bisa terjadi. Struktur pemrograman yang paling cocok dengan problem tersebut adalah case-do. Namun kelihatannya struktur ini tidak terimplementasikan ke dalam piranti lunak AutoLISP. Sebagai gantinya struktur if … then … else digunakan seperti ditunjukkan dalam flowchart pada Gambar 2.
VALIDASI DAN HASIL PEMROGRAMAN Subprogram DISTLNPL telah dieksekusi beberapa kali untuk permasalahan sederhana dan telah sesuai dengan angka teoritis yang seharusnya. Dengan demikian subprogram ini telah bekerja sebagaimana mestinya. Sebagai contoh hasil eksekusi, misalkan pipa akan dipasang / dirancang untuk menghubungkan pompa dan tanki. Kedua nozzle berada dalam satu garis lurus (lihat Gambar 3 atas). Koordinat nozzle pompa adalah (50, 260, 140) dan koordinat tanki adalah (1100, 260, 140). Di antara pompa dan tanki terdapat tembok dengan ketebalan 20 cm yang menjulang ke atas. Dengan panjang 1000 dan tinggi 200, tembok tersebut membentuk sudur 45° baik terhadap sumbu x maupun sumbu y. Problem di atas dievaluasi dengan menggunakan model seperti ditunjukkan oleh Gambar 3 tengah. Tembok dianggap sebagai bidang dan lintasan pipa yang sedang didesain digambarkan oleh garis AB. Pada waktu dieksekusi, subprogram menjumpai kenyataan bahwa lintasan pipa AB nyata-nyata menabrak dinding tembok (jarak = 0). Subprogram juga dilengkapi dengan blok instruksi tambahan sehingga dapat menyarankan penggeseran lintasan pipa dari titik U ke titik V (ke arah atas). Subprogram DISTLNPL hanya mengevaluasi apakah sebuah lintasan sistem perpipaan menabrak bidang dan kemudian bila perlu memberikan saran titik alternatif untuk dilalui lintasan sistem perpipaan tersebut. Karena berbagai kendala teknis (terutama kompatibilitas antara variabel-variabel global), subprogram ini belum dapat
diimplementasikan ke dalam piranti lunak CAPD yang telah ada dan sedang dikembangkan. Meski pekerjaan ini tidak terlalu sulit, namun masih membutuhkan waktu dan kecermatan.
Gambar 3. Hasil Eksekusi Subprogram DISTLNPL
KESIMPULAN Sebuah subprogram DISTLNPL telah dikembangkan untuk meningkatkan kinerja piranti lunak CAPD. Subprogram tersebut dapat mengevaluasi jarak antara sebuah lintasan pipa dengan benda berbentuk bidang. Jarak yang kurang dari batas minimum menunjukkan indikasi adanya tabrakan antara pipa dengan benda. Bila hal
ini terjadi, subprogram DISTLNPL akan memberikan saran berupa titik alternatif untuk dilalui oleh sistem perpipaan tersebut dalam rangka menghindari tabrakan. Subprogram ini memberikan manfaat besar karena dapat mengevaluasi atau memodelkan benda-benda yang berbentuk bidang seperti misalnya tembok, platform, dan lantai. Namun sayangnya, masih dibutuhkan waktu dan kecermatan untuk dapat menerapkan atau mengakses subprogram DISTLNPL ke dalam CAPD yang sedang dikembangkan.
DAFTAR PUSTAKA 1. ARI SATMOKO, Pengembangan Piranti Lunak Awal untuk Perancangan Otomatik Sistem Perpipaan dalam Ruang Tiga Dimensi dengan Menggunakan Teori Kecerdasan Buatan, Risalah Lokakarya Komputasi dalam Sains dan Teknologi Nuklir XI, Jakarta, Oktober 2000 2. LOUIS GARY LAMIT, Piping Systems Drafting and Design, Prectice-Hall, Inc., Englewood Cliffs, (1981) 3. AutoLISP Programmer’s Reference Manual, Release 12, Autodesk, Inc. (1990)
Pertanyaan / komentar dari Pak M. Bunjamin: 1. Jika garis AB sejajar bidang PQRS dan A’B’ adalah proyeksi garis AB terhadap bidang PQRS, maka jarak garis AB terhadap bidang PQRS = AA’ = BB’. Lagipula jika garis AB sejajar PQRS, maka tabrakan jelas tidak terjadi. Hal ini termasuk dalam kasus 3 atau kasus 4 (halaman 6)? 2. Bagaimana menentukan posisi sumbu x, y dan z? Jawaban: 1. Bila AB sejajar PQRS maka jaraknya adalah AA’ dan juga sama dengan BB’. Dalam hal ini subprogram hanya mengerjakan salah satu jarak tersebut. Garis sumbu dan bidang sumbu PQRS mungkin saja tidak bertabrakan, namun bisa jadi permukaan atau diameter luar silinder (maksudnya pipa) bersinggungan dengan bidang PQRS (maksudnya tembok atau platform). Kasus ini diperiksa oleh Persamaan 4. Kasus 1, 2, 3 dan 4 hanya akan dievaluasi bila garis AB tidak sejajar dengan PQRS (lihat flowchart). 2. Sudah dilakukan perjanjian sebelumnya (antara pencipta dengan pengguna subprogram DISTLNPL) bahwa komponen pertama diperuntukkan sumbu x, komponen kedua sumbu y dan komponen ketiga adalah sumbu z.
HOME
KOMPUTASI DALAM SAINS DAN TEKNOLOGI NUKLIR XII