You are on page 1of 8

Họ và tên:_______________________________________

MSSV:__________________________________________
Trường Đại Học Bách Khoa Đề Thi Học Kỳ
Tp.HCM Môn: ĐO LƯỜNG ĐIỀU KHIỂN BẰNG MÁY TÍNH
Khoa Điện – Điện Tử Thời gian: 105 phút
Bộ Môn Tự Động (Đề gồm 8 trang, Được sử dụng tài liệu giấy)
Làm bài trên đề và giấy thi – Phải Chú thích các câu lệnh

Câu 1:Viết chương trình PLC thực hiện các yêu cầu sau

a. (1.5đ) Viết chương trình STL đọc 5 kênh Analog từ AIW0 giá trị từ 0 - 32000, chuyển sang
tầm từ 0– 5000 và truyền về máy tính (mỗi kênh là 2 byte) qua Port0, “19200,N,8,1”. Chu
kỳ cập nhật là 100ms.Yêu cầu sử dụng ngắt thời gian 0, bản tin truyền bắt đầu từ VB100.
b. (1.5đ) Viết chương trình nhận bản tin Port 1, “38400,N,8,1” sử dụng RCV. Nếu bản tin bắt
đầu là ký tự ‘@’ thì phát xung PWM có chu kỳ(ms) và độ rộng (%) là 2 word kế tiếp của
bản tin ở Q0.0. Nếu ký tự bắt đầu là ‘#’ thì phát xung PTO ở Q0.1với chu kỳ (us) và số xung
là 2 word kế tiếp của bản tin.

Đáp án:

a.

//Main // Int_0
LD SM0.1 // Network 1
MOVB 16#05, SMB30 LD SM0.0
MOVB 100, SMB34 LPS
ATCH INT_0, 10 MOVD &AIW0, AC1
MOVB 10, VB100 MOVD &VB100, AC2
FOR AC3, 1, 5
MOVW *AC1, AC0
AENO
MUL 5000, AC0
AENO
/D 32000, AC0
AENO
DTI AC0, *AC2
LPP
+D 2, AC1
AENO
+D 2, AC2
// Network 2
NEXT
// Network 3
LD SM0.0
XMT VB100, 0
b.

//Main // Int_0
// Network 1 // Network 1
Đề Thi ĐL và ĐK bằng máy tính Page 1
Họ và tên:_______________________________________
MSSV:__________________________________________
LD SM0.1 LDB= VB101, '@'
MOVB 16#1, SMB130 MOVW VW102, SMW68
ATCH INT_0, 23 MOVW VW104, SMW70
MOVB 16#94, SMB187 PLS 0
MOVW 20, SMW190 // Network 2
MOVW 10, SMW192 LDB= VB101, '#'
MOVB 20, SMB194 MOVW VW102, SMW78
RCV VB100, 1 ITD VW104, SMD82
// Network 2 PLS 1
LD SM0.1 // Network 3
MOVB 16#CD, SMB67 LDB= VB101, '#'
MOVB 16#85, SMB77 MOVW VW102, SMW78
ITD VW104, SMD82
PLS 1

Câu 2: Giao tiếp nối tiếp

a. (1đ) Hoàn thiện mạch vi xử lý điều khiển nhiệt độ lò nhiệt và giao tiếp máy tính. Biết cảm
biến nhiệt là Pt100, tín hiệu ngõ vào analog là 0-5V. Biết tầm nhiệt độ là 0-150 OC (Giá trị
điện trở của Pt100 tương ứng là 100Ω-157.3Ω).
VCC

