CR 1000 X
CR 1000 X
'###########################################################################
'===========================================================================
'================= VARIABLE STASIUN--WAJIB ISI =============================
'===========================================================================
Const Kode_Stasiun = "STA2156"
Const Nomor_Kartu = "0852xxxxxxxxx"
Const Nomor_Penjaga = "081xxxxxxxx"
Const Waktu_Pengiriman = 10 '(menit) BISA DILAKUKAN UJI COBA PENGIRIMAN 1 MENIT
Const IPModem = "192.168.0.1" 'diisi berdasarkan alamat ip modem default
Const AWSCenter = "202.90.198.206"
Const Folder_FTP = "aws"
Const Pass_FTP = "aws"
Const Attach_File = "Ethernet_10M"
Const Time_update = "time.bmkg.go.id"
Const ALTITUDE = 40 'Altitude of the site above sea level in m (AWS IRK)
Const SENSORLEVEL = 2 'Pressure sensor height from station or runway level in m
'###########################################################################
'===========================================================================
'============================ FAKTOR KALIBRASI =============================
'===========================================================================
'HANYA DIISI OLEH SUBBID KALIBRASI KLIMAT ATAU BALAI BESAR BMKG !!!!!!!!!!!
'Faktor koreksi Kalibrasi
Const Fkal_WS = 0
Const Fkal_WD = 0
Const Fkal_Temp = 0
Const Fkal_RH = 0
Const Fkal_Press = 0
Const Fkal_SR = 0
'=============================================================================
'============= WIRING SENSOR AWS DAN MODEM ===================================
'=============================================================================
'NB : Hanya untuk Sensor dengan output Frekuensi, jika output Analog/Serial tidak
usah di isi
'Datasheet WS Frekuensi
Const mult_WS_frek = 0.102 '(datasheet sensor)
Const offset_WS_frek = 0
'Datasheet WD Frekuensi
Const mult_WD_frek = 355 '(datasheet sensor)
Const offset_WD_frek = 0
'HMP 155E Humidity and Temp. Serial Sensor RS485 (Nomor 3)| Versi Modif
' Pink | RS485A | C8 | WAJIB SETTING SENSOR !!!
' Brown | RS485B | C7 | TUTORIAL ADA DI LINK
BERIKUT :
' Blue | Power | 12V | https://youtu.be/ZSXR3G40ddM
' Red | Power Ground | G |
' Green | Analog Ground | G |
' Black | Shield | G |
'==================================================================================
==============================
' Wiring PC ke Logger (dengan jarak >50m) {B&B Electronics}
|
'
|----------------------------------------------------------------------------------
---------------------------|
' | CR1000X | RS232 Male to Naked | Conv. RS232 - RS485 | Conv. RS485 - RS232 |
RS232 to USB | PC/LAPTOP |
'
|----------------------------------------------------------------------------------
---------------------------|
' | GND | pin 5 | GND | GND |
ATEN / Prolific | USB PORT |
' | Rx (C2) | pin 2 | RDB(+) | TDB(+) |
atau lainnya | |
' | Tx (C1) | pin 3 | RDA(-) | TDA(-) |
| |
' |------------| | TDB(+) | RDB(+) |
| |
' | Sesuaikan | | TDA(-) | RDA(-) |
| |
' |dengan sisa | | Power Supply | Power Supply |
| |
' | port COM, | | (5V - 12V) | (5V - 12V) |
| |
' | Bisa Pakai PORT CSIO
'==================================================================================
==============================
'==================================================================================
==============================
' Wiring PC ke Logger (dengan jarak >50m) {MOXA TCC-80} --> [Mode 4 Wires RS485]
[SW1 : ON , SW2 : OFF] |
'
|----------------------------------------------------------------------------------
---------------------------|
' | CR1000X | RS232 Male to Naked | Conv. RS232 - RS485 | Conv. RS485 - RS232 |
RS232 to USB | PC/LAPTOP |
'
|----------------------------------------------------------------------------------
---------------------------|
' | GND | pin 5 | GND | GND |
ATEN / Prolific | USB PORT |
' | Rx (C2) | pin 2 | R(+) | T(+) |
atau lainnya | |
' | Tx (C1) | pin 3 | R(-) | T(-) |
| |
' |------------| | T(+) | R(+) |
| |
' | Sesuaikan | | T(-) | R(-) |
| |
' |dengan sisa | | Power Supply | Power Supply |
| |
' | port COM, | | (5V - 12V) | (5V - 12V) |
| |
' | Bisa Pakai PORT CSIO
'==================================================================================
==============================
'==================================================================================
==============================
' Wiring PC ke Logger (dengan jarak >50m) {MOXA TCC-80} --> [Mode 2 Wires RS485]
[SW1 : ON , SW2 : ON] |
'
|----------------------------------------------------------------------------------
---------------------------|
' | CR1000X | RS232 Male to Naked | Conv. RS232 - RS485 | Conv. RS485 - RS232 |
RS232 to USB | PC/LAPTOP |
'
|----------------------------------------------------------------------------------
---------------------------|
' | GND | pin 5 | GND | GND |
ATEN / Prolific | USB PORT |
' | Rx (C2) | pin 2 | D(+) | D(+) |
atau lainnya | |
' | Tx (C1) | pin 3 | D(-) | D(-) |
| |
' | | | Power Supply | Power Supply |
| |
' | | | (5V - 12V) | (5V - 12V) |
| |
' | Bisa Pakai PORT CSIO
'==================================================================================
==============================
'=============================================================================
'==================DEKLARASI VARIABEL DAN UNIT ===============================
'=============================================================================
'Wind_Sensor
Public WS_meas 'Wind speed in m/s Measurement
Public ws_knot 'Wind speed in knots Measurement
Public ws_Kph 'Wind speed in KM/H Measurement
Public WD_meas 'Wind direction Measurement
Units WS_meas = m/s
Units WD_meas = deg
Units ws_knot = Knots
Units ws_Kph = Km/h
'TRH_Sensor
Public TA_meas 'Temperature Measurement
Public TA_Fah 'Temperature in Fahrenheit
Public RH_meas 'Relative Humidity measurement
'Pressure_Sensor
Public PA_meas 'Barometric Pressure Measurement
'SR_Sensor
Public SR_meas 'Solar Radiation Measurement
Units SR_meas = W/m^2
'Typing_Sensor
Public PR_meas 'Rain Measurement
Public PR_meas_Total 'As String 'Total Rain
'Public PR_meas_Tot
Public RainIntensity5min '5 minute rainfall intensity
Public rain10min '10 minute intensity
Public rainHourly '60 min intensity
Public RainDaily
Units PR_meas = mm
Units PR_meas_Total = mm
'=============================================================================
'========================= ALGORITMA PERHITUNGAN =============================
'=============================================================================
'Multip & Offset WSWD
Const Multip_WS = (Range_atas_WS - Range_bawah_WS) / ((Teg_atas_WS -
Teg_bawah_WS)*1000)
Const Offset_WS = Range_bawah_WS + Fkal_WS
Const Multip_WD = (Range_atas_WD - Range_bawah_WD) / ((Teg_atas_WD -
Teg_bawah_WD)*1000)
Const Offset_WD = Range_bawah_WD + Fkal_WD
'Multip $ Offset SR
Const Multip_SR = ((1000 / Sensitivy_SR) + Fkal_SR)
Const Offset_SR = 0
'=============================================================================
'============================= DEKLARASI OUTPUT DATA =========================
'=============================================================================
Public FTPResult
Public FTPname As String * 100
Public FTPdate As String
Public FTPtime As String
Public TimeOffset As Long
'=============================================================================
'========================= DEKLARASI KONSTANTA ===============================
'=============================================================================
'=============================================================================
'========================= DEKLARASI VARIABEL LAIN ===========================
'=============================================================================
'=============================================================================
'=========================== DEFINE DATA TABLES ==============================
'=============================================================================
'*******************TABEL 10 DETIK********************
DataTable (ten_second,1,-1)
DataInterval (0,10,Sec,10)
Average (1,TA_meas,FP2,False)
Average (1,RH_meas,FP2,False)
Average (1,PA_meas,IEEE4,False)
Average (1,SR_meas,IEEE4,False)
Average (1,WS_meas,IEEE4,False)
Average (1,WD_meas,FP2,False)
' WindVector (1,WS_meas,WD_meas,FP2,False,0,0,0)
' FieldNames("WS_meas_S_WVT,WindDir_D1_WVT,WindDir_SD1_WVT")
Sample (1,PR_meas_Total,FP2)
EndTable
'******************TABEL 1 MENITAN********************
DataTable (one_minute,1,-1)
DataInterval (0,1,Min,10)
Average (1,TA_meas,FP2,False)
Average (1,RH_meas,FP2,False)
Average (1,PA_meas,IEEE4,False)
Average (1,SR_meas,IEEE4,False)
Average (1,WS_meas,IEEE4,False)
Average (1,WD_meas,FP2,False)
Sample (1,PR_meas,FP2)
Sample (1,PR_meas_Total,FP2)
WindVector (1,WS_meas,WD_meas,FP2,False,0,0,0)
FieldNames("WS_meas_S_WVT,WindDir_D1_WVT,WindDir_SD1_WVT")
Average (1,ws_knot,IEEE4,False)
' Average (1,PA_QFE,IEEE4,False)
' Average (1,PA_QFF,IEEE4,False)
EndTable
'*******************TABEL 10 MENIT********************
DataTable (ten_minute,1,-1)
DataInterval (0,10,Min,10)
Average (1,TA_meas,FP2,False)
Maximum (1,TA_meas,FP2,False,False)
Minimum (1,TA_meas,FP2,False,False)
Average (1,RH_meas,FP2,False)
Average (1,PA_meas,IEEE4,False)
Average (1,PA_QFE,IEEE4,False)
Average (1,PA_QFF,IEEE4,False)
Average (1,SR_meas,IEEE4,False)
Maximum (1,SR_meas,IEEE4,False,False)
Maximum (1,WS_meas,IEEE4,False,False)
Average (1,WS_meas,IEEE4,False)
Minimum (1,WS_meas,IEEE4,False,False)
'============================= m/s to knot
Maximum (1,ws_knot,IEEE4,False,False)
Average (1,ws_knot,IEEE4,False)
'==============================
Average (1,WD_meas,FP2,False)
WindVector (1,WS_meas,WD_meas,IEEE4,False,0,0,0)
FieldNames("WS_meas_S_WVT,WindDir_D_WVT,WindDir_SD_WVT")
Sample (1,rain10min * 6,FP2)
FieldNames ("RainIntensity:mm/hour")
Maximum (1,RainIntensity5min,FP2,DisableRainfall_10,False)
Totalize (1,PR_meas,FP2,False)
Sample (1,PR_meas_Total,FP2)
EndTable
'********************TABEL 1 JAM***********************
DataTable (one_hour,1,-1)
DataInterval (0,1,Hr,10)
Sample (1,PTemp,FP2)
Average (1,TA_meas,FP2,False)
Average (1,RH_meas,FP2,False)
Average (1,PA_meas,IEEE4,False)
Average (1,PA_QFE,IEEE4,False)
Average (1,PA_QFF,IEEE4,False)
Average (1,SR_meas,IEEE4,False)
' Average (1,NR_meas,FP2,False)
Maximum (1,WS_meas,IEEE4,False,False)
Average (1,WS_meas,IEEE4,False)
Minimum (1,WS_meas,IEEE4,False,False)
'============================= m/s to knot
Maximum (1,ws_knot,IEEE4,False,False)
Average (1,ws_knot,IEEE4,False)
'==============================
Average (1,WD_meas,FP2,False)
WindVector (1,WS_meas,WD_meas,IEEE4,False,0,0,0)
FieldNames("WS_meas_S_WVT,WindDir_D1_WVT,WindDir_SD1_WVT")
Sample (1,rainHourly,FP2)
FieldNames ("CH_1Jam")
Maximum (1,RainIntensity5min,FP2,DisableRainfall_Hour,False)
Totalize (1,PR_meas,FP2,False)
EndTable
'********************TABEL 1 HARI***********************
DataTable (one_day,1,-1)'True,365)
DataInterval(0,1,Day,10)
Sample (1,PTemp,FP2)
Average (1,TA_meas,FP2,False)
Maximum(1,TA_meas,FP2,False,False)
Minimum(1,TA_meas,FP2,False,False)
Average (1,RH_meas,FP2,False)
Maximum(1,RH_meas,FP2,False,False)
Minimum(1,RH_meas,FP2,False,False)
Average (1,PA_meas,IEEE4,False)
Maximum (1,PA_meas,IEEE4,False,False)
Minimum (1,PA_meas,IEEE4,False,False)
Average (1,PA_QFE,IEEE4,False)
Maximum (1,PA_QFE,IEEE4,False,False)
Minimum (1,PA_QFE,IEEE4,False,False)
Average (1,PA_QFF,IEEE4,False)
Maximum (1,PA_QFF,IEEE4,False,False)
Minimum (1,PA_QFF,IEEE4,False,False)
Average (1,SR_meas,IEEE4,False)
Maximum (1,SR_meas,IEEE4,False,False)
Minimum (1,SR_meas,IEEE4,False,False)
'Average (1,NR_meas,FP2,False)
Maximum (1,WS_meas,IEEE4,False,False)
Average (1,WS_meas,IEEE4,False)
Minimum (1,WS_meas,IEEE4,False,False)
Average (1,WD_meas,FP2,False)
Average (1,ws_knot,IEEE4,False)
Maximum (1,ws_knot,IEEE4,False,False)
Minimum (1,ws_knot,IEEE4,False,False)
WindVector (1,WS_meas,WD_meas,IEEE4,False,0,0,0)
FieldNames("WS_meas_S_WVT,WindDir_D1_WVT,WindDir_SD1_WVT")
Sample (1,rainHourly,FP2)
FieldNames ("RainIntensity:mm/hour")
Maximum (1,RainIntensity5min,FP2,DisableRainfall_Hour,False)
Totalize(1,PR_meas,FP2,False)
EndTable
'=============================================================================
'================================ PROGRAM ====================================
'=============================================================================
'Main Program
BeginProg
SerialOpen (ComC1,9600,0,0,100) 'COM1 OPEN
SerialOpen (ComC3,9600,0,0,100) 'COM2 OPEN
'SerialOpen (ComC5,9600,0,0,100) 'COM3 OPEN
'SerialOpen (ComC7,9600,0,0,100) 'COM4 OPEN
Scan (scan_rate,Sec,3,0)
RealTime (time())
days = FormatFloat (time(3),"%02.0f")
months = FormatFloat (time(2),"%02.0f")
years = FormatFloat (time(1),"%02.0f")
hours = FormatFloat (time(4),"%02.0f")
minutes = FormatFloat (time(5),"%02.0f")
seconds = FormatFloat (time(6),"%02.0f")
PanelTemp (PTemp,50)
Battery (batt_volt)
PingModem = PingIP(IPModem,100)
PingAWSCenter = PingIP(AWSCenter,100)
'=============================================================================
'############### WIND SENSOR CALCULATION ####################################
'=============================================================================
If Wind_Sensor = 1 Then
'Sensor RMY 05103V Measurements (Voltage Output)
VoltSe (WS_meas,1,mV5000,5,1,0,_50Hz,Multip_WS,Offset_WS)
VoltSe (WD_meas,1,mV5000,6,0,0,_50Hz,Multip_WD,Offset_WD)
BrHalf (WD_meas,1,mV5000,6,Vx1,1,2500,True ,
0,_50Hz,mult_WD_frek,offset_WD_frek)
'=============================================================================
'######################## TRH SENSOR CALCULATION ###########################
'=============================================================================
If TRH_sensor = 1 Then
'HMP155A Output Voltage
VoltSe (TA_meas,1,mV5000,1,0,0,_50Hz,Multip_Temp,Offset_Temp)
VoltSe (RH_meas,1,mV5000,2,0,0,_50Hz,Multip_RH,Offset_RH)
EndIf
'Convert C to F
TA_Fah = 9/5*TA_meas+32
If TA_meas>40 Then TA_meas=Over
If TA_meas<10 Then TA_meas=NC
If RH_meas<5 Then RH_meas=NC
If RH_meas>100 Then RH_meas=Over
If TA_meas="NAN" Then TA_meas=0
If RH_meas="NAN" Then RH_meas=0
'=============================================================================
'############### PRESSURE SENSOR CALCULATION ################################
'=============================================================================
If Press_sensor = 1 Then
'PTB110 output voltage
VoltSe (PA_meas,1,mv5000,7,False,0,_50Hz,Multip_Press,Offset_Press)
'Tekanan dihitung berdasar ketinggian sensor tekanan dari landasan atau level
stasiun dan suhu udara sensor TA_meas
xQFE = SENSORLEVEL/(7996+(b*SENSORLEVEL)+(29.33*TA_meas))
PA_QFE = PA_meas*(EXP(1)^xQFE)
'=============================================================================
'#################### SR SENSOR CALCULATION ##################################
'=============================================================================
'CMP3, CMP6. SPLITE -2
VoltDiff (SR_meas,1,mV5000,2,True,0,_50Hz,Multip_SR,Offset_SR)
If SR_meas<0.3 Then SR_meas=0
'=============================================================================
'#################### TB SENSOR CALCULATION ##################################
'=============================================================================
'TB3 / TB4 / HYDROLOGICAL /
PulseCount (PR_meas,1,P2,1,0,Resolusi_TB,0)
PR_meas_Total = PR_meas + PR_meas_Total
ch=PR_meas+ch
hujan =PR_meas+hujan
chharian = PR_meas+chharian
'=============================================================================
SW12(SW12_1,1) ' SW12V 1 aktif
SW12(SW12_2,1) ' SW12V 2 aktif
If TimeIntoInterval (1,1440,Min) Then
Delay (0,10,Sec)
SW12(SW12_2,0) ' SW12V off di jam 00 menit 00
EndIf
'=============================================================================
'=========================== CALL TABLE ======================================
'=============================================================================
CallTable ten_second
CallTable one_minute
CallTable ten_minute
CallTable one_hour
CallTable one_day
CallTable MXTurbo_10M
CallTable Ethernet_10M
'=============================================================================
'========================== RAIN RESET =======================================
'=============================================================================
'reset rain every 10 minute
If IfTime(0,10,Min) Then
rain10min = 0
ch=0
EndIf
'=============================================================================
'====================== VARIABEL RESET =======================================
'=============================================================================
If (hours<23) Then
days_1 = days
months_1 = months
years_1 = years
EndIf
NextScan
'=============================================================================
'============================= SEND DATA =====================================
'=============================================================================
SlowSequence
Do
Delay(1,10,uSec)
If Modem <= 3 Then
'*****MODEM Ethernet******
FTPdate = days&"/"&months&"/"&years
FTPtime = hours&":"&minutes&":"&seconds
FTPname = Kode_Stasiun&years&months&days&hours&minutes&".txt"
FTPResult=FTPClient
(AWSCenter,Folder_FTP,Pass_FTP,Attach_File,FTPname,8,0,Waktu_Pengiriman, Min,1015)
EndIf
'=============================================================================
'========================== OUTPUT DISPLAY ===================================
'=============================================================================
If Display = 1 Then
'*****DISPLAY 7 Segment******
If ten_second.output (1.1) Then
GetRecord (ten_second_out(),ten_second,1)
days = FormatFloat (time(3),"%02.0f")
months = FormatFloat (time(2),"%02.0f")
years = FormatFloat (time(1),"%02.0f")
hours = FormatFloat (time(4),"%02.0f")
minutes = FormatFloat (time(5),"%02.0f")
seconds = FormatFloat (time(6),"%02.0f")
avTA_out = FormatFloat (ten_second_out(1),"%0.1f")
avRH_out = FormatFloat (ten_second_out(2),"%0.1f")
avPA_out = FormatFloat (ten_second_out(3),"%0.1f")
avSR_out = FormatFloat (ten_second_out(4),"%0.1f")
avWSmeas_out = FormatFloat (ten_second_out(5),"%0.1f")
avWDmeas_out = FormatFloat (ten_second_out(6),"%0.0f")
tot_ch_out = FormatFloat (ten_second_out(7),"%0.1f")
'Compile
ten_second_msg_out =
days+"/"+months+"/"+years+","+hours+":"+minutes+":"+seconds+","+avWDmeas_out+","+av
WSmeas_out+","+avTA_out+","+avRH_out+","+avPA_out+","+avSR_out+","+tot_ch_out'+CHR(
10)+CHR(13)
SerialOut (ComC5,ten_second_msg_out,"",0,0) ' Com C5/C6
(Display 7 Segment)
EndIf
EndIf
Loop
EndProg
'=============================================================================
'=============================== FINISH ======================================
'=============================================================================