Cung cấp bộ chuyển đổi tín hiệu rs232rs485 sang ethernet, modem gprs ip, bo do vong ... Như các bạn biết, RS232 có định nghĩa chuẩn giao diện cơ học ( giắc cắm), ở các máy ... Xem tiếp: Sự khác nhau giữa truyền thông RS485 và RS422.
LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ CHƯƠNG II : CHUẨNTRUYỀNTHÔNG RS485 VÀ ADAPTER CHUYỂN ĐỔI RS232 - RS485 I Giới thiệu: Những tổ chức tiêu chuẩn quốc tế cho truyền thông ITU ( International Communication Union) , EIA (Electronic Industry Association ) vaø ISO ( International Standards Organisaton) Những tiêu chuẩn ITU liên quan tới truyền thông nối tiếp đònh nghóa đặc điểm kỹ thuật V-series Sau số chuẩn truyền thông thường dùng công nghiệp RS-232C RS-449 , RS-422A , RS-423A RS-485 II RS-232c : Chuẩn RS-232C lần giới thiệu vào năm 1962 hiệp hội kỹ thuật điện tử EIA chuỗi giao tiếp truyền thong máy tính thiết bò ngoại vi ( modem , máy tính khác , máy vẽ , mouse …) Cổng giao tiếp RS-232C giao diện phổ biến rộng rãi Máy tính PC thường dùng chuột cho cổng COM1 , COM2 để trống cho ứng dụng khác Cùng với cổng máy in , cổng nối tiếp RS-232C sử dụng thuận tiện cho mục đích đo lường điều khiển Việc truyền liệu qua RS-232C tiến hành theo cách nối tiếp , nghóa bit liệu gửi nối tiếp đường truyền dẫn Trước hết , loại truyền dùng cho khoảng cách lớn khả gây nhiễu nhỏ đáng kể so với dùng cổng song song Mặt khác , việc dùng cổng song song có nhược điểm đáng kể cáp truyền dùng nhiều sợi làm tăng chi phí Hơn , tín hiệu nằm khoảng 0-5V không thích hợp với khoảng cách lớn Tốc độ baud thông thường có giá trò : 300, 1200 , 4800 , 9600 , 19200 baud SVTH : PHẠM NGỌC CƯỜNG 31 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ chân 25 chân Chức DCD – Data Carrier Detect (ngõ RXD – Receive Data ( ngõ vào) TXD – Transmit Data( ngoõ ra) 20 DTR – Data Terminal Ready ( ngõ GND – Ground ( nối đất) 6 DSR – Data Set Ready ( ngõ vào RTS – Request To Send ( ngoõ ra) CTS – Clear To Send ( ngõ vào) 22 RI – Ring Indicator ( ngõ ra) Bảng 1.1 Sắp xếp chân cổng nối tiếp máy tính Mức tín hiệu nhận truyền qua chân RXD TXD thông thường nằm khoảng –12V đến +12V , mức logic tín hiệu đảo ngược lại Mức điện áp mức High nằm –3V –12V , mức Low nằm +3V +12V Ở trạng thái tónh đường có điện áp – 12V , bít khởi động ( startbit) mở đầu cho việc truyền liệu , tiếp sau đến bit liệu ; bit có giá trò thấp gửi trước tiên Số bit liệu thay đổi Cuối bit dừng ( stop bit) đặt lại trạng thái lối ( -12V) Một yêu cầu quan trọng RS-232 thời gian chuyển từ mức logic tới mức logic khác không vượt 4% thời gian bit Vì , tốc độ 19200 baud , thời gian chuyển mức logic phải nhỏ 0.04/19200=2,1s Vấn đề làm giới hạn chiều dài đường truyền Với tốc độ truyền 19200 baud ta truyền xa 50ft ( khoảng 15m) Một vấn đề quan trọng cần ý sử dụng RS-232C mạch thu phát không cân ( đơn cực ) Điều có nghóa tín hiệu vào SVTH : PHẠM NGỌC CƯỜNG 32 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ so với đất Vì , điện hai điểm đất hai mạch thu phát không có dòng điện chạy trên dây đất Kết có áp rơi dây đất ( V=I.R) làm suy yếu tín hiệu logic Nếu truyền tín hiệu xa , điện trở R tăng dẫn đến áp rơi đất lớn dần đến lúc tín hiệu logic rơi vào vùng không xác đònh mạch thu không liệu truyền từ mạch phát Chính không cân mạch thu phát nguyên nhân giới hạn đường truyền III RS-422/485 : Khi thực thông tin tốc độ cao , qua khoảng cách lớn môi trường thực , phương pháp đơn cực (single-ended) thường không thích hợp Việc truyền dẫn liệu vi sai ( hay tín hiệu vi sai cân bằng) cho kết tốt phần lớn trường hợp Tín hiệu vi sai loại bỏ ảnh hưởng thay đổi việc nối đất giảm nhiễu xuất điện áp chung mạng RS422 thiết kế dùng cho khoảng cách tốc độ Baud rates lớn so với RS232 , mức tín hiệu lên đến 100K bít/giây khoảng cách đạt 4000ft RS422 tạo thành mạng multi-drop network với truyền khoảng 10 nhận Tuy nhiên , mạng multi-network thực gồm nhiều mạch phát nhận nối vào đường dây bus chung , node phát nhận SVTH : PHẠM NGỌC CƯỜNG 33 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ data RS485 đáp ứng yêu cầu Chuẩn RS485 cho phép 32 mạch truyền mạch nhận nối vào đường dây bus đơn (với repeater tự động truyền / nhận trở kháng cao, giới hạn mở rộng lên đến hàng trăm node mạng) Bên cạnh , RS485 chòu xung đột data(data collision) điều kiện lỗi đường dây bus Để giải vấn đề xung đột data thường xuất mạng multi-drop network , đơn vò phần cứng( converters, repeaters , micro-processor controls ) thiết kế để trì trạng thái nhận chúng sẵn sàng truyền data Một node master kích khởi yêu cầu truyền đến slave node cách đònh đòa node Phần cứng phát bit start ký tự truyền tự động cho phép truyền làm việc Sau ký tự truyền , phần cứng trở trạng thái nhận sau vài micro giây Khi có ký tự cần gửi , truyền tự động kích lại Như , slave node đònh đòa đáp ứng mà không cần thực khoảng delay dài để tránh xung đột Những ưu điểm RS485 so với RS232 : Chi phí thấp Bộ truyền nhận thường không đắt đòi hỏi nguồn đơn +5V ( thấp hơn) để tạo mức áp tối thiểu 1,5V ngõ vi sai Ngược lại , ngõ tối thiểu RS232 5V cần nguồn cung cấp kép chip có chi phí đáng kể để tạo nguồn Khả nối mạng Thay giới hạn đơn vò , RS485 giao diện cung cấp cho việc kết nối có nhiều truyền nhận Với nhận có trở kháng cao , RS485 cho kết nối lên đến 256 node Đường dây kết nối dài Một mạng RS485 dài đến 4000 feet so với RS232 có giới hạn từ 50 đến 100 feet Tốc độ nhanh RS485 cho tốc độ lên đến 10 Megabits/giây SVTH : PHẠM NGỌC CƯỜNG 34 LUẬN VĂN TỐT NGHIỆP NGHĨA SVTH : PHẠM NGỌC CƯỜNG 35 GVHD : NGUYỄN CHÍ LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ IV Full Duplex : Giao diện RS485 thiết kế để sử dụng hệ thống có nhiều node , với nhiều truyền nhận Phần lớn kết nối RS485 bán song công , truyền nhận dùng chung đường tín hiệu Tuy nhiên , ta dùng RS485 dạng song công , hướng truyền dùng đường tín hiệu riêng Đây giải pháp đơn giản ta muốn tạo kết nối dài , song công microcontrollers Các chip dùng cho RS485 nhỏ , đơn giản rẻ so với RS232 Thuận lợi cách kết nối tiết kiệm thời gian cho slave ( nhận) chúng đọc tín hiệu trả lời ( master) từ slave hỏi Tuy nhiên , dùng đường dây dài , chi phí tăng đáng kể V Half Duplex : Nhiều liên kết RS485 dạng bán song công , với nhiều nhận truyền dùng chung đường tín hiệu Khi liên kết có node nhiều hơn, ta ý có đường tín hiệu có node truyền thời điểm Do cần bảo đảm đường truyền trạng thái free node muốn truyền * Mạch bảo vệ bên : Trong kết nối bán song công , có truyền cho phép thời điểm cho dù thiết kế cẩn thận đến đâu , có trường hợp thời điểm hai nhiều truyền enable lúc Khi điều xảy ra, driver kéo đường dây theo trạng thái ngược , tín hiệu đường dây mức logic không xác đònh , tượng gọi tranh chấp đường dây (line contention) Tất chip RS485 có giới hạn dòng (curent limiting) tự động shutdown nhiệt (thermal shutdown) để bảo vệ chip có nhiều nhận cho phép lúc Giới hạn dòng hạn chế dòng truyền Theo chuẩn TIA/EIA485 mức giới hạn phải 250mA Nếu ngõ output tiếp tục đưa dòng cao , nhiệt độ chip SVTH : PHẠM NGỌC CƯỜNG 36 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ tăng lên cuối mạch bảo vệ nhiệt bên chip chuyển ngõ sang trạng thái trở kháng cao( high-impedance state) Điều đồng nghóa với việc ngõ sử dụng hạ nhiệt , bảo đảm linh kiện không bò hư VI Các Phương Pháp Truyền Thông Đơn công ( Simplex Communication) : truyền thông chiều Dữ liệu truyền theo chiều từ thiết bò sang thiết bò khác mà chiều ngược lại(hình 1.2) Bán song công ( Half Duplex Communication ) : thời điểm có node truyền node nhận Cho phép truyền hai chiều(hình 1.3) Song công ( Full Duplex Communication ) : cho phép truyền liệ đồng thời hai thiết bò(hình 1.4) Chuẩn RS-232C đònh nghóa chuẩn giao tiếp DTE ( Device Terminal Equipment – thường computer) DCE ( Device Communication Equipment – thiết bò ngoại vi) với khoảng cách truyền tối đa 50ft ( khoảng 15m ) tốc độ tối đa 20kps SVTH : PHẠM NGỌC CƯỜNG 37 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Chương III : BUS I2C I Hoạt Động Của Bus I2C : Bus I2C (viết tắt từ Inter-Ic-Bus) mối liên kết liệu dây nhiều xử lý (Master) khối ngoại vi cụ thể (slave).Tất vi mạch liên kết trực tiếp với bus trao đổi đòa vi mạch Các đòa liệu truyền đường dẫn Bus I2C cho phép hình thành mối liên kết đơn giản nhiều vi mạch cho phép dễ dàngù mở rộng thêm Tất vi mạch tham gia bus, khống chế giao thức theo cách riêng Bên cạnh nhớ RAM, EEPROM, vi mạch mở rộng cổng, biến dổi A/D D/A vi mạch đồng hồ có nhiều vi mạch chuyên dụng, chẳng hạn đệm hiển thò vi mạch dùng kỹ thuật truyền hình Tất vi mạch có thểû điều khiển dễ dàng trực tiếp qua hai đường dẫn dao diện song song với máy tính PC Chỉ cần bổ sung thêm vi mạch, cổng nối tiếp sử dụng II Truyền Dữ Liệu Đònh Đòa Chỉ : Bus I2C sử dụng đường dẫn: Đường dẫn liệu nối tiếp SDA Đøng dẫn giữ nhòp SCL Giống ghi dòch, liệu đòa truyền theo nhòp Cả hai đường dẫn sử dụng theo hướng liệu Mỗi đường dẫn có điện trở nối lên SVTH : PHẠM NGỌC CƯỜNG 38 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ nguồn(Pull-up) thành viên kéo xuống mức LOW qua lối cực góp hở cực máng hở Thành viên bus không kích hoạt trạng thái có điện trở cao, giám sát tín hiệu truyền bus Khi có vi mạch chủ sử dụng, vi mạch tự xuất tín hiệu giữ nhòp để sủ dụng Dữ liệu đến từ vi mạch chủ từ vi mạch tớ Giao thức bus I2C nhận biết dẵy tình đẵ đònh nghóa xác, tình giới thiệu thành viên bus, để nhận dạng chỗ bắt dầu kết thúc truyền cách đònh đòa có Trạng thái yên tónh: SDA SCL mức HIGH không kích hoạt Điều kiện bắt đầu( Start): SDA vi mạch master chuyển sang mức thấp, SCL giữ nguyên mức HIGH Điều kiện dừng (Stop) : SDA chuyển từ trạng thái LOW sang HIGH, SCL giữ nguyên mức HIGH Truyền liệu : Mỗi truyền xếp tám bít liệu lên đường dẫn liệu SDA, xung giữ nhòp bít vi mạch chủ(master) đẩy tiếp lên đường giữ nhòp SCL Việc truyền liệu bắt đầu với bít có giá trò lớn Xác nhận (Acknowledge):Mỗi nhận kết thúc qúa trình nhận môït byte mức LOW đường dẫn SDA, vi mạch chủ tạo xung đồng hồ thứ chín đường dẫn SCL Việc xác nhận đồng thời có nghóa byte cần nhận Việc kết thúc truyền theo mong muốn cần phải báo trước việc không xuất xác nhận Sự kết thúc thật truyền đạt tới điều kiện dừng(Stop) Các đòa truyền kết thúc giống hệt liệu Trong trường hợp đơn giản truyền liệu từ vi mạch chủ tới vi mạch tớ(slave) chẳng hạn tới cổng lối ra, qúa trình diễn sau: Vi mạch chủ (master) tạo diều kiện bắt đầu truyền đòa vi mạch cổng vào bit đến hướng mong muốn truyền liệu SVTH : PHẠM NGỌC CƯỜNG 39 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ vào bit 0, cụ thể trường hợp "ghi" trường hợp "đọc" Việc truyền đòa kết thúc vi mạch tớ (slave) cần trao đổi Sau vi mạch chủ (master) gửi byte liệu để kết thúc qúa trình truyền Vi mạch chủ chấm dứt mối liên kết điều kiện Stop gửi byte tới vi mạch Các đòa chỉ vi mạch có độ dài bit,trong bit hướng liệu truyền bổ sung sau Thông thương đòa vi mạch qui đònh để rõ loại bit cao lựa chọn tự bit thấp (A0 - A2) mạch điện bên Nhiều vi mạch loại hoạt động bus Tổng cộng có đến 128 vi mạch sử dụng bus Đòa bus I2C với hướng liệu A6 A5 A4 A3 A2 A1 A0 R/W Khi caàn đọc liệu từ vi mạch tớ (slave), đòa cần phải truyền bit hướng liệu đẵ đặt Vi mạch chủ xuất nhóm tám xung đồng hồ nhận tám bit liệu Cho đến xác nhận nhận liệu Acknowledge, xung đồng hồ thú chín, vi mạch nhận byte tiếp theo.Cuối cùng, truyền vi mạch chủ kết thúc việc không đưa tín hiệu xác nhận (Nacknowledge ) kèm theo điều kiện dừng Mỗi mạch I2C có đòa đẵ quy đònh, đòa phần quy đònh để đặc trưng cho loại phần khác thay đổi qua đường dẫn đòa dẫn Điều có nghóa là,chẳng hạn với ba đường đòa dẫn có tới tám vi mạch loại đấu nối vào bus Tốùc độ giữ nhòp cực đại dùng cho bus I 2C 100 KHz Các chương trình giới thiệu sử dụng thời gian chờ 10ms, để tránh tình trạng vượt SVTH : PHẠM NGỌC CƯỜNG 40 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ DKRA: ;XUAT TIN HIEU DKRA RA P3.5 DE KIEM TRA CLR P3.5 ACALL DELAY100MS SETB P3.5 RET I2CINIT: SETB P1.6 ;SDA = SETB P1.7 ;SCL = RET I2CSTART: CLR P1.6 ;SDA = SETB P1.7 ;SCL = CLR P1.7 ;SCL = RET I2CSTOP: CLR P1.6;SDA = CLR P1.7;SCL = SETB P1.7 ;SCL = SETB P1.6 ;SDA = RET ACK: CLR P1.6;SDA = CLR P1.7;SCL = SETB P1.7 ;SCL = CLR P1.7;SCL = NACK: SETB P1.6 ;SDA = CLR P1.7;SCL = SETB P1.7 ;SCL = CLR P1.7;SCL = RET XUATRA: MOV MEM20,A ;BO NHO TRUNG GIAN MOV A,#8 MOV MEM19,A ;BO DEM DUNG CHO BIT LAP: MOV A,MEM20 ANL A,#128 ;CHE BIT RR A ;SAU BIT (SDA) ADD A,#3FH SVTH : PHẠM NGỌC CƯỜNG 86 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ MOV P1,A SETB P1.7 CLR P1.7 MOV A,MEM20 RL A ;BIT TIEP THEO MOV MEM20,A DJNZ MEM19,LAP ;BO DEM GIAM SETB P1.6 CLR P1.7 SETB P1.6 SETB P1.7 CLR P1.7 RET DOCVAO: SETB P1.6 ;SDA = CLR P1.7 ;SCL = MOV MEM20,#0 MOV MEM19,#8 LAP1: SETB P1.7 ;SCL = MOV A,MEM20 RL A MOV B,A MOV A,P1 ANL A,#64 ;DOC SDA RL A RL A ;BIT ADD A,B MOV MEM20,A ;LUU TRU CLR P1.7 ;SCL = DJNZ MEM19,LAP1 ;8 LAN RET DOCROM: ACALL I2CSTART MOV A,#10100000B ;DIA CHI AT24C02,VIET ACALL XUATRA MOV A,#0 ;DIA CHI BAT DAU ACALL XUATRA ACALL I2CSTOP ACALL I2CSTART MOV A,#10100001B ;DIA CHI AT24C02,DOC SVTH : PHẠM NGỌC CƯỜNG 87 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ ACALL XUATRA ACALL DOCVAO ACALL NACK ACALL I2CSTOP RET DELAY100MS: PUSH B MOV B,#2 LAP2: MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ B,LAP2 POP B RET END CHƯƠNG TRÌNH VISUAL BASIC Option Explicit Dim data(1 To 12) As Byte Dim Memout(1 To 4) As Byte Dim Memin(1 To 4) As Byte Dim Mem(1 To 12) As Byte Dim Datain() As Byte Dim Dataout(0) As Byte SVTH : PHẠM NGỌC CƯỜNG 88 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Dim Bufferin As Variant Dim Bufferout As Variant Dim lap As Boolean Private Sub cmddisplay_Click() Load Form2 Form2.Show End Sub Private Sub cmdStart_Click() Dim i, j, k As Integer Dim x, y, z As Integer Dim CY As Boolean For i = To 12 Mem(i) = i Next i For i = To 12 data(i) = Datacd(i) = Next i x=0 y=0 z=0 'Vong lap chuong trinh chinh lap = True Do 'Cho tin hieu co bang tai tu VXL4 Do CY = False DoEvents If (MSComm1.InBufferCount >= 1) Then Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) = &H44 Then CY = True End If End If Loop Until CY = True SVTH : PHẠM NGỌC CƯỜNG 89 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Beep For i = To 12 Mem(i) = Mem(i) - If Mem(i) = Then Mem(i) = 12 End If Next i Memin(1) = Mem(1) Memout(1) = Mem(2) Memin(2) = Mem(4) Memout(2) = Mem(5) Memin(3) = Mem(7) Memout(3) = Mem(8) Memin(4) = Mem(10) Memout(4) = Mem(11) 'Hien thi 12 san pham For i = To 12 If data(Mem(i)) Then Frame1(i - 1).Visible = True Text1(i - 1).Text = Mem(i) Text2(i - 1).Text = data(Mem(i)) If (Datacd(data(Mem(i))) And &H1) = &H1 Then Check1(i - 1).Value = Else: Check1(i - 1).Value = End If If (Datacd(data(Mem(i))) And &H2) = &H2 Then Check2(i - 1).Value = Else: Check2(i - 1).Value = End If If (Datacd(data(Mem(i))) And &H4) = &H4 Then Check3(i - 1).Value = Else: Check3(i - 1).Value = End If Else: Frame1(i - 1).Visible = False End If Next i SVTH : PHAÏM NGỌC CƯỜNG 90 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ For i = To 12 If data(Mem(i)) Then Shape3(i - 1).Visible = True Else: Shape3(i - 1).Visible = False End If Next i 'Dieu khien vao cong doan If data(Memin(1)) Then 'Co san pham 'Cong doan lam chua If (Datacd(data(Memin(1))) And &H1) &H1 Then Dataout(0) = &H11 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) &H41 Then data(Memin(1)) = x=x+1 If x > Then x=4 End If End If End If End If 'Dieu khien vao cong doan If data(Memin(2)) Then 'Co san pham 'Cong doan lam chua If (Datacd(data(Memin(2))) And &H2) &H2 Then Dataout(0) = &H12 SVTH : PHẠM NGỌC CƯỜNG 91 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) &H42 Then data(Memin(2)) = y=y+1 If y > Then y=4 End If End If End If End If 'Dieu khien vao cong doan If data(Memin(3)) Then 'Co san pham 'Cong doan lam chua If (Datacd(data(Memin(3))) And &H4) &H4 Then Dataout(0) = &H13 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) &H43 Then data(Memin(3)) = z=z+1 If z > Then z=4 End If End If End If SVTH : PHẠM NGỌC CƯỜNG 92 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ End If 'Dieu khien vao cong doan If data(Memin(4)) Then 'Co san pham 'San pham lam xong cong dan chua ? If (Datacd(data(Memin(4))) And &H7) = &H7 Then Dataout(0) = &H14 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = data(Memin(4)) = End If End If 'Dieu khien cong doan If data(Memout(1)) = Then 'Khong co san pham Dataout(0) = &H21 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) = &H31 Then data(Memout(1)) = Datain(2) Datacd(data(Memout(1))) = Datacd(data(Memout(1))) Or &H1 x=x-1 If x < Then x=0 End If SVTH : PHẠM NGỌC CƯỜNG 93 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ End If End If 'Dieu khien cong doan If data(Memout(2)) = Then 'Khong co san pham Dataout(0) = &H22 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) = &H32 Then data(Memout(2)) = Datain(2) Datacd(data(Memout(2))) = Datacd(data(Memout(2))) Or &H2 y=y-1 If y < Then y=0 End If End If End If 'Dieu khien cong doan If data(Memout(3)) = Then 'Khong co san pham Dataout(0) = &H23 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) = &H33 Then data(Memout(3)) = Datain(2) SVTH : PHẠM NGỌC CƯỜNG 94 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Datacd(data(Memout(3))) = Datacd(data(Memout(3))) Or &H4 z=z-1 If z < Then z=0 End If End If End If 'Dieu khien cong doan If data(Memout(4)) Then 'Co san pham Dataout(0) = 79 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Else: 'Khong co san pham Dataout(0) = &H24 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = Do DoEvents Loop Until MSComm1.InBufferCount >= Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = If Datain(0) = &H34 Then data(Memout(4)) = Datain(2) Datacd(data(Memout(4))) = End If Dataout(0) = 79 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = End If 'Hien thi 12 san pham sau da dieu khien Vao va Ra For i = To 12 If data(Mem(i)) Then Frame1(i - 1).Visible = True SVTH : PHẠM NGỌC CƯỜNG 95 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Text1(i - 1).Text = Mem(i) Text2(i - 1).Text = data(Mem(i)) If (Datacd(data(Mem(i))) And &H1) = &H1 Then Check1(i - 1).Value = Else: Check1(i - 1).Value = End If If (Datacd(data(Mem(i))) And &H2) = &H2 Then Check2(i - 1).Value = Else: Check2(i - 1).Value = End If If (Datacd(data(Mem(i))) And &H4) = &H4 Then Check3(i - 1).Value = Else: Check3(i - 1).Value = End If Else: Frame1(i - 1).Visible = False End If Next i For i = To 12 If data(Mem(i)) Then Shape3(i - 1).Visible = True Else: Shape3(i - 1).Visible = False End If Next i 'Hien thi so san pham tai cong doan Select Case x Case For i = To Shape4(i).Visible = False Next i Case Shape4(0).Visible = True Shape4(1).Visible = False Shape4(2).Visible = False Shape4(3).Visible = False Case SVTH : PHẠM NGỌC CƯỜNG 96 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Shape4(0).Visible = True Shape4(1).Visible = True Shape4(2).Visible = False Shape4(3).Visible = False Case For i = To Shape4(i).Visible = True Next i Shape4(3).Visible = False Case For i = To Shape4(i).Visible = True Next i End Select 'Hien thi so san pham tai cong doan Select Case y Case For i = To Shape5(i).Visible = False Next i Case Shape5(0).Visible = True Shape5(1).Visible = False Shape5(2).Visible = False Shape5(3).Visible = False Case Shape5(0).Visible = True Shape5(1).Visible = True Shape5(2).Visible = False Shape5(3).Visible = False Case For i = To Shape5(i).Visible = True Next i Shape5(3).Visible = False Case For i = To Shape5(i).Visible = True Next i End Select SVTH : PHẠM NGỌC CƯỜNG 97 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ 'Hien thi so san pham tai cong doan Select Case z Case For i = To Shape6(i).Visible = False Next i Case Shape6(0).Visible = True Shape6(1).Visible = False Shape6(2).Visible = False Shape6(3).Visible = False Case Shape6(0).Visible = True Shape6(1).Visible = True Shape6(2).Visible = False Shape6(3).Visible = False Case For i = To Shape6(i).Visible = True Next i Shape6(3).Visible = False Case For i = To Shape6(i).Visible = True Next i End Select 'Kiem tra Error (neu co nhieu san pham cung ma Rom tren bang tai) k=2 For i = To 11 For j = k To 12 If (data(i) = data(j)) And data(i) Then MsgBox "Co san pham cung ma Rom", , "Error" End If Next j k=k+1 Next i Loop Until lap = False End Sub SVTH : PHẠM NGỌC CƯỜNG 98 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Private Sub cmdStop_Click() lap = False Unload Form1 End Sub Private Sub Form_Load() MSComm1.Settings = "9600,n,8,1" MSComm1.InputLen = MSComm1.InputMode = comInputModeText MSComm1.CommPort = MSComm1.PortOpen = True End Sub Private Sub Unload_form() MSComm1.PortOpen = False End Sub BÁO CÁO KẾT QUẢ THI CÔNG * Chương trình viết đọc Seeprom AT24C02 : SVTH : PHẠM NGỌC CƯỜNG 99 LUẬN VĂN TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ Viết đọc giá trò * Chương trình điều khiển dây chuyền sản suất : Chương trình điều khiển chạy yêu cầu đặt ban đầu dây chuyền sản xuất SVTH : PHẠM NGỌC CƯỜNG 100 ... TỐT NGHIỆP NGHĨA GVHD : NGUYỄN CHÍ data RS485 đáp ứng yêu cầu Chuẩn RS485 cho phép 32 mạch truyền mạch nhận nối vào đường dây bus đơn (với repeater tự động truyền / nhận trở kháng cao, giới hạn... chúng sẵn sàng truyền data Một node master kích khởi yêu cầu truyền đến slave node cách đònh đòa node Phần cứng phát bit start ký tự truyền tự động cho phép truyền làm việc Sau ký tự truyền , phần... RS485 giao diện cung cấp cho việc kết nối có nhiều truyền nhận Với nhận có trở kháng cao , RS485 cho kết nối lên đến 256 node Đường dây kết nối dài Một mạng RS485 dài đến 4000 feet so với RS232