C16 U154
U151 C 1 6 PWM
P2 (RESET) PC6 (XCK/T0) PD4
1 13 12
6 8 R1IN R1OUT 9
2 R2IN R2OUT 2
7 14 11 3 (RXD) PD0 28
3 7 T1OUT T1IN 10 C17 (TXD) PD1 PC5 (ADC5/SCL) 27
8 T2OUT T2IN PC4 (ADC4/SDA) 26
4 1 C13 9 PC3 (ADC3) 25
C1+ 10u 33pF (XTAL1/TOSC1) PB6 PC2 (ADC2)
9 3 Y1 10 24
5 C1- 4 C12 C18 (XTAL2/TOSC2) PB7 PC1 (ADC1)
C2+ CRYSTAL
5 10u
C2- 2 20
CONNECTOR DB9 V+ 33pF AVCC 5V
6 23
V- C15 Analog Input PC0 (ADC0) 21 C11
C14 10u AREF
1n
MAX232 10u 14 4
5V 15 (ICP1) PB0 (INT0) PD2 5
16 PB1 (OC1A) (INT1) PD3
17 PB2 (SS/OC1B) 11
18 PB3 (MOSI/OC2) (T1) PD5 12
19 PB4 (MISO) (AIN0) PD6 13
PB5 (SCK) (AIN1) PD7

VXL_Atmega8

J32
PWM R25
Current Source1
20mA 1
R24 2
330
R
6

U153
1 AC Power
R34
100k R29 R2 2

MOC3020 Q7
11

R33
4

TRIAC
J30 2 LM324
11
V-

100k - LM324 R26


1 1R27 R1 6 R J31
V-

2 OUT -
3 7 1
+ 4 R28 OUT 2
From Sensor U155A V+ 5
2V R1 + 4 To Heater
U155B V+

Khô'i Công Suâ't


Khô'i Xu Ly Tin Hieu

Hình1: Mạch VXL điều khiển nhiệt độ và giao tiếp máy tính

Đề Thi ĐL và ĐK bằng máy tính Page 2


