BAB V Implementasi Perangkat Lunak ARTISt V-1
IMPLEMENTASI PERANGKAT LUNAK ARTISt
Pada bab ini akan dijelaskan tentang implementasi dari perancangan perangkat lunak ARTISt.
5.1. Batasan Implementasi
Tahap implementasi perangkat lunak ARTISt merupakan kelanjutan dari tahap perancangan, sehingga implementasi ini harus didasarkan pada perancangan yang telah dilaksanakan sebelumnya. Batasan implementasi ini dapat ditinjau dari 2 aspek, yaitu aspek perangkat lunak dan aspek perangkat keras.
5.1.1. Aspek Perangkat Lunak
Agar perangkat lunak yang dibuat dapat diimplementasikan dengan baik, maka dibutuhkan perangkat lunak pendukung :
• Operating Sistem DOS minimum ver. 4.00 yang dapat digunakan oleh perangkat lunak lain yang diperlunakan (BorlandC ver3.1). • Perangkat lunak (Software) : BorlandC ver.3.1 yang bekerja
5.1.2. Aspek Perangkat Keras
Perangkat keras yang dibutuhkan untuk mengimplementasikan perangkat lunak ARTISt secara optimum adalah :
a) Processor minimal 486 dengan memory minimal 16 Mb dilengkapi. b) 1 buah kartu ARTISt
c) 1 buah monitor minimum dengan resolusi EGA/VGA d) 1 buah printer LQ series
e) 1 buah harddisk dengan kapasitas minimum 540 Mb
5.2. Implementasi Perangkat Lunak
Pada bab IV telah dijelaskan bahwa ARTISt mempunyai 8 buah komponen perangkat lunak (CSC), dimana yang dibahas pada tesis ini adalah CSC_Calculator(yang berhubungan dengan pemrosesan data) dan CSC_OutputDevice(yang berhubungan dengan penyajian data). CSC_Calculator diturunkan menjadi 3 unit, yaitu CSU_Calculator, CSU_EngineeringCalculator, dan CSU_ARINCConverter. Sedang CSC_OutputDevice tidak diturunkan lagi, sehingga CSC_OutputDevice juga sebagai CSU_OutputDevice.
Dalam implementasi ini digunakan suatu struktur direktori yang memudahkan dalam mengorganisasi setiap berkas yang digunakan dengan “ARTISt” sebagai direktori induk. Direktori induk ini terdiri dari 4 sub-direktori, yaitu: sub-direktori “Project”, sub-direktori “Include”, sub-direktori “Source”, dan sub-direktori “Execute”.
Dalam implementasi ini setiap objek CSU, akan terdiri dari berkas spesifikasi (*.h) dan berkas badan (*.c), dimana penamaan dari masing-masing berkas yang digunakan dapat dilihat pada Tabel 5.1.
No. Objek Nama
Berkas Layanan 1. CSU_Calculator calcultr.c calcultr.h CalculateToEngineering Data 2. CSU_EngineeringC alculator enginctr.c enginctr.h CalculateLinear CalculatePolynom CalculateBitMask CalculateExtended 3. CSU_ARINCConve rter arinccvt.c arinccvt.h ConvertLinearARINC ConvertPolynomARINC 4 CSU_OutputDevice outputdv.c outputdv.h DisplayTable DisplayGraphic DisplayMixed DisplayXPlot Tabel 5.1. Daftar Nama Berkas Implementasi
Implementasi yang dilakukan didasarkan pada algoritma yang akan dijelaskan pada bab-bab selanjutnya.sedangkan implementasi dalam bahasa C yang digunakan, secara lebih detil dapat dilihat pada acuan teknis perangkat lunak ARTISt.[8]
Pengendali utama dari perangkat lunak ARTISt dilakukan oleh prosedur/fungsi MMIMS_Main yang terdapat pada objek MMIMS dengan algoritma yang diperlihatkan pada tabel 5.2 berikut:
ALGORITMA PROSEDUR/FUNGSI MMIMS_Main ()
Status CheckACARD() If status > 0 then
CSCI will continue in simulation mode Else if status < 0 then
Error 1 Else
InitiateSystemConfiguration()
Provide ARTISt Main_Menu choose MainMenu
switch(choose)
case 1 : Provide Setting Menu
case 2 : Provide RunMonitoringMenu pilih RunMenu switch(pilih) case 1 : DisplayTable case 2 : DisplayGraphic case 3 : DisplayMixed case 4 : DisplayXPlot case 3 : Run Editor DOS
case 4 : Exit from program
5.2.1.
Implementasi CSU_Calculator
CSU_calculator terdiri dari satu fungsi layanan yang digunakan untuk mengintegrasikan perhitungan data elektrik menjadi data enjiniring. Layanan ini tidak mempunyai atribut dan mengembalikan status dari proses perhitungannya.
ALGORITMA PROSEDUR/FUNGSI TStatusEng CalculateToEngineeringData () FOR (i=0; i <neffparset; i++)
param_calcul GetParam(paramset, i) parcal GetParCal(param_calcul) IF parcal = 1 eng_data CalculateLinear(param_calcul, status_eng) ELSE IF parcal = 2 eng_data CalculatePolynom(param_calcul, status_eng) ELSE IF parcal = 3
eng_data CalculateBitMask (param_calcul, status_eng) ELSE IF parcul = 4 SearchExtFormula(ext_formulaset, ext_formulaset.Neff, par_name, index_ExtFormula, found) IF (found = TRUE) ext_formula GetExtFormula(ext_formulaset, index_ExtFormula) eng_data CalculateExtended(ext_formula, status_eng) ELSE
print message "there is error in translate to engineering”
SetEng(eng_data, paramset, i) RETURN(status_eng)
5.2.2. Implementasi CSU_EngineeringCalculator
CSU_EngineeringCalculator terdiri dari 4 fungsi layanan yang digunakan untuk menghitung data elektrik menjadi data enjiniring berdasarkan jenis parameternya.
ALGORITMA PROSEDUR/FUNGSI
float CalculateLinear (TParam *param, TStatusEng *status_eng); IF parword = 3
ConvertLinearARINC(param) slope
(calibval_3–calibval_1)/(calibval_2 – calibval) offset calibval_1 - (slope * calibval)
phy elect * slope + offset RETURN (phy)
float CalculatePolynom (TParam *param, TStatusEng *status_eng); IF ADT_Param.GetParWord() = 1
bufdat GetCalibValue(calib_data,rptr+0) raw1 GetElect(param)
bufdat bufdat + (raw1 *
GetCalibValue(calib_data,rptr + 1)) IF nc = 1 go to hasilnya {polynom orde 1} raw2 raw1 ^ 2
bufdat bufdat + (raw2 *
GetCalibValue(calib_data,rptr + 2)) IF nc = 2 go to hasilnya {polynom orde 2} raw3 raw2 * raw1
bufdat bufdat + (raw3 *
GetCalibValue(calib_data,rptr + 3)) IF nc = 3 go to hasilnya {polynom orde 3} raw4 raw3 * raw1
bufdat bufdat + (raw4 *
GetCalibValue(calib_data,rptr + 4)) IF nc = 4 go to hasilnya {polynom orde 4} raw5 raw4 * raw1
bufdat bufdat + (raw5 *
GetCalibValue(calib_data,rptr + 5)) IF nc = 5 go to hasilnya {polynom orde 5} raw6 raw5 * raw1
GetCalibValue(calib_data,rptr + 6)) IF nc = 6 go to hasilnya {polynom orde 6} raw7 raw6 * raw1
bufdat bufdat + (raw7 *
GetCalibValue(calib_data,rptr + 7)) ELSE {nc > 6}
bufdat bufdat + (raw7 *
GetCalibValue(calib_data,rptr + 7)) status Not_OK hasilnya : PutEng(bufdat,param) ELSE {par_word != 1} ConvertPolynomARINC(param) phy (GetCalibValue(calib_data,rptr+1) * GetElect(param)) + GetCalibValue(calib_data,rptr); PutEng(phy, param); RETURN(status)
float CalculateBitMask (TParam *param, TStatusEng *status_eng); BitMask GetCalibValue(calib_data,rptr)
BMF GetCalibValue(calib_data,rptr +1) raw GetElect(param) AND BitMask
IF raw ≠ 0 IF (BMF) eng 0 ELSE eng 1 ELSE {raw = 0} IF (BMF) eng 1 ELSE eng 0 RETURN (eng)
float CalculateExtended (TExtFormula ext_formula, TParamSet paramset1, TStatusEng *status_eng);
status OK
phy_ext Calculate parameter extended based on ExtFormula.
(if there is error in calculate extended parameter, status Not_Ok)
PutEng(phy_ext,param) RETURN (status)
Tabel 5.4: “Algoritma Prosedur/Fungsi Layanan CSU_EngineeringCalculator”
5.2.2.
Implementasi CSU_ARINCConverter
CSU_ARINCConverter terdiri dari 2 fungsi layanan yang digunakan untuk mengkonversi data ARINC-429 berdasarkan jenis dari parameternya.
ALGORITMA PROSEDUR/FUNGSI
TStatusConvertARINC ConvertLinearARINC (TParam *param); ARtemp 0
elect ADT_Param.GetElect(param) Convert the elect for linear
ARtemp elect converted
ADT_Param.PutElect (param, ARtemp) RETURN (status)
TStatusConvertARINC ConvertPolynomARINC (TParam *param); ARtemp 0
elect ADT_Param.GetElect(param) Convert the elect for Polynom ARtemp elect converted
ADT_Param.PutElect (param, ARtemp) RETURN (status)
Tabel 5.5: “Algoritma Prosedur/Fungsi Layanan CSU_ARINCConverter”
5.2.3.
Implementasi CSU_OutputDevice
CSU_OutputDevice digunakan untuk menampilkan data ke layar, menyimpan data di disk, dan mencetak data ke printer. CSU ini terdiri dari 4 fungsi layanan yang digunakan untuk menampilkan data parameter, sedangkan fungsi pencetakan dan penyimpanan merupakan fungsi internal dari CSU.
ALGORITMA PROSEDUR/FUNGSI void DisplayTable ();
WHILE (not finish)
irigtime SetupIRIGTIME IF incoming data is real PCM chkdat CheckPCMData
IF (chkdat = 0) CollectElectricalData ELSE
It use electrical data which has been collected before, and the data is given different color
ELSE {simulation data} GetSimData(simdata)
TranslateToEngineeringData( )
FOR (i = 0; i < tab_loc_selected; i++) IF (display_mode = elect)
Display the electrical data in table mode ELSE
Display the engineering data in table mode DoOnLineAction(&kb) {recording,printing,etc} void DisplayGraphic ();
WHILE (not finish)
irigtime SetupIRIGTIME IF incoming data is real PCM chkdat CheckPCMData
IF (chkdat = 0) CollectElectricalData ELSE
It use electrical data which has been collected before, and the data is given different color
ELSE {simulation data} GetSimData(simdata)
TranslateToEngineeringData( )
FOR (i = 0; i < graph_loc_selected; i++) IF (display_mode = elect)
Display electrical data in graphic mode ELSE
Display engineering data in graphic mode DoOnLineAction(&kb) {recording,printing,etc}
void DisplayMixDis (); WHILE (not finish)
irigtime SetupIRIGTIME IF incoming data is real PCM chkdat CheckPCMData
IF (chkdat = 0) CollectElectricalData ELSE
It use electrical data which has been collected before and given different color ELSE {simulation data}
GetSimData(simdata)
TranslateToEngineeringData( )
FOR (i = 0; i < mix_loc_selected; i++) IF (display_mode = elect)
Display electrical data in MixDis mode ELSE
Display engineering data in MixDis mode DoOnLineAction(&kb) {recording,printing,etc} void DisplayXPlot ();
WHILE (not finish)
irigtime SetupIRIGTIME IF incoming data is real PCM chkdat CheckPCMData
IF (chkdat = 0) CollectElectricalData ELSE
It use electrical data which has been collected before and given different color ELSE {simulation data}
GetSimData(simdata)
TranslateToEngineeringData( )
FOR (i = 0; i < xplot_loc_selected; i++) IF (display_mode = elect)
Display electrical data in XPlot mode ELSE
Display engineering data in XPlot mode DoOnLineAction(&kb) {recording,printing,etc}
Tabel 5.6: “Algoritma Prosedur/Fungsi Layanan CSU_OutputDevice” Hasil dari implementasi ini harus di uji untuk menjamin bahwa perangkat lunak yang dikembangkan sesuai dengan keinginan. Pengujian dari perangkat lunak ARTISt akan dijelaskan pada bab VI.