Bài tập Đo lường điều khiển bằng máy tính - Nguyễn Thanh Bình
- Bấm START gởi xuống 5 byte: “@” hai byte bềrộng xung (Text1) hai byte chu kỳ
xung (Text2), Text1 và Text2 chứa sốthập phân từ1 đến 10000, đơn vịthời gian msec.
- Bấm STOP gởi xuống 1 byte “!”.
- Sau khi gởi dữliệu 0,1 giây, nếu không nhận được phản hồi thì báo dòng chữ“Not
Connected”.
- Máy tính nhận được “@” cho đèn shape màu xanh
- Máy tính nhận được “!” cho đèn shape màu đỏ
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA BÀI TẬP ĐO LƯỜNG ĐIỀU KHIỂN BẰNG MÁY TÍNH Lớp: DD11KSTD Họ và tên SV: Nguyễn Thanh Bình MSSV: 41100306 BÀI TẬP 4. Điều khiển đèn GT: a. Xanh A : Trong 15s b. Vàng A : Trong 3s c. Xanh B : Trong 25s d. Vàng B : Trong 4s Mở rộng cho chế độ người đi bộ. INT_0 INT_1 8. Viết chương trình tạo PWM chu kỳ 1s, bề rộng tùy thuộc vào ô nhớ giá trị sai số trong ô nhớ MW0 MW0 >= 100 T = 1s MW0 <100 T = MW0/100 MW0<0 T =0 I0.0 start I0.1 stop I0.2 30% (MW0 = 30) I0.3 70% (MW0 = 70) I0.4 100% (MW0 = 100) Default: 10% 9. Viết chương trình VB truyền VW0 xuống PLC Dim strText As String Private Sub btnExit_Click() MSComm1.PortOpen = False End End Sub Private Sub btnSend_Click() Dim TempVal Dim blnErrorFlag As Boolean If IsNumeric(Val(strText)) Then TempVal = Val(strText) If ((TempVal >= -32768) And (TempVal <= 32767)) Then MSComm1.Output = "@" + Chr(TempVal / 256) + Chr(TempVal Mod 256) + "$" blnError = False Else blnError = True End If Else blnError = True End If If blnError Then MsgBox "Invalid input", vbOKOnly, "Error" Else MsgBox "Data sent", vbOKOnly, "Serial transmitter" End If End Sub Private Sub Form_Load() If MSComm1.PortOpen Then MSComm1.PortOpen = False End If MSComm1.Settings = "9600,N,8,1" MSComm1.CommPort = 3 MSComm1.RThreshold = 0 MSComm1.PortOpen = True strText = 0 Text1.Text = "0" End Sub Private Sub Text1_Change() strText = Text1.Text End Sub BÀI TẬP BỔ SUNG 4. Viết chương trình tưới cây tự động sau mỗi 3h, mỗi lần 30 phút; Thời gian từ 6h đến 20h hằng ngày. 7. Viết chương trình đọc AIW0 sau mỗi 100ms, truyền về máy tính. Sữ dụng ngắt. 8. Viết chương trình tính tổng 100 số word trong 2 vùng VW0 và VW200 bỏ vào VW500 10. Viết chương trình PLC phát xung PWM ởQ0.1 - Nhận được „@‟và bốn byte theo sau thì phát xung điều rộng ởQ0.1 và gởi lên máy tính „@‟ - Nhận được „!‟thì ngừng phát xung và gởi lên máy tính „!‟ INT_0 11. Viết chương trình VB6.0 giao tiếp S7-200 COM1, 19200,N,8,1. - Bấm START gởi xuống 5 byte: “@” hai byte bềrộng xung (Text1) hai byte chu kỳ xung (Text2), Text1 và Text2 chứa sốthập phân từ1 đến 10000, đơn vịthời gian msec. - Bấm STOP gởi xuống 1 byte “!”. - Sau khi gởi dữliệu 0,1 giây, nếu không nhận được phản hồi thì báo dòng chữ“Not Connected”. - Máy tính nhận được “@” cho đèn shape màu xanh - Máy tính nhận được “!” cho đèn shape màu đỏ Bài làm: Dim strLastText1 As String Dim strLastText2 As String Dim flgStart As Boolean Private Sub btnExit_Click() MSComm1.PortOpen = False End End Sub Private Sub btnStart_Click() Dim strSend As String Dim intSend1 As Integer Dim intSend2 As Integer intSend1 = Val(Text1.Text) intSend2 = Val(Text2.Text) If intSend1 <= intSend2 Then strSend = "@" + Chr(intSend1 \ 256) + Chr(intSend1 Mod 256) + Chr(intSend2 \ 256) + Chr(intSend2 Mod 256) If flgStart = False Then MSComm1.PortOpen = True flgStart = True End If MSComm1.Output = strSend Timer1.Enabled = True Else MsgBox "The Text2's value must be greater than or equal to the Text1's one", vbOKOnly, "Error" End If End Sub Private Sub btnStop_Click() If flgStart = True Then Timer1.Enabled = False MSComm1.Output = "!" MSComm1.PortOpen = False flgStart = False End If Shape1.FillColor = vbBlack Label1.Caption = "Not Connected" End Sub Private Sub Form_Load() btnStart.Caption = "START" btnStop.Caption = "STOP" btnExit.Caption = "EXIT" Shape1.Shape = 3 Shape1.FillColor = vbBlack Shape1.FillStyle = 0 If MSComm1.PortOpen Then MSComm1.PortOpen = False End If MSComm1.Settings = "19200,n,8,1" MSComm1.CommPort = 1 MSComm1.RThreshold = 1 MSComm1.PortOpen = True Text1.Text = "0" Text2.Text = "0" strLastText1 = "0" strLastText2 = "0" Timer1.Interval = 100 ' 0.1 sec Timer1.Enabled = False Label1.FontSize = 12 Label1.Caption = "Not Connected" flgStart = False End Sub Private Sub Text1_Change() If (Not IsNumeric(Text1.Text)) And Text1.Text "" Then Text1.Text = strLastText1 Text1.SelStart = Len(strLastText1) Else If Val(Text1.Text) > 10000 Then Text1.Text = strLastText1 Text1.SelStart = Len(strLastText1) MsgBox "Overflow", vbOKOnly, "Error" Else strLastText1 = Text1.Text End If End If End Sub Private Sub Text2_Change() If (Not IsNumeric(Text2.Text)) And Text2.Text "" Then Text2.Text = strLastText2 Text2.SelStart = Len(strLastText2) Else If Val(Text2.Text) > 10000 Then Text2.Text = strLastText2 Text2.SelStart = Len(strLastText2) MsgBox "Overflow", vbOKOnly, "Error" Else strLastText2 = Text2.Text End If End If End Sub Private Sub Timer1_Timer() Dim strReceive As String If MSComm1.InBufferCount > 0 Then strReceive = MSComm1.Input If Right(strReceive, 1) = "!" Then Shape1.FillColor = vbRed End If If Right(strReceive, 1) = "@" Then Shape1.FillColor = vbGreen End If Else Shape1.FillColor = vbBlack Label1.Caption = "Not Connected" End If End Sub
File đính kèm:
- bai_tap_do_luong_dieu_khien_bang_may_tinh_nguyen_thanh_binh.docx