Họ và tên:_______________________________________
MSSV:__________________________________________
b. (1đ) Biết chip VXL đã được nạp chương trình tự động truyền về giá trị 0-1000 tương đương
với nhiệt độ 0-100.0 oC đọc từ cảm biến và nhận tín hiệu PWM từ máy tính (0-100%) xuất
ra chân PWM. Biết format truyền là 4 ký tự cho nhiệt độ, nhận là 3 ký tự cho PWM.(Ví dụ:
Truyền 0  ”0’’”0’’”0’’”0”; 1000 ”1’’”0’’”0’’”0”.Viết chương trình VB đọc đáp ứng
vòng hở của lò nhiệt theo giao diện Hình2.

Đáp án

Private Sub Form_Load() Private Sub Start_Click()


With MSComm1 If MSComm1.PortOpen = False Then
.Settings = "9600,N,8,1" MSComm1.PortOpen = True
.CommPort = 1 End If
.RThreshold = 4 MSComm1.Output = TxtPWM.Text
End With End Sub
End Sub Private Sub Stop_Click()
If MSComm1.PortOpen Then
Private Sub MSComm1_OnComm() MSComm1.PortOpen = False
Dim rcv_data End If
If MSComm1.CommEvent = 2 Then End
rcv_data = MSComm1.Input End Sub
TxtTemp = CStr(Val(rcv_data) / 10)
End If
End Sub

Hình2: Giao diện giao tiếp PC và VXL


Câu 3: Giao tiếp ISA:

a. (1đ) Thiết kế mạch ISA đọc 8 kênh Analog Input, xuất 2 kênh Analog, 8 kênh DI và 8 kênh
DO sử dụng các chip ADC0808, DAC0808, và các IC cần thiết khác. Địa chỉ của các kênh:
DI: 300H; DO: 301H; AO0: 302; AO1: 303H; AI0-7: 308H-30FH

Đáp án

A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
DI 1 1 0 0 0 0 0 0 0 0
DO 1 1 0 0 0 0 0 0 0 1
Đề Thi ĐL và ĐK bằng máy tính Page 3
Họ và tên:_______________________________________
MSSV:__________________________________________
AO0 1 1 0 0 0 0 0 0 1 0
AO1 1 1 0 0 0 0 0 0 1 1
AI0-7 1 1 0 0 0 0 1 X X X
J33
U156 U159 J34
B1 A1
B2 A2 D7 26 17 D0 2 3 1
AI0 IN0 D0 Q0 D0
B3 A3 D6 27 14 D1 5 4 2
AI1 IN1 D1 Q1 D1
B4 A4 D5 28 15 D2 6 7 3
AI2 IN2 D2 Q2 D2
B5 A5 D4 1 8 D3 9 8 4
AI3 IN3 D3 Q3 D3
B6 A6 D3 2 18 D4 12 13 5
AI4 IN4 D4 Q4 D4
B7 A7 D2 3 19 D5 15 14 6
AI5 IN5 D5 Q5 D5
B8 A8 D1 4 20 D6 16 17 7
AI6 IN6 D6 Q6 D6
B9 A9 D0 5 21 D7 19 18 8
AI7 IN7 D7 Q7 D7
B10 A10
B11 A11 /AEN 12 7 11 VCC DI
5V REF+ EOC LE
B12 A12 16 1 /CS_DI
/IOW B13 A13 REF- OE
/IOR B14 A14 10
B15 A15 CLK CLK U160 74LS373 J35
B16 A16 SA0 25
B17 A17 SA1 24 A0 D0 3 2 1
B18 A18 SA2 23 A1 D1 4 D0 Q0 5 2
B19 A19 22 A2 D2 7 D1 Q1 6 3
B20 A20 ADC_Start 6 ALE D3 8 D2 Q2 9 4
B21 A21 ADC_Read 9 START D4 13 D3 Q3 12 5
B22 A22 SA9 OE D5 14 D4 Q4 15 6
B23 A23 SA8 11 D6 17 D5 Q5 16 7
VCC VCC D6 Q6
B24 A24 SA7 D7 18 19 8
B25 A25 SA6 D7 Q7
B26 A26 SA5 ADC0808 CS_DO 11 DO
B27 A27 SA4 1 LE
B28 A28 SA3 OE
SA2 R30
B29 A29
B30 A30 SA1 74LS373
B31 A31 SA0
U161 VCC
U157 R
ISA U164 D0 3 2 13
U163 D1 4 D0 Q0 5 12 DB7 LF351
D1 Q1 DB6

4
5
SA8 1 15 SA3 1 15 /CS0 D2 7 6 11
SA5 2 A Y0 14 SA4 2 A Y0 14 /CS1 D3 8 D2 Q2 9 10 DB5 3 2 -
SA6 3 B Y1 13 3 B Y1 13 D4 13 D3 Q3 12 9 DB4 OUT 6
C Y2 C Y2 D4 Q4 DB3 AO0
12 12 D5 14 15 8 3 +
SA9 6 Y3 11 6 Y3 11 D6 17 D5 Q5 16 7 DB2 4 VCC
G1 Y4 VCC G1 Y4 D6 Q6 DB1 REF
SA7 4 10 4 10 D7 18 19 6
G2A Y5 G2A Y5 D7 Q7 DB0

7
1
/AEN 5 9 5 9 U170
G2B Y6 7 G2B Y6 7 CS_DA0 11 AGND
Y7 Y7 1 LE DAC0808
OE 5
74LS138 74LS138
R31
U165 74LS373
SA0 1 15 /CS2 /RD U162
SA1 2 A Y0 14 /CS3 2 U166A U158
SA2 3 B Y1 13 /CS4 1 ADC_Read D0 3 2 13 VCC
C Y2 12 /CS5 /CS1 3 D1 4 D0 Q0 5 12 DB7 R
6 Y3 11 7402 D2 7 D1 Q1 6 11 DB6
VCC G1 Y4 D2 Q2 DB5 LF351
4 10 D3 8 9 10 3
G2A Y5 D3 Q3 DB4 OUT

4
5
/CS0 5 9 8 U166C D4 13 12 9
G2B Y6 7 10 ADC_Start D5 14 D4 Q4 15 8 DB3 2 -
Y7 /WR 9 D6 17 D5 Q5 16 7 DB2 4 VCC 6
D6 Q6 DB1 REF AO1
7402 D7 18 19 6 3 +
74LS138 D7 Q7 DB0
CS_DA1 11 AGND
LE

7
1
1 DAC0808 U171
/CS2 5 U166B 11 U166D OE 5
4 13 /CS_DI
/RD 6 12 74LS373
7402 7402

/CS4 8 U168C /CS5 8 U169C


/CS3 8 U167C 10 CS_DA0 10 CS_DA1
10 CS_DO /WR 9 /WR 9
/WR 9 7402 7402
7402

Hình3: Card giao tiếp điều khiển qua rãnh cắm ISA
b. (1đ) Viết chương trình VB điều khiển PID điều khiển 4 kênh nhiệt độ theo mạch Hình5 và
giao diện Hình4. Biết chu kỳ lấy mẫu Ts = 1s, Tầm nhiệt độ 0-150 OC

Đáp án:

A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
/ADC_Start 1 1 0 0 0 0 0 0 X X
/ADC_Read 1 1 0 0 0 0 0 1 X X
/8255_Write 1 1 0 0 0 0 1 0 X X

Đề Thi ĐL và ĐK bằng máy tính Page 4


Họ và tên:_______________________________________
MSSV:__________________________________________
Private Declare Sub Out32 Lib "Inpout32.DLL" (ByVal Port As Integer, ByVal data As Integer)
Private Declare Function Inp32 Lib "Inpout32.DLL" (ByVal Port As Integer) As Integer
Private Declare Sub Sleep Lib "kernel32.DLL" (ByVal milisecond As Long)
Dim Kp(4), Ki(4), Kd(4), ek(4), ek1(4), ek2(4), uk(4), uk1(4), Tdat(4), Tdo(4) As Double
Dim PWM_time, PWM, T
Private Sub Form_Load() Private Sub Stop_Click()
Dim Index Timer1.Enabled = False
Out32 &H30C, &H92 Timer2.Enabled = False
Out32 &H30B, 0 Out32 &H30B, 0
Timer1.Interval = 1000 End
Timer2.Interval = 10 End Sub
Timer1.Enabled = False
Timer2.Enabled = False Private Sub Timer2_Timer()
T=1 Dim i, data_out
For Index = 0 To 3 PWM = PWM + 1
ek1(i) = 0 data_out = 0
ek2(i) = 0 For i = 0 To 3
uk1(i) = 0 If PWM < uk(i) Then
Next Index data_out = data_out Or 2 ^ i
End Sub Else
data_out = data_out And (2 ^ i Xor &HFF)
Private Sub Start_Click() End If
Next i
For i = 0 To 3 Out32 &H30B, data_out
Kp(i) = Val(GT_Kp(i).Text) End Sub
Ki(i) = Val(GT_KI(i).Text)
Kd(i) = Val(GT_KD(i).Text)
Tdat(i) = Val(GT_Dat(i).Text)
Next i

Timer1.Enabled = True
Timer2.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim i
For i = 0 To 3
Out32 &H300 + i, 0
Sleep 1
L_data = Inp32(&H304)
H_data = Inp32(&H305)
data = H_data * 256 + L_data
Tdo(i) = Round(data * 150 / 1023, 1)

GT_Do(i).Text = Tdo(i)

ek(i) = Tdat(i) - Tdo(i)


uk(i) = uk1(i) + Kp(i) * (ek(i) - ek1(i)) + Ki(i) * T * (ek(i) + ek1(i)) / 2 + Kd(i) * (ek(i) - 2 * ek1(i) +
ek2(i)) / T

If uk(i) > 100 Then uk(i) = 100


If uk(i) < 0 Then uk(i) = 0

Đề Thi ĐL và ĐK bằng máy tính Page 5


Họ và tên:_______________________________________
MSSV:__________________________________________

ek2(i) = ek1(i)
ek1(i) = ek(i)
uk1(i) = uk(i)
Next i

PWM = 0

End Sub

Hình4: Giao diện điều khiển PID


J29

B1 A1 U144 U147
B2 A2 D7
B3 A3 D6 D0 34 4 28 10
D5 D1 D0 PA0 DB0 VIN0 AI0
B4 A4 33 3 27 11
D4 D2 D1 PA1 DB1 VIN1 AI1
B5 A5 32 2 26 12
D3 D3 D2 PA2 DB2 VIN2 AI2
B6 A6 31 1 25 13
D2 D4 D3 PA3 DB3 VIN3 AI3
B7 A7 30 40 24
B8 A8 D1 D5 29 D4 PA4 39 23 DB4 14
D5 PA5 DB5 VREF+ 5V
B9 A9 D0 D6 28 38 22 9
B10 A10 D7 27 D6 PA6 37 20 DB6 VREF-
B11 A11 /AEN D7 PA7 19 DB7 17
B12 A12 SA0 9 18 18 DB8 SPDADJ
/IOW B13 A13 SA1 8 A0 PB0 19 DB9 4 /CS1
/IOR B14 A14 A1 PB1 20 2 RD 6 SA0
B15 A15 Reset 35 PB2 21 INT S0 7 SA1
B16 A16 /IOR 5 RESET PB3 22 S1 3 /ADC_Start
B17 A17 /WR 36 RD PB4 23 S/H 5 /ADC
B18 A18 /8255 6 WR PB5 24 CS
B19 A19 CS PB6 25
B20 A20 PB7 ADC10064
B21 A21 VCC 14 PWM1
B22 A22 SA9 PC0 15 PWM2
B23 A23 SA8 PC1 16 PWM3
B24 A24 SA7 C10 PC2 17 PWM4
B25 A25 SA6 C PC3 13
B26 A26 SA5 PC4 12
B27 A27 SA4 Reset PC5 11
B28 A28 SA3 PC6 10
B29 A29 SA2 R23 PC7
B30 A30 SA1 R U149
B31 A31 SA0 8255
/IOW 2
1/ADC_Start
ISA 3

Address Bus
U146 U145 U148A OR2
/CS0 1
SA4 1 15 SA2 1 15 3 /ADC
SA5 2 A Y0 14 SA3 2 A Y0 14 /CS1 2
SA6 3 B Y1 13 3 B Y1 13
C Y2 12 C Y2 12 7408
SA8 6 Y3 11 SA9 6 Y3 11 U150A
SA7 4 G1 Y4 10 4 G1 Y4 10 1
5 G2A Y5 9 5 G2A Y5 9 3 /8255
G2B Y6 7 G2B Y6 7 /CS2 2
/AEN Y7 Y7
7408
74HC138 74HC138

Hình5: Mạch giao tiếp ISA 4 ngõvào Analog, 4 ngõ ra PWM


Đề Thi ĐL và ĐK bằng máy tính Page 6
Họ và tên:_______________________________________
MSSV:__________________________________________

Hình6: Hoạt động của ADC10064


Câu 4: Giao tiếp cổng LPT.

(2đ)Viết chương trình VB điều khiển ON/OFF có trễ 8 kênh nhiệt độ chu kỳ 1s theo card đã được
thiết kế Hình 7. Biết tầm nhiệt độ là 0-100 OC. Biết quan hệ giữa sai số và trạng thái chuyển đổi của
bộ ON/OFF như hình dưới

ON

OFF
-5 5

Private Declare Sub Out32 Lib "Inpout32.DLL" (ByVal Port As Integer, ByVal data As Integer)
Private Declare Function Inp32 Lib "Inpout32.DLL" (ByVal Port As Integer) As Integer
Private Declare Sub Sleep Lib "kernel32.DLL" (ByVal milisecond As Long)
Dim Tdat(8), Tdo(8) As Double
Dim LPT_address
Private Sub Form_Load() Private Sub Timer1_Timer()
LPT_address = &H378 Dim i, data, dataH, dataL, data_out, Tdo, e
Out32 LPT_address, 0 data_out = 0
Out32 LPT_address + 2, 2 Xor &HB For i = 0 To 7
Out32 LPT_address + 2, 0 Xor &HB Out32 LPT_address, i
Out32 LPT_address + 2, 8 Xor &HB
Timer1.Interval = 1000 Out32 LPT_address + 2, 0 Xor &HB
Timer1.Enabled = False Sleep (1)
Out32 LPT_address + 2, 4 Xor &HB
End Sub dataL = Inp32(LPT_address + 1) / 8
Out32 LPT_address + 2, 5 Xor &HB
Private Sub Start_Click() dataH = Inp32(LPT_address + 1) * 2
Dim i Out32 LPT_address + 2, 0 Xor &HB
For i = 0 To 7 data = (dataL And &HF) + (dataH And &HF0)

Đề Thi ĐL và ĐK bằng máy tính Page 7


Họ và tên:_______________________________________
MSSV:__________________________________________
Tdat(i) = Val(GT_Dat(i).Text) Tdo = Round(data * 100 / 255, 1)
Next i GT_Do(i).Text = CStr(Tdo)
e = Tdat - Tdo
Timer1.Enabled = True If e > 5 Then
End Sub data_out = data_out Or 2 ^ i
End If
Private Sub Stop_Click() If e < -5 Then
Timer1.Enabled = False data_out = data_out And (2 ^ i Xor &HFF)
Out32 LPT_address, 0 End If
Out32 LPT_address + 2, 2 Xor &HB Next i
Out32 LPT_address + 2, 0 Xor &HB Out32 LPT_address, data_out
End Out32 LPT_address + 2, 2 Xor &HB
End Sub Out32 LPT_address + 2, 0 Xor &HB
End Sub
J14 U36

1 /Strobe 26 17 D0
C0 Analog in0 IN0 D0
2 Out0 27 14 D1
Out0 Analog in1 IN1 D1
3 Out1 28 15 D2
Out1 Analog in2 IN2 D2
4 Out2 1 8 D3
Out2 Analog in3 IN3 D3
5 Out3 2 18 D4
Out3 Analog in4 IN4 D4
6 Out4 3 19 D5
Out4 Analog in5 IN5 D5
7 Out5 4 20 D6
Out5 Analog in6 IN6 D6
8 Out6 5 21 D7
Out6 Analog in7 IN7 D7
9 Out7
Out7
10 Ack 12 7
S6 VCC REF+ EOC
11 /Busy 16
PaperOut S7 REF-
12
Select S5 CLK
13 10
/AutoLinef eed S4 CLK
14 C1
15 /Error Out0 25
Init S3 Out1 A0
16 C2 24
17 /SelectPrinter Out2 23 A1
C3

Data Bus
18 22 A2
19 C3 6 ALE
20 C2 9 START
21 OE
22 VCC 11
23 VCC
24
25 ADC0808
U104

LPT S3 4 2 D0
S4 7 1Y 1A 5 D1
S5 9 2Y 2A 11 D2
S6 12 3Y 3A 14 D3
4Y 4A
R21 D4
3
1B 6 D5
2B 10 D6
3B 13 D7
R U126A 4B
1 C0
A/B 15
1 2 CLK G

74157
C7 U37
C 74HC14
Out0 3 2
D0 Q0 DO0
Out1 4 5
D1 Q1 DO1
Out2 7 6
D2 Q2 DO2
Out3 8 9
D3 Q3 DO3
Out4 13 12
D4 Q4 DO4
Out5 14 15
D5 Q5 DO5
Out6 17 16
D6 Q6 DO6
Out7 18 19
D7 Q7 DO7
C1 11
1 LE
OE

74LS373

Hình 7: Mạch đọc Analog và xuất PWM giao tiếp cổng LPT
Câu 5: (1đ) (Tự chọn) Sinh viên chọn và trả lời ngắn gọn 1 trong các câu sau:

a. Trình bày giao tiếp USB giữa VB và Vi xử lý PIC, AVR…


b. Trình bày giao tiếp TCP/IP giữa VB và Vi xử lý.
c. Nêu các chuẩn truyền thông Modbus.

Đề Thi ĐL và ĐK bằng máy tính Page 8

You might also like