Professional Documents
Culture Documents
Lamp Iran
Lamp Iran
+3V3
U3A
R4 PA0_UC2 23 35 PB0_UC2
100K PA0-WKUP(PA0) PB0
PA1_UC2 24 36 PB1_UC2
PA1 PB1
PA2_UC2 25 37 BOOT1_UC2
PA2 PB2-BOOT1(PB2)
PA3_UC2 26 89 SPI1_SCK
PA3 PB3(JTDO/TRACESWO)
NRST_UC2 PA4_UC2 29 90 SPI1_CS1
PA4 PB4(NJTRST)
PA5_UC2 30 91 SPI1_MOSI
PA5 PB5
PA6_UC2 31 92 I2C1_SCL
S1 PA6 PB6
PA7_UC2 32 93 I2C1_SDA
C1 SW-PB PA7 PB7
100nF DO_1_UC 67 95 SEL_ID_RTU
PA8 PB8
USB_FS_VBUS_UC2 68 96 DIP_SW_D7
PA9 PB9
USB_FS_ID_UC2 69 47 DI_6_Uc
PA10 PB10
USB_FS_DM_UC2 70 48 PB11_UC2
PA11 PB11
USB_FS_DP_UC2 71 51 PB12_UC2
PA12 PB12
SWDIO_UC2 72 52 PB13_UC2
GND PA13(JTMS-SWDIO) PB13
SWDCLK_UC2 76 53 DI_5_Uc
PA14(JTCK-SWCLK) PB14
SPI3_CS 77 54 DI_4_Uc
PA15(JTDI) PB15
PC0_UC2 15 81 PD0_UC2
PC0 PD0
PC1_UC2 16 82 PD1_UC2
PC1 PD1
PC2_UC2 17 83 PD2_UC2
PC2 PD2
PC3_UC2 18 84 PD3_UC2
PC3 PD3
J2 PC4_UC2 33 85 DATA_CONTROL_MAX485
PC4 PD4
GND PC5_UC2 34 86 USART2_TX
1 PC5 PD5
SWDIO_UC2 USART6_TX 63 87 USART2_RX
2 PC6 PD6
SWDCLK_UC2 USART6_RX 64 88 SPI1_CS2
3 PC7 PD7
SWD
+3V3
4
DO_3_UC 65 55 DI_3_Uc
PC8 PD8
DO_2_UC 66 56 DI_2_Uc
PC9 PD9
SPI3_SCK 78 57 DI_1_Uc
PC10 PD10
SPI3_MISO 79 58 DO_8_UC
PC11 PD11
OSC32_OUT_UC2 SPI3_MOSI 80 59 DO_7_UC
PC12 PD12
PC13_UC2 7 60 DO_6_UC
PC13 PD13
OSC32_IN_UC2 OSC32_IN_UC2 8 61 DO_5_UC OSCIN_UC2
PC14-OSC32_IN(PC14) PD14
OSC32_OUT_UC2 9 62 DO_4_UC OSCOUT_UC2
PC15-OSC32_OUT(PC15) PD15
32.768K
DIP_SW_D6 97 Y1
PE0
DIP_SW_D5 98 12 OSCIN_UC2
PE1 PH0-OSC_IN(PH0)
Y2 DIP_SW_D4 1 13 OSCOUT_UC2
C2 C3 PE2 PH1-OSC_OUT(PH1)
DIP_SW_D3 2 8MHz
20pF 20pF PE3 C4 C5
DIP_SW_D2 3 94 BOOT0_UC2
PE4 BOOT0 20pF 1uF
DIP_SW_D1 4
PE5
DIP_SW_D0 5 14 NRST_UC2
PE6 NRST
DI_15_Uc 38
GND PE7
49 VCAP_1_UC2
VCAP_1 GND
DI_14_Uc 39 73 VCAP_2_UC2
PE8 VCAP_2
DI_13_Uc 40
PE9
DI_12_Uc 41
PE10 C6 C7
DI_11_Uc 42
PE11 2.2uF 2.2uF
DI_10_Uc 43
PE12
DI_9_Uc 44
PE13
JP2 JUMPER DI_8_Uc 45
PE14 GND GND
DI_7_Uc 46
PE15
STM32F407VGT6
1
J3 +5V_USB
1 R33 100 USB_FS_VBUS_UC2
CONNECTOR_USB
V+
2 R34 100 USB_FS_DM_UC2
D-
3 R35 10K USB_FS_DP_UC2
D+
4
GND
GND
GND
GND
6
5
+3V3 +3V3
JP5
PD1_UC2
1 +3V3
PD0_UC2
2
SPI3_MOSI
HEADER 10
3 R42 R43
A
9 PC13_UC2
GND R49 R50
10 100
510 510
1 JP3 1 JP4
2 2
JUMPER JUMPER
GND GND
J22 JMP_BATT
1
2
U3B +3V3
VBAT_RTC_STM 6 21
VBAT VREF+
C16 C17 C18 C19 C20 C21 C22 C23 11
100nF 100nF 100nF 100nF 100nF 100nF 100nF 100nF +3V3 VDD C24 C25
19
VDD 100nF 1uF
28 10
BT1 VDD VSS
50 27
3V GND VDD VSS
75 74
VDD VSS GND
100 99
VDD VSS GND
+3V3
22 20
VDDA VSSA
GND C14 C15 STM32F407VGT6
100nF 1uF
GND
Keterangan:
RANGKAIAN SISTEM MINIMUM
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-001
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
IC-REG-AMS1117
F1 U 1 IC-REG-78XX +5V U2 +3V3
1 3 3 2 R62
GND
GND
IN OUT IN OUT
4K7
A
FUSE2 +3V3 J13
D40 C8 C9 C10 C11 C12 C13 D41
2 1
3V3
DIODE 100N 100N 100uf 100N 100N 100uf LED_SMD
2
C
GND
U30 +5V
L1 R142
1 2
VIN OUT
J4 5 33uH
D56
4K7
A
ON /OFF
+Vin 3 4
1 GND FB
Input DC
C26
2 220uF ICREGULATOR3A
C28 C29 C50
LED_SMD
D52 100n 100uf 100uf
C
GND GND GND DIODE SCHOTTKY
GND
U31 +3V3
L2
1 2
VIN OUT
5 33uH
ON /OFF
3 4
GND FB
ICREGULATOR3A
C27 C30 C51
D53
100n 100uf 100uf
DIODE SCHOTTKY
GND
GND
GND GND GND
R143 1K
R144 500
U42 +V_ADJ
L3 R145
1 2
VIN OUT
5 33uH 4K7
A
ON /OFF
3 4
GND FB D58
ICREGULATOR3A LED_SMD
C48 C49
D57 100n 100uf
C
GND
Keterangan:
RANGKAIAN DC TO DC
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-002
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
+3V3
U1
R1 8
10K VCC
7 +5V
VB R2
2
A
USART2_RX 6 330
C
3 RX_OPTO
C
5
E
IC_6N136 +5V
GND
+3V3
+5V R16
20k
USART2_RX_5V
R3 U27 U28 +5V
330 8 R6 1 8 J1
VCC 10K RO +5V
2 7 MAX485_B
RE B 1
7 3 6 MAX485_A
VB DE A 2
RS485
2 4 5
A DI GND 3
6 TX_OPTO
C
MAX 485
USART2_TX 3 GND R17 GND
C 10K
5
E
IC_6N136
1 JP1
GND
GND
+3V3 2
+5V JUMPER
R18
R8 120
330 R11
10K
U29
1 6
A B
5
C
DATA_CONTROL_MAX485 2
C
3
NC 4
E
IC-4N35
GND
Keterangan:
RANGKAIAN KOMUNKASI RS485
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-003
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
RTC DS1307 DAN EEPROM DATA CONCENTRATOR
+5V +5V
+3V3 +5V
R112 R113
R114 R115 4K7 10K
10K 10K
G
GND
Q1 +5V U34
8 1
+5V S0
I2C1_SDA SDA1_H_UC1 7 2
WP S1
SCL1_H_UC1 6 3
SCL S2
D
S
BSS138 SDA1_H_UC1 5 4
SDA GND
IC-AT24C256
+3V3 +5V GND
+5V
R116 R117
10K 10K
G
Q3
8
U35 C44
I2C1_SCL SCL1_H_UC1 SCL1_H_UC1 6 IC-DS1307
SCL
+5V
SDA1_H_UC1 5 1
SDA X1
D
S
BSS138 Y3 18pF
32.768KHz
GND
7 2 C45
GND SOUT X2
+5V
GND
VBAT_RTC_STM 3
VBAT
18pF
C47 C46
4
100nF 100nF
GND
GND
Keterangan:
RANGKAIAN RTC DAN EEPROM
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-004
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
U36
+5V
1 14 VOUT_DAC2
VDD VOUT A
10 VOUT_DAC1
VOUT B
13
VREF A
11
VREF B
MCP4922
SPI1_MOSI R118 1 5
SDI
SPI1_SCK R119 1 4 2
SCK NC
SPI1_CS1 R120 1 3 6
CS NC
7
NC
8
LDAC
9 12
SHDN VSS
DACMCP4922 GND
GND
+V_ADJ
J8
1
V/I
2
R125
150
R126
250
R127
100
+V_ADJ
Analog_OUT1
+V_ADJ
U38B
8
DQ4
LM358P
8
U38A 6 XXXX
2 LM358P 7 G
B
1 5
A
VOUT_DAC1 3 S
4
4
GND
GND
R124
500
GND
Keterangan:
RANGKAIAN DAC MCP4922
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-005
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
RX_OPTO
R108
+5V 1
1 DCD 1 uf 1 uf
R109
6 DSR
+5V
J23
2 RXD_RS232 GND
16
2
6
7 RTS U32
RES1
3 TXD_RS232 13 12 D54
DB9
R1IN V- R1OUT
VCC
V+
8 CTS TXD_RS2328 9
R2IN R2OUT
RES1
4 DTR 11 14 LED
T1IN T1OUT
9 RI 10 7 RXD_RS232
T2IN T2OUT
5 GND D55 LED 1 3
GND
C1+ C1-
4 5
C2+ C2-
+5V
IC-MAX232
15
TX_OPTO R111 1
C43
100nF
J24 GND
RXD_RS232
1 GND
TXD_RS232 C41 1uF
+
RS232
2
3
C42 1uF
+
GND
Keterangan:
RANGKAIAN KOMUNIKASI RS232
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-006
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
+3V3
U33
ESP-8266
7
VCC
TX_ESP8266 1
TX
RX_ESP8266 8 6
ESP-8266
RX GPIO_0
4
GPIO_2
3
CH_PD
RST_ESP8266 5
RST
GND
S3 1 TX_ESP8266
USART6_RX R140 1 2
3 TX_SIM900
2
6 RX_ESP8266
USART6_TX R141 1 5
4 RX_SIM900
SW-DPDT GND
M1 MODULE SIM900
+5V
1
VCC
MODULE SIM900
2
DTR
TX_SIM900 3
TX
RX_SIM900 4
RX
5
SPEAKER
6
MICROPHONE
7
RESET
8
GND
GND
Keterangan:
RANGKAIAN MODUL SIM900 DAN ESP8266
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-007
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
DIP SWITCH
S2
16 1 DIP_SW_D0
15 2 DIP_SW_D1
14 3 DIP_SW_D2
13 4 DIP_SW_D3
12 5 DIP_SW_D4
11 6 DIP_SW_D5
10 7 DIP_SW_D6
9 8 DIP_SW_D7
SW-DIP8
GND
J5
SELECT_ID
SEL_ID_RTU
1
2
GND
Keterangan:
RANGKAIAN DIP SWITCH
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-008
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
+3V3
R7
1K
A
D2
LED_SMD
U4
R13
C
DI_1_In 10K D5 DIODE 1 4 DI_1_Uc
A C
Com_DI_1 2
C
3
E
IC-P521
GND
Keterangan:
RANGKAIAN DIGITAL INPUT
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-009
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
+3V3
+5V_RLY
D1 RLY_COM1
LED
D4
1N4007 K1
RELAY-DPDT_N
+3V3 +5V
NC2
NO2
NC1
NO1
R5 U2
1K 1 4
A C
NO_RLY1
R15
10K
GND GND
Keterangan:
RANGKAIAN DIGITAL OUTPUT
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-010
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
ANALOG_IN1 R84 PB0_UC2
150k
R86 R87
110 39k C31
100N
J14
mA
1 GND
GND 2
V
3
CONECTOR3
Keterangan:
RANGKAIAN ANALOG INPUT
RTU
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 RTU-ARM-011
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
JP9 JUMPER
+5V
2
U1A
J1 PA0_UC1 23 35 PB0_UC1
PA0-WKUP(PA0) PB0
1 PA1_UC1 24 36 PB1_UC1
CONNECTOR_USB
V+ PA1 PB1
2 R6 100 USB_HS_DM_UC1 PA2_UC1 25 37 BOOT1_UC1
D- PA2 PB2-BOOT1(PB2)
3 R7 100 USB_HS_DP_UC1 PA3_UC1 26 89 SPI3_SCK_UC1
D+ PA3 PB3(JTDO/TRACESWO)
4 PA4_UC1 29 90 SPI3_MISO_UC1
GND PA4 PB4(NJTRST)
PA5_UC1 30 91 SPI3_MOSI_UC1
PA5 PB5
PA6_UC1 31 92 I2C1_SCL
GND
GND
USB_FS_VBUS_UC1 68 96 DIP_SW_D7
PA9 PB9
USB_FS_ID_UC1 69 47 PB10_UC1
PA10 PB10
USB_FS_DM_UC1 70 48 PB11_UC1
PA11 PB11
USB_FS_DP_UC1 71 51 PB12_UC1
GND PA12 PB12
SWDIO_UC1 72 52 PB13_UC1
PA13(JTMS-SWDIO) PB13
SWDCLK_UC1 76 53 USB_HS_DM_UC1
PA14(JTCK-SWCLK) PB14
PA15_UC1 77 54 USB_HS_DP_UC1 J20
PA15(JTDI) PB15
CONECTOR4
PB11_UC1 R73 RES1
1
PC0_UC1 15 81 PD0_UC1 PB10_UC1 R72 RES1
PC0 PD0 2
PC1_UC1 16 82 PD1_UC1
PC1 PD1 +5V 3
PC2_UC1 17 83 PD2_UC1
PC2 PD2 4
PC3_UC1 18 84 PD3_UC1
PC3 PD3
J2 PC4_UC1 33 85 PD4_UC1
PC4 PD4 GND
+3V3 PC5_UC1 34 86 PD5_UC1
1 PC5 PD5
SWDCLK_UC1 PC6_UC1 63 87 PD6_UC1
2 PC6 PD6
SWDIO_UC1 PC7_UC1 64 88 PD7_UC1
3 PC7 PD7
SWD
GND
4
PC8_UC1 65 55 PD8_UC1
PC8 PD8
PC9_UC1 66 56 PD9_UC1
PC9 PD9
PC10_UC1 78 57 PD10_UC1
PC10 PD10
PC11_UC1 79 58 PD11_UC1
PC11 PD11
OSC32_OUT_UC1 PC12_UC1 80 59 PD12_UC1
PC12 PD12
PC13_UC1 7 60 PD13_UC1
PC13 PD13
OSC32_IN_UC1 OSC32_IN_UC1 8 61 PD14_UC1 OSCIN_UC1
PC14-OSC32_IN(PC14) PD14
OSC32_OUT_UC1 9 62 PD15_UC1 OSCOUT_UC1
PC15-OSC32_OUT(PC15) PD15
32.768K
DIP_SW_D6 97 Y2
PE0
DIP_SW_D5 98 12 OSCIN_UC1
PE1 PH0-OSC_IN(PH0)
Y3 DIP_SW_D4 1 13 OSCOUT_UC1
C5 C6 PE2 PH1-OSC_OUT(PH1)
DIP_SW_D3 2 8MHz
20pF 20pF PE3 C7 C8
DIP_SW_D2 3 94 BOOT0_UC1
PE4 BOOT0 20pF 20pF
DIP_SW_D1 4
PE5
DIP_SW_D0 5 14 NRST_UC1
PE6 NRST
PE7_UC1 38
GND PE7
49 VCAP_1_UC1
VCAP_1 GND
PE8_UC1 39 73 VCAP_2_UC1
PE8 VCAP_2
PE9_UC1 40
PE9
PE10_UC1 41
PE10 C9 C10
PE11_UC1 42
PE11 2.2uF 2.2uF
PE12_UC1 43
PE12
PE13_UC1 44
PE13
JP1 JUMPER PE14_UC1 45
PE14 GND GND
PE15_UC1 46
PE15
STM32F407VGT6
1
J4 +5V
1
CONNECTOR_USB
V+
2 R14 10K USB_FS_DM_UC1
D-
3 R15 100 USB_FS_DP_UC1
D+
4
GND
GND
GND
GND
6
5
GND J16
PA5_UC1
1
PA6_UC1
2
PA7_UC1
3
PC4_UC1
CONECTOR10
4
PC5_UC1
5
PB0_UC1
6
PB1_UC1
Rangkaian Reset Rangkaian Konfigurasi Boot +3V3
7
8
+5V
9
GND
10
+3V3
+3V3 +3V3
R22
100K R23 R24
10K 10K
NRST_UC1
BOOT0_UC1 BOOT1_UC1
S1
J18 C11 SW-PB R25 R26
100nF 510 510
RESET
1
J19
2
CONECTOR3
PD2_UC1
JP3 JP4 1
1 1 PC12_UC1
2
3
GND GND 2 2
JUMPER JUMPER GND
GND GND
Keterangan:
RANGKAIAN SISTEM MINIMUM
Data Concentrator
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 DTC-ARM-001
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
IC-REG-AMS1117
F1 U 1 IC-REG-78XX +5V U2 +3V3
1 3 3 2 R49
GND
GND
IN OUT IN OUT
4K7
A
FUSE2 +3V3 J11
D3 C29 C30 C31 C32 C33 C34 D4
1
3V3
DIODE 100N 100N 100uf 100N 100N 100uf LED_SMD
2
C
GND
U8 +5V
L1 R50
1 2
VIN OUT
J12 5 33uH 4K7
A
ON /OFF
D5
+Vin 3 4
1 GND FB
Input DC
C35
2 220uF ICREGULATOR3A
C36 C37 C38
LED_SMD
D6 100n 100uf 100uf
C
GND GND GND DIODE SCHOTTKY
GND
U9 +3V3
L2
1 2 +3V3 J24
VIN OUT
V_ADJ
5 33uH
ON /OFF 1
3 4
GND FB 2
ICREGULATOR3A
C39 C40 C41 GND
D7
100n 100uf 100uf
DIODE SCHOTTKY
GND +3V3 J25
V_ADJ
1
2
GND
GND
GND GND GND
V_ADJ
V_ADJ
1 1
R51 1K
2 2
R52 500
GND GND
U10 +V_ADJ
L3 R53
1 2
VIN OUT
5 33uH 4K7 +V_ADJ J23
A
ON /OFF
V_ADJ
3 4
GND FB D8 1
LED_SMD 2
ICREGULATOR3A
C42 C43
D9 100n 100uf GND
C
GND
Keterangan:
RANGKAIAN POWER SUPPLY
Data Concentrator
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 DTC-ARM-002
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
+3V3 +5V
10K
Q6
PD6_UC1 R29
20k
D
S
BSS138
U5 +5V
+3V3 +5V 1 8 J6
RO +5V
2 7
RE B 3
3 6
DE A 2
4 5
R30 DI GND 1
R31
10K 100
G
BSS138
1 JP5
+3V3 +5V
GND
2
JUMPER
R33 R34
10K 10K R35
G
Q8 120
PD5_UC1
S
BSS138
Keterangan:
RANGKAIAN KOMUNIKASI RS485
Data Concentrator
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 DTC-ARM-003
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
RTC DS1307 DAN EEPROM DATA CONCENTRATOR
+5V +5V
+3V3 +5V
R1 R2
R3 R4 4K7 10K
10K 10K
G
GND
Q1 +5V U2
8 1
+5V S0
I2C1_SDA SDA1_H_UC1 7 2
WP S1
SCL1_H_UC1 6 3
SCL S2
D
S
BSS138 SDA1_H_UC1 5 4
SDA GND
IC-AT24C256
+3V3 +5V GND
+5V
R8 R9
10K 10K
G
Q2
8
U3 C1
I2C1_SCL SCL1_H_UC1 SCL1_H_UC1 6 IC-DS1307
SCL
+5V
SDA1_H_UC1 5 1
SDA X1
D
S
BSS138 Y1 18pF
32.768KHz
GND
7 2 C2
GND SOUT X2
+5V
GND
VBAT_RTC_STM 3
VBAT
18pF
C4 C3
4
100nF 100nF
GND J17
I2C1_SCL GND
1
CONECTOR5
I2C1_SDA
2
+3V3
3
+5V
4
GND
5
Keterangan:
RANGKAIAN RTC DAN EEPROM
Data Concentrator
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 DTC-ARM-004
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
PD6_UC1
R46
+5V 1
1 DCD_1 1 uf 1 uf
6 DSR_1
R47
+5V GND
2 RXD_RS232_1
J9
16
2
6
7 RTS_1 U7
RES1
3 TXD_RS232_1 13 12 D1
DB9
R1IN V- R1OUT
VCC
V+
8 CTS_1 TXD_RS232_1
8 9
R2IN R2OUT
RES1
4 DTR_1 11 14 LED
T1IN T1OUT
9 RI_1 10 7 RXD_RS232_1
T2IN T2OUT
5 GND D2 LED 1 3
GND
C1+ C1-
4 5
C2+ C2-
+5V
IC-MAX232
15
PD5_UC1 R48 1
C26
100nF
J10 GND
RXD_RS232_1
1 GND
TXD_RS232_1 C27 1uF
+
RS232
2
3
C28 1uF
+
GND
Keterangan:
RANGKAIAN KOMUNIKASI RS232
Data Concentrator
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 DTC-ARM-005
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
+3V3 M2
WIZ550S2E
1
3V3
PD2_UC1 2 17
TXD GND
PC12_UC1 3 16
RXD GND
4 15
nRTS nHWTIG
5 14
n_CTS nFACRST
6 13
STATUS2 nSYSRST GND
7 12
STATUS1 RSVD2
8 11
NC RSVD1
9 10
GND 3V3 +3V3
Keterangan:
RANGKAIAN INDIKATOR LED
Data Concentrator
Skala : Diperiksa : No.
A4
POLITEKNIK 1:1 DTC-ARM-007
NEGERI Tgl :
BANDUNG Digambar:
02-07-2018 D4-TOI
ADRI FD
S2
16 1 DIP_SW_D0
15 2 DIP_SW_D1
14 3 DIP_SW_D2
13 4 DIP_SW_D3
12 5 DIP_SW_D4
11 6 DIP_SW_D5
10 7 DIP_SW_D6
9 8 DIP_SW_D7
SW-DIP8
GND
J3
SELECT_ID
SEL_ID
1
2
GND
uint8_t ReadIDRTU_HW() {
uint8_t _address = 0;
if (!HAL_GPIO_ReadPin(DIP_SW_D0_GPIO_Port, DIP_SW_D0_Pin)) {
_address = _address + 1;
}
if (!HAL_GPIO_ReadPin(DIP_SW_D1_GPIO_Port, DIP_SW_D1_Pin)) {
_address = _address + 2;
}
if (!HAL_GPIO_ReadPin(DIP_SW_D2_GPIO_Port, DIP_SW_D2_Pin)) {
_address = _address + 4;
}
if (!HAL_GPIO_ReadPin(DIP_SW_D3_GPIO_Port, DIP_SW_D3_Pin)) {
_address = _address + 8;
}
if (!HAL_GPIO_ReadPin(DIP_SW_D4_GPIO_Port, DIP_SW_D4_Pin)) {
_address = _address + 16;
}
if (!HAL_GPIO_ReadPin(DIP_SW_D5_GPIO_Port, DIP_SW_D5_Pin)) {
_address = _address + 32;
}
if (!HAL_GPIO_ReadPin(DIP_SW_D6_GPIO_Port, DIP_SW_D6_Pin)) {
_address = _address + 64;
}
if (!HAL_GPIO_ReadPin(DIP_SW_D7_GPIO_Port, DIP_SW_D7_Pin)) {
_address = _address + 128;
}
return _address;
}
int Mantissa;
float HasilMantissa;
//int i;
long int pangkat[20] = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048,
4096, 8192, 16384, 32768, 65536 };
//NilaiFloat = 220.154321465;
if (NilaiFloat < 0) {
sign = 1;
NilaiFloat = NilaiFloat * (-1);
} else {
sign = 0;
}
TempInt = NilaiFloat;
TempFloat = NilaiFloat;
TempFloat = TempFloat - TempInt;
if (TempFloat < 0) {
TempFloat = TempFloat * (-1);
}
// Serial.print(TempInt); Serial.print("\t");
Serial.println(TempFloat);
//TxtLetakExponen = nExponen;
nilai_exponen = nExponen + 127; // 'nExponen + bias(127)
//
'============================================================================
============================
hasilFloatingPoint[0] = sign;
for (int i = 1; i <= 8; i++) {
hasilFloatingPoint[i] = bin_exponen[8 - i];
}
//'konversi ke byte1
for (int i = 0; i <= 7; i++) {
if (hasilFloatingPoint[i] == 1) {
hasilfloatingPointByte[0] = hasilfloatingPointByte[0]
+ pangkat[7 - i];
} else {
hasilfloatingPointByte[0] = hasilfloatingPointByte[0];
}
if (hasilFloatingPoint[i + 8] == 1) {
hasilfloatingPointByte[1] = hasilfloatingPointByte[1]
+ pangkat[7 - i];
} else {
hasilfloatingPointByte[1] = hasilfloatingPointByte[1];
}
if (hasilFloatingPoint[i + 16] == 1) {
hasilfloatingPointByte[2] = hasilfloatingPointByte[2]
+ pangkat[7 - i];
} else {
hasilfloatingPointByte[2] = hasilfloatingPointByte[2];
}
if (hasilFloatingPoint[i + 24] == 1) {
hasilfloatingPointByte[3] = hasilfloatingPointByte[0]
+ pangkat[7 - i];
} else {
hasilfloatingPointByte[3] = hasilfloatingPointByte[3];
}
}
}
// hasil_floatingPoint = 12.0;
return hasil_floatingPoint;
hasil = 1;
return hasil;
}
hasil = 1;
if (b >= 0) {
for (int i = 1; i <= b; i++) {
hasil = hasil * a;
}
} else {
b = b * (-1);
for (int i = 1; i <= b; i++) {
hasil = hasil * a;
}
hasil = 1.0 / hasil;
}
return hasil;
}
UART_HandleTypeDef huart2;
UART_HandleTypeDef huart4;
UART_HandleTypeDef huart3;
UART_HandleTypeDef huart6;
uint8_t buffTxMB_Master[14];
uint8_t buffRxMB_Master[50];
uint8_t bufferRxMB_Master[2];
uint8_t COM_DataConc_FC03[900];
uint8_t FunctionCode_MBPoll[300]; //Jumlah Poll maksimum adalah 300
uint8_t SlaveID_MBPoll_FC01[300];
uint16_t Str_Add_MBPoll_FC01[300]; //Jumlah Poll maksimum adalah 300
uint16_t Length_MBPoll_FC01[300]; //Jumlah Poll maksimum adalah 300
uint16_t TotalAddressFC01Remap;
uint8_t SlaveID_MBPoll_FC02[300];
uint16_t Str_Add_MBPoll_FC02[300]; //Jumlah Poll maksimum adalah 300
uint16_t Length_MBPoll_FC02[300]; //Jumlah Poll maksimum adalah 300
uint16_t TotalAddressFC02Remap;
uint8_t SlaveID_MBPoll_FC03[300];
uint16_t Str_Add_MBPoll_FC03[300]; //Jumlah Poll maksimum adalah 300
uint16_t Length_MBPoll_FC03[300]; //Jumlah Poll maksimum adalah 300
uint16_t TotalAddressFC03Remap;
uint8_t SlaveID_MBPoll_FC04[300];
uint16_t Str_Add_MBPoll_FC04[300]; //Jumlah Poll maksimum adalah 300
uint16_t Length_MBPoll_FC04[300]; //Jumlah Poll maksimum adalah 300
uint16_t TotalAddressFC03Remap;
uint16_t JumlahPoll_FC01;
uint16_t JumlahPoll_FC02;
uint16_t JumlahPoll_FC03;
uint16_t JumlahPoll_FC04;
uint16_t Add_MBPoll_FC01_Remap[300];
uint16_t Add_MBPoll_FC02_Remap[300];
uint16_t Add_MBPoll_FC03_Remap[300];
uint16_t Add_MBPoll_FC04_Remap[300];
uint16_t DataFC04_Remap[100];
uint16_t DataFC03_Remap[100];
_Bool DataFC02[100];
_Bool DataFC01[100];
uint16_t ValueRegFC03_Remap[300];
uint8_t CounterRx_MBPoll;
uint8_t Length_MBPoll_Response;
void InisialisasiMBPoll_FormatPLC() {
//Pembacaaan Tegangan dari Voltage A-B sampai Voltage L-N Avg
//Pembacaan THD Tegangan
//UNTUK PM800
COM_DataConc_FC03[0] = 2;
SlaveID_MBPoll_FC03[0] = 1;
FunctionCode_MBPoll[0] = 3;
Str_Add_MBPoll_FC03[0] = 1124; //3019
Length_MBPoll_FC03[0] = 4; //2x8 (karena floating point)
COM_DataConc_FC03[1] = 2;
SlaveID_MBPoll_FC03[1] = 1;
FunctionCode_MBPoll[1] = 4;
Str_Add_MBPoll_FC03[1] = 1100; //Current PM800
Length_MBPoll_FC03[1] = 4; //2x8 (karena floating point)
COM_DataConc_FC03[2] = 2;
SlaveID_MBPoll_FC03[2] = 1;
FunctionCode_MBPoll[2] = 4;
Str_Add_MBPoll_FC03[2] = 1180; //Current PM800
Length_MBPoll_FC03[2] = 1; //2x8 (karena floating point)
JumlahPoll_FC03 = 6;
Add_MBPoll_FC03_Remap[0] = 0;
for (int i = 0; i < (JumlahPoll_FC03); ++i) {
Add_MBPoll_FC03_Remap[i + 1] = Add_MBPoll_FC03_Remap[i]
+ Length_MBPoll_FC03[i];
}
TotalAddressFC03Remap = Add_MBPoll_FC03_Remap[JumlahPoll_FC03];
void ReadMBPoll() {
/*
* _Format
* jika bernilai 0 => maka merupakan Format Protokol
* jika bernilai 1 => maka merupakan Format PLC (Starting Address - 1)
*/
HAL_GPIO_WritePin(DataControl_UART4_GPIO_Port,
DataControl_UART4_Pin, 1);
HAL_UART_Transmit(&huart4, (uint8_t *) buffTxMB_Master, 8,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART4_GPIO_Port,
DataControl_UART4_Pin, 0);
HAL_GPIO_WritePin(DataControl_UART4_GPIO_Port,
DataControl_UART4_Pin, 1);
HAL_UART_DMAStop(&huart4);
// HAL_Delay(DelayBetwenPoll);
HAL_GPIO_WritePin(DataControl_UART3_GPIO_Port,
DataControl_UART3_Pin, 1);
HAL_UART_DMAStop(&huart4);
//}
HAL_Delay(DelayBetwenPoll);
if (PortKomunikasi == 3) { //UART 4
HAL_GPIO_WritePin(DataControl_UART4_GPIO_Port,
DataControl_UART4_Pin,
1);
HAL_UART_Transmit(&huart4, (uint8_t *) buffTxMB_Master, 8,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART4_GPIO_Port,
DataControl_UART4_Pin,
0);
HAL_UART_Receive_DMA(&huart4, (uint8_t *) buffRxMB_Master,
Length_MBPoll_Response);
HAL_Delay(Response_Timeout); //tundaan waktu
HAL_UART_DMAStop(&huart4);
// DataFC03_Remap[11]=100;
} else if (PortKomunikasi == 5) { //UART 6
HAL_GPIO_WritePin(DataControl_UART6_GPIO_Port,
DataControl_UART6_Pin,
1);
HAL_UART_Transmit(&huart6, (uint8_t *) buffTxMB_Master, 8,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART6_GPIO_Port,
DataControl_UART6_Pin,
0);
HAL_UART_Receive_DMA(&huart6, (uint8_t *) buffRxMB_Master,
Length_MBPoll_Response);
HAL_Delay(Response_Timeout); //tundaan waktu
HAL_UART_DMAStop(&huart6);
}
DataFC03_Remap[Add_MBPoll_FC03_Remap[_IndexPoll] + i]
+ buffRxMB_Master[4 + (i * 2)];
}
RTC DS1307
#include "stm32f4xx_hal.h"
#include "rtc_ds1307_stm32f407_adri.h"
I2C_HandleTypeDef hi2c1;
unsigned char DataBufferSetRTCDS1307[5];
uint8_t DataHasilPembacaanRTCDS1307[8];
void BacaDataRTC(void) {
VarHariDS1307 = KonversiBCD2DEC(DataHasilPembacaanRTCDS1307[3]);
VarTangalDS1307 = KonversiBCD2DEC(DataHasilPembacaanRTCDS1307[4]);
VarBulanDS1307 = KonversiBCD2DEC(DataHasilPembacaanRTCDS1307[5]);
VarTahunDS1307 = KonversiBCD2DEC(DataHasilPembacaanRTCDS1307[6]);
}
DataBufferSetRTCDS1307[0] = KonversiDEC2BCD(VSetDetik);
DataBufferSetRTCDS1307[1] = KonversiDEC2BCD(VSetMenit);
DataBufferSetRTCDS1307[2] = KonversiDEC2BCD(VSetJam);
DataBufferSetRTCDS1307[0] = KonversiDEC2BCD(VSetTanggal);
DataBufferSetRTCDS1307[1] = KonversiDEC2BCD(VSetBulan);
DataBufferSetRTCDS1307[2] = KonversiDEC2BCD(VSetTahun);
DataBufferSetRTCDS1307[0] = KonversiDEC2BCD(VSetHari);
EEPROM AT24C256
#include "stm32f4xx_hal.h"
#include "eeprom_at24c256_stm32f407vg.h"
I2C_HandleTypeDef hi2c1;
uint8_t dataReceiveEEPROMI2C_256[2];
uint8_t Hasil;
HAL_I2C_Mem_Write(&hi2c1, 0xA0, AlamatMemory, 2, Hasil, 0, 0xfffff);
HAL_I2C_Mem_Read(&hi2c1, 0xA1, AlamatMemory, 2, Hasil, 1, 0xfffff);
return Hasil;
}
EEPROM AT24C8
#include "stm32f4xx_hal.h"
#include "eeprom_at24c8_stm32f407vg.h"
I2C_HandleTypeDef hi2c1;
uint8_t dataReceiveEEPROMI2C;
HAL_FLASH_Lock();
}
long CRC_HI_USB = 0;
long CRC_LOW_USB = 0;
long TempCRC_USB;
long CRC_MODBUS_USB_16BIT[50];
int DataModbusUSB[32];
CRC_MODBUS_USB_16BIT[0] = CRC_MODBUS_USB_16BIT[0] ^
DataModbusUSB[0];
if (TempCRC_USB == 1) {
CRC_MODBUS_USB_16BIT[0] = CRC_MODBUS_USB_16BIT[0] >>
1;
CRC_MODBUS_USB_16BIT[0] = CRC_MODBUS_USB_16BIT[0] ^
40961; //40961 Const Polynomial
} else {
CRC_MODBUS_USB_16BIT[0] = CRC_MODBUS_USB_16BIT[0] >>
1;
}
}
// Serial.println(CRC[0]);
//CRC Ke 2 sampai CRC ke 5
for (int j = 1; j <= nCRC; j++) {
CRC_MODBUS_USB_16BIT[j] = CRC_MODBUS_USB_16BIT[j - 1]
^ DataModbusUSB[j];
for (int i = 0; i <= 7; i++) {
TempCRC_USB = CRC_MODBUS_USB_16BIT[j] & 1;
// CRC = CRC >> 1;
if (TempCRC_USB == 1) {
CRC_MODBUS_USB_16BIT[j] =
CRC_MODBUS_USB_16BIT[j] >> 1;
CRC_MODBUS_USB_16BIT[j] =
CRC_MODBUS_USB_16BIT[j]
^ 40961; //40961 Const Polynomial
} else {
CRC_MODBUS_USB_16BIT[j] =
CRC_MODBUS_USB_16BIT[j] >> 1;
}
}
}
CRC_HI_USB = CRC_MODBUS_USB_16BIT[nCRC] >> 8;
// Serial.println(CRC_LOW_USB );
if ((CRC_MODBUS_USB_16BIT[nCRC] & 1) == 1) {
CRC_LOW_USB = CRC_LOW_USB + 1;
}
if ((CRC_MODBUS_USB_16BIT[nCRC] & 2) == 2) {
CRC_LOW_USB = CRC_LOW_USB + 2;
}
if ((CRC_MODBUS_USB_16BIT[nCRC] & 4) == 4) {
CRC_LOW_USB = CRC_LOW_USB + 4;
}
if ((CRC_MODBUS_USB_16BIT[nCRC] & 8) == 8) {
CRC_LOW_USB = CRC_LOW_USB + 8;
}
if ((CRC_MODBUS_USB_16BIT[nCRC] & 16) == 16) {
CRC_LOW_USB = CRC_LOW_USB + 16;
}
if ((CRC_MODBUS_USB_16BIT[nCRC] & 32) == 32) {
CRC_LOW_USB = CRC_LOW_USB + 32;
}
if ((CRC_MODBUS_USB_16BIT[nCRC] & 64) == 64) {
CRC_LOW_USB = CRC_LOW_USB + 64;
}
if ((CRC_MODBUS_USB_16BIT[nCRC] & 128) == 128) {
CRC_LOW_USB = CRC_LOW_USB + 128;
}
} else if (counterRX == 2) {
if (BufferModbusRx[1] != 1 & BufferModbusRx[1] != 2
& BufferModbusRx[1] != 3 & BufferModbusRx[1]
!= 4) {
counterRX = 0;
}
} else if (counterRX == 4) { //counterRx=2 dan CounterRx=3
Merupakan address request modbus
AddressModbusRequest = (BufferModbusRx[2] << 8) +
BufferModbusRx[3];
} else if (counterRX == 6) { //counterRx=4 dan counterRx=5
Merupakan length Request modbus
LengthModbusRequest = (BufferModbusRx[4] << 8) +
BufferModbusRx[5];
//jika (AddressModbusRequest >= AddressDefault_DO1_MbRTU &
AddressModbusRequest <= AddressDefault_DO16_MbRTU)
if ((BufferModbusRx[1] == ModbusFC01)
| (BufferModbusRx[1] == ModbusFC02)) { //Read
Coil Dan Read Discrete Input
if ((LengthModbusRequest % 8) == 0) {
if ((LengthModbusRequest / 8) == 0) {
LengthDataResponseMB = 1;
} else {
LengthDataResponseMB =
(LengthModbusRequest / 8);
}
} else if ((LengthModbusRequest % 8) > 0) {
LengthDataResponseMB = (LengthModbusRequest /
8) + 1;
}
//Read Coil
HasilBacaStatusCoil = 0b10110101;
//Read Discreate
HasilBacaInputDiscrete = 0b10110111;
}
} else if ((BufferModbusRx[1] == ModbusFC03)
| (BufferModbusRx[1] == ModbusFC04)) { //Read
LengthDataResponseMB = LengthModbusRequest * 2;
if (BufferModbusRx[0] == ID_Modbus_Fix) {
if (BufferModbusRx[1] == ModbusFC01) {
if ((AddressModbusRequest +
LengthModbusRequest)
- 1<=
AddressDefault_DO16_MbRTU
-
AddressDefault_DO1_MbRTU) {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 1;
bufferTx[2] =
LengthDataResponseMB;
for (int i = 0; i <
LengthDataResponseMB; i++) {
bufferTx[3 + i] =
HasilBacaStatusCoil >> (8 * i);
}
bufferTx[3 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB);
bufferTx[4 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx,
5 +
LengthDataResponseMB, 0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
} else {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 0x81;
bufferTx[2] = 2;
bufferTx[3] =
HitungCRC1(bufferTx, 3);
bufferTx[4] =
HitungCRC1(bufferTx, 3) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx, 5,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
}
} else if (BufferModbusRx[1] == ModbusFC02) {
if ((AddressModbusRequest +
LengthModbusRequest)
- 1<=
AddressDefault_DI16_MbRTU
-
AddressDefault_DI1_MbRTU) {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 2;
bufferTx[2] =
LengthDataResponseMB;
for (int i = 0; i <
LengthDataResponseMB; i++) {
bufferTx[3 + i] =
HasilBacaInputDiscrete >> (8 * i);
}
bufferTx[3 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB);
bufferTx[4 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx,
5 +
LengthDataResponseMB, 0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
} else {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 0x81;
bufferTx[2] = 2;
bufferTx[3] =
HitungCRC1(bufferTx, 3);
bufferTx[4] =
HitungCRC1(bufferTx, 3) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx, 5,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
}
} else if (BufferModbusRx[1] == ModbusFC03) {
if ((AddressModbusRequest +
LengthModbusRequest)
- 1<=
AddressDefault_AI16_MbRTU
-
AddressDefault_AI1_MbRTU) {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 3;
bufferTx[2] =
LengthDataResponseMB;
for (int i = 0; i <
LengthModbusRequest; i++) {
bufferTx[3 + (i * 2)] =
DataFC03_Remap[i
+
(AddressModbusRequest
- AddressDefault_AI1_MbRTU)] >> 8;
bufferTx[4 + (i * 2)] =
DataFC03_Remap[i
+
(AddressModbusRequest
- AddressDefault_AI1_MbRTU)];
}
bufferTx[3 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB);
bufferTx[4 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx,
5 +
LengthDataResponseMB, 0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
} else {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 0x81;
bufferTx[2] = 2;
bufferTx[3] =
HitungCRC1(bufferTx, 3);
bufferTx[4] =
HitungCRC1(bufferTx, 3) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx, 5,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
//
counterRX = 0;
}
} else if (BufferModbusRx[1] == ModbusFC04) {
if ((AddressModbusRequest +
LengthModbusRequest)
- 1<=
AddressDefault_AO16_MbRTU
-
AddressDefault_AO1_MbRTU) {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 4;
bufferTx[2] =
LengthDataResponseMB;
for (int i = 0; i <
LengthModbusRequest; i++) {
bufferTx[3 + (i * 2)] =
ValAnalogOutput[i
+
(AddressModbusRequest
- AddressDefault_AO1_MbRTU)] >> 8;
bufferTx[4 + (i * 2)] =
ValAnalogOutput[i
+
(AddressModbusRequest
- AddressDefault_AO1_MbRTU)];
}
bufferTx[3 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB);
bufferTx[4 +
LengthDataResponseMB] = HitungCRC1(
bufferTx, 3 +
LengthDataResponseMB) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx,
5 +
LengthDataResponseMB, 0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
} else {
bufferTx[0] = ID_Modbus_Fix;
bufferTx[1] = 0x81;
bufferTx[2] = 3;
bufferTx[3] =
HitungCRC1(bufferTx, 3);
bufferTx[4] =
HitungCRC1(bufferTx, 3) >> 8;
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx, 5,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
//
counterRX = 0;
}
} else if (BufferModbusRx[1] == ModbusFC05) {
//Write Single Coil
if (AddressModbusRequest
<=
AddressDefault_DO16_MbRTU
-
AddressDefault_DO1_MbRTU) {
//
HAL_GPIO_TogglePin(DigitalOutput1_GPIO_Port,
//
DigitalOutput1_Pin);
if (BufferModbusRx[4] == 255
&& BufferModbusRx[5]
== 0) {
} else if (BufferModbusRx[4] == 0
&& BufferModbusRx[5]
== 0) {
//
HAL_GPIO_WritePin(DigitalOutput1_GPIO_Port,
//
DigitalOutput1_Pin, 1);
//
WriteSingleCoil(AddressModbusRequest + 1, 1);
}
for (int i = 0; i <= 7; i++) {
bufferTx[i] =
BufferModbusRx[i];
}
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx, 8,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
//
counterRX = 0;
}
} else if (BufferModbusRx[1] == 6) { //Write
Single Register
if (AddressModbusRequest
<=
AddressDefault_AO16_MbRTU
-
AddressDefault_AO1_MbRTU) {
ValAnalogOutput[AddressModbusRequest] =
(BufferModbusRx[4]
<< 8) + BufferModbusRx[5];
WriteSingleRegister(AddressModbusRequest,
ValAnalogOutput[AddressModbusRequest]);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 1);
HAL_UART_Transmit(&huart2,
(uint8_t *) bufferTx, 8,
0xffffffff);
HAL_GPIO_WritePin(DataControl_UART2_GPIO_Port,
DataControl_UART2_Pin, 0);
//
counterRX = 0;
}
}
}
} else {
counterRX = 0;
// HAL_Delay(10);
}
counterRX = 0;
}
// counterRX++;
/* USER CODE END USART2_IRQn 0 */
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
'Hapus DATA
Try
Dim stLine As String = ""
Dim objWriter As IO.StreamWriter =
IO.File.AppendText(_strCustomerCSVPath)
If IO.File.Exists(_strCustomerCSVPath) Then
'IO.File.
objWriter.Write(Environment.NewLine)
End If
objWriter.Close()
'ClearTextbox()
Catch ex As Exception
End Try
End Sub
'Hapus DATA
Try
Dim stLine As String = ""
Dim objWriter As IO.StreamWriter =
IO.File.AppendText(_strCustomerCSVPath)
If IO.File.Exists(_strCustomerCSVPath) Then
objWriter.Write(_DataCSV)
objWriter.Write(Environment.NewLine)
End If
objWriter.Close()
'ClearTextbox()
Catch ex As Exception
End Try
End Sub
Sub main()
FileOpen(1, "D:\PROJECT VB NET\GeneratorSourceModbus - Rev1\Data
Config\adri.txt", OpenMode.Output)
PrintLine(1, "Hello adri")
Dim input As String = ""
FileClose()
End Sub
End Module
For i As Integer = 0 To 7
If (NilaiByte1_Float And 2 ^ i) = 2 ^ i Then
BitFloatingPoint(i) = True
Else
BitFloatingPoint(i) = False
End If
sign_FloatingPoint = BitFloatingPoint(31)
For i As Integer = 23 To 30
If BitFloatingPoint(i) = True Then
exponent_FloatingPoint = exponent_FloatingPoint + (2 ^ (i -
23))
Else
exponent_FloatingPoint = exponent_FloatingPoint
End If
Next
exponent_FloatingPoint = exponent_FloatingPoint - 127
For i As Integer = 0 To 22
If BitFloatingPoint(i) = True Then
mantissa_FloatingPoint = mantissa_FloatingPoint + (2 ^ -(23
- i))
End If
Next
mantissa_FloatingPoint = mantissa_FloatingPoint + 1
HitungFloatingPoint = mantissa_FloatingPoint * (2 ^
exponent_FloatingPoint)
If sign_FloatingPoint = 0 Then
HitungFloatingPoint = HitungFloatingPoint
Else
HitungFloatingPoint = HitungFloatingPoint * -1
End If
Return HitungFloatingPoint
End Function
Return HitungFloatingPoint2
End Function
Return DataTransmit
End Function
'RequestFC5_Dec = SlaveId & " " & 5 & " " & AddressHi & " " &
AddressLow & " " & " " & ValueCoil_Hi & " " & ValueCoil_Low & " " & CRC_Hi
& " " & CRC_Low
Return DataTransmit
End Function
Quantity = _Length * 2
DataTransmit(0) = _SlaveId
DataTransmit(1) = 16
DataTransmit(2) = AddressHi
DataTransmit(3) = AddressLow
DataTransmit(4) = LengthHi
DataTransmit(5) = LengthLow
DataTransmit(6) = Quantity
For i = 0 To _Length - 1
DataTransmit(7 + (2 * i)) = _DataFC16(i) >> 8
DataTransmit(8 + (2 * i)) = _DataFC16(i) And &HFF
Next
'CRC_Tampung = CRC(7 + (2 * _Length), _SlaveId, 16, AddressHi,
AddressLow, LengthHi, LengthLow, Quantity, DataTransmit())
CRC_Hi = CRC_Tampung
CRC_Hi = CRC_Hi And &HFF00
CRC_Hi = CRC_Hi >> 8
CRC_Low = CRC_Tampung
CRC_Low = CRC_Low And &HFF
Return DataTransmit
End Function
CRC = nDataInputCRC
CRC_u(0) = 65535
CRC_u(0) = CRC_u(0) Xor DataInputCRC(0)
For i As Integer = 0 To 7
Temp_CRC = CRC_u(0) And 1
If Temp_CRC = 1 Then
CRC_u(0) = CRC_u(0) >> 1
CRC_u(0) = CRC_u(0) Xor Const_Polynomial
Else
CRC_u(0) = CRC_u(0) >> 1
End If
Next
SlaveIdPoll_FC = {7, 7, 7, 5, 5}
FunctionCodePoll_FC = {1, 2, 3, 3, 3}
AddressPoll_FC = {0, 0, 0, 0, 5}
LengthPoll_FC = {8, 16, 8, 3, 3}
End Sub
End Class