實務專題報告書 - Hsiuping University of Science and...
Transcript of 實務專題報告書 - Hsiuping University of Science and...
實實務務專專題題報報告告書書
九九 宮宮 格格 電電 子子 計計 分分 板板
指 導 老 師:陳文豪
專題製作學生:四技電四甲 曾建維曾建維曾建維曾建維 BD94023
四技電四甲 張家偉張家偉張家偉張家偉 BD94031
四技電四甲 謝清淵謝清淵謝清淵謝清淵 BD94033
中華民國 九十七 年 十二 月 七 日
修 平 技 術 學 院 電 機 工 程 系
DEPARTMENT OF ELECTRICAL ENGINEERING HSIU-PING INSTITUTE OF TECHNOLOGY
2
目錄目錄目錄目錄
一一一一.... 摘要摘要摘要摘要……………………………………………………………………………………………………………………………………………………………………………………2
1.研究動機…………………………………………3
2.研究目的…………………………………………3
3.動作流程…………………………………………3
二二二二.... 研究與實現過研究與實現過研究與實現過研究與實現過程程程程………………………………………………………………………………………………………………………………4
1.元件介紹…………………………………………4
2.甘特圖……………………………………………6
3.電路圖……………………………………………7
4.PLC 流程圖………………………………………9
5.PLC 程式…………………………………………10
6.PLC 指令表………………………………………12
6.VB 程式……………………………………………16
7.PC 顯示畫面………………………………………26
8.成品………………………………………………27
四四四四. . . . 結論結論結論結論……………………………………………………………………………………………………………………………………………………………………………………29
1.參考資料…………………………………………30
3
一一一一.... 摘要摘要摘要摘要
1.1.1.1.研究動機研究動機研究動機研究動機::::
台灣之光有王建民,為了培養下一個台灣之光所研究的專題,但是傳統上
的九宮格是採取人工排版,非常費時又耗人力因此得到了靈感,用布面來
設計九宮格,免去重新排板的麻煩,節省時間和人力。
2.2.2.2.研究目的研究目的研究目的研究目的::::
我們利用布面來設計九宮格,以球擊中布面來觸動後面的微動開關,以 RF
模組作為無線傳輸所擊中數字的訊號,訊號經由 PLC 最後到 PC ,以 PC呈
現擊中的數字,利用 PLC 來計算得分。最後用 Visual Basic 來做介面呈現。
3.3.3.3.動作流程動作流程動作流程動作流程::::
4
二二二二.... 研究與實現過程研究與實現過程研究與實現過程研究與實現過程
1.1.1.1.元件介紹元件介紹元件介紹元件介紹::::
PC817 功能簡介 :
光電耦合器是以光為媒介來傳播電信號的器件。通常是把發光器(發光二
極管 LED)和受光器(光敏晶體管)封裝在同一管殼內如圖 4.28。
當輸入端加電信號時,發光器發出光線,照射在受光器上,受光器接受光
線後導通,產生光電流從輸出端輸出,從而實現了“電-光-電”的轉換。
普通光電耦合器只能傳輸數字信號(開關信號),不適合傳輸模擬信號。線
性光電耦合器是一種新型的光電隔離器件,能夠傳輸連續變化的模擬電壓
或電流信號,這樣隨著輸入信號的強弱變化會產生相應的光信號,從而使
光敏晶體管的導通程度也不同,輸出的電壓或電流也隨之不同。
PC817 光電耦合器不但可以起到反饋作用還可以起到隔離作用。
5
圖 4.29 為 PC817 集電極發射極電壓 V 與發光二極管正向電流 If關係。
7406 特點 :
1.Output Drive Capability - 10 LSTTL Loads。
2.Outputs Directly Interface to CMOS, NMOS and TTL。
3.Large Operating Voltage Range。
4.Low Input Current。
5.High Noise Immunity。
16
VBVBVBVB 程式程式程式程式::::
Dim M0CH%(7)
Dim flag As Integer
Private Sub Command1_Click()
'Timer1.Enabled = True
Label11.Caption = "投準遊戲玩法"
M0CH%(0) = 1
End Sub
Private Sub Command2_Click()
'Timer1.Enabled = False
Form1.Label1.BackColor = QBColor(8)
Form1.Label2.BackColor = QBColor(8)
17
Form1.Label4.BackColor = QBColor(8)
Form1.Label5.BackColor = QBColor(8)
Form1.Label6.BackColor = QBColor(8)
Form1.Label7.BackColor = QBColor(8)
Form1.Label8.BackColor = QBColor(8)
Form1.Label9.BackColor = QBColor(8)
Form1.Label10.BackColor = QBColor(8)
Label11.Caption = "投準遊戲玩法"
M0CH%(1) = 1
End Sub
Private Sub Command3_Click()
'Form2.Show
Label11.Caption = "數學遊戲玩法"
M0CH%(2) = 1
End Sub
Private Sub Command4_Click()
18
Label11.Caption = "賓果投準玩法"
Label12.Caption = "賓果分數"
M0CH%(3) = 1
End Sub
Private Sub display(disp_data$)
' Y0 接點顯示
If CInt(Mid$(disp_data$, 8, 1)) = 1 Then
If Form1.Label1.BackColor <> QBColor(12) Then
Form1.Label1.BackColor = QBColor(12)
Else
If Form1.Label1.BackColor <> QBColor(8) Then
Form1.Label1.BackColor = QBColor(8)
End If
' Y1 接點顯示
If CInt(Mid$(disp_data$, 7, 1)) = 1 Then
If Form1.Label2.BackColor <> QBColor(12) Then
Form1.Label2.BackColor = QBColor(12)
19
Else
If Form1.Label2.BackColor <> QBColor(8) Then
Form1.Label2.BackColor = QBColor(8)
End If
' Y2 接點顯示
If CInt(Mid$(disp_data$, 6, 1)) = 1 Then
If Form1.Label4.BackColor <> QBColor(12) Then
Form1.Label4.BackColor = QBColor(12)
Else
If Form1.Label4.BackColor <> QBColor(8) Then
Form1.Label4.BackColor = QBColor(8)
End If
' Y3 接點顯示
If CInt(Mid$(disp_data$, 5, 1)) = 1 Then
If Form1.Label5.BackColor <> QBColor(12) Then
Form1.Label5.BackColor = QBColor(12)
Else
If Form1.Label5.BackColor <> QBColor(8) Then
20
Form1.Label5.BackColor = QBColor(8)
End If
' Y4 接點顯示
If CInt(Mid$(disp_data$, 4, 1)) = 1 Then
If Form1.Label6.BackColor <> QBColor(12) Then
Form1.Label6.BackColor = QBColor(12)
Else
If Form1.Label6.BackColor <> QBColor(8) Then
Form1.Label6.BackColor = QBColor(8)
End If
' Y5 接點顯示
If CInt(Mid$(disp_data$, 3, 1)) = 1 Then
If Form1.Label7.BackColor <> QBColor(12) Then
Form1.Label7.BackColor = QBColor(12)
Else
If Form1.Label7.BackColor <> QBColor(8) Then
Form1.Label7.BackColor = QBColor(8)
End If
21
' Y6接點顯示
If CInt(Mid$(disp_data$, 2, 1)) = 1 Then
If Form1.Label8.BackColor <> QBColor(12) Then
Form1.Label8.BackColor = QBColor(12)
Else
If Form1.Label8.BackColor <> QBColor(8) Then
Form1.Label8.BackColor = QBColor(8)
End If
' Y7 接點顯示
If CInt(Mid$(disp_data$, 1, 1)) = 1 Then
If Form1.Label9.BackColor <> QBColor(12) Then
Form1.Label9.BackColor = QBColor(12)
Else
If Form1.Label9.BackColor <> QBColor(8) Then
Form1.Label9.BackColor = QBColor(8)
End If
Form1.Label10.BackColor = QBColor(8)
End Sub
22
Private Sub Form_Load()
Form1.Caption = "棒球監控"
'Command1.Caption = "九球制": Command2.Caption = "M1"
'Command3.Caption = "M2": Command4.Caption = "M3"
Option1.Caption = "開啟通訊埠"
Option2.Caption = "關閉通訊埠"
'Label1.Caption = "Y0": Label2.Caption = "Y1"
'Text1.Text = "讀取 Y0ch 之命令字串:"
'Text2.Text = "讀取 Y0ch 之回應字串:"
'Text3.Text = "寫入 M0ch 之命令字串:"
'Text4.Text = "寫入 M0ch 之回應字串:"
Timer1.Interval = 100
Timer1.Enabled = False
Option1.Value = False
flag% = 0
End Sub
23
Private Sub Option1_Click()
Call start_comm2
Timer1.Enabled = True
End Sub
Private Sub Option2_Click()
Call stop_comm2
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Label3.Caption = "現在時間: " + Time$
If flag% = 1 Then ' 讀取程序
PLC_DATA$ = read_nch$("M0144", 8)
Y0_CH_DATA$ = Mid$(PLC_DATA$, 1, 2)
Y10_CH_DATA$ = Mid$(PLC_DATA$, 3, 2)
D0_LOW$ = Mid$(PLC_DATA$, 5, 2)
D0_HIGH$ = Mid$(PLC_DATA$, 7, 2)
Y0CH_bin$ = hex2_to_bin8(Y0_CH_DATA$)
Y10CH_bin$ = hex2_to_bin8(Y10_CH_DATA$)
24
Call display(Y0CH_bin$)
Call display_Y10H(Y10CH_bin$)
Label13.Caption = Str$(hex4_to_dec&(D0_HIGH$ + D0_LOW$)) + "分"
' Y0_CH$ = read_nch$("Y0", 1)
' Text1.Text = "讀取 Y0ch 之命令字串:" + SXD$
' Text2.Text = "讀取 Y0ch 之回應字串:" + RXD$
' Y0_bin$ = hex2_to_bin8$(Y0_CH$)
' Call display(Y0_bin$)
' Text5.Text = "Y0ch 接點狀態: " + Y0_bin$
Else ' 寫出程序
bin8$ = ""
For i% = 0 To 7
bin8$ = Right$(Str$(M0CH%(i%)), 1) + bin8$
Next i%
M0_bin$ = bin8$
M0_CH$ = bin8_to_hex2$(bin8$)
aaa$ = write_nch$("M0", M0_CH$)
' Text3.Text = "寫入 M0ch 之命令字串:" + SXD$
25
' Text4.Text = "寫入 M0ch 之回應字串:" + RXD$
' Text6.Text = "M0ch 接點狀態: " + M0_bin$
For i% = 0 To 7
M0CH%(i%) = 0
Next i%
End If
flag% = 1 - flag%
End Sub
Private Sub display_Y10H(disp_data$)
' Y0 接點顯示
If CInt(Mid$(disp_data$, 8, 1)) = 1 Then
If Form1.Label10.BackColor <> QBColor(12) Then
Form1.Label10.BackColor = QBColor(12)
Else
If Form1.Label1.BackColor <> QBColor(8) Then
Form1.Label10.BackColor = QBColor(8)
End If
End Sub
26
PC PC PC PC 顯示畫面顯示畫面顯示畫面顯示畫面::::
玩法說明玩法說明玩法說明玩法說明:::: 共有 3種玩法:
1.1.1.1.投準遊戲玩法:
3x3,共 9 格不同格子,每擊中計分板則在電腦上顯示出擊中哪幾格。
2.2.2.2.積分遊戲玩法:
9 格分別為不同分數,每擊中計分板則在電腦上顯示出擊中幾分,並總合積
分。
3.3.3.3.賓果遊戲玩法:
3x3,9格共 8 種連線方式,每連成 1 線計 1分,並總合積分。
29
結論結論結論結論::::
關於這次專題製作,我們運用到 PLC、VB、單晶片、RF 無線傳輸模組來做
這次的專題,在這過程中遇到一些困難,剛開始用木條作框架但是發現重量
過輕,當球撞擊力道過大會使框架產生許多問題,後來改用鐵架增加重量,
使框架更加穩定。
我們的接觸面使用木板來測試接觸面,結果觸動效果不彰,後來又使用壓
克力板,結果接觸面的問題依然存在,最後經過一番的測試與努力,決定
採用布面來設計我們的九宮格接觸面。
但是,布面設計依然存在了一些困擾問題,傳統上的設計是一格一格的,
所以不會有互相牽連的問題,但是布面設計是一體性,所以會出現多重觸
發的動作,我們一開始用螺絲來固定布面各格數字的牽連,雖然有改善但
是問題還是存在。接下來我們用 PLC 的程式來加以互鎖,問題已排除八九
成。
最後在專題過程中學習到團隊合作有的問題一個人無法想出頭緒,但是透
過團隊討論,結合意見解決問題,讓先前上課內容應用到實作上,使硬體
和軟體作結合,以完成此專題。