Tải bản đầy đủ (.doc) (65 trang)

CHƯƠNG 3 BUS i2c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (245.84 KB, 65 trang )

Chương III :

BUS I2C

I. Hoạt Động Của Bus I2C :
Bus I2C (viết tắt từ Inter-Ic-Bus) là một mối liên kết dữ liệu 2 dây giữa một
hoặc nhiều bộ xử lý (Master) và những khối ngoại vi cụ thể (slave).Tất cả các vi
mạch đều liên kết trực tiếp với bus và được trao đổi dưới đòa chỉ của từng vi mạch.
Các đòa chỉ và dữ liệu được truyền trên chính các đường dẫn. Bus I2C cho phép
hình thành một mối liên kết đơn giản giữa nhiều vi mạch và cho phép dễ dàngù mở
rộng thêm.
Tất cả các vi mạch tham gia bus, khống chế giao thức theo một cách riêng .
Bên cạnh các bộ nhớ RAM, EEPROM, các vi mạch mở rộng cổng, các bộ biến dổi
A/D và D/A cũng như các vi mạch đồng hồ còn có nhiều vi mạch chuyên dụng,
chẳng hạn bộ đệm hiển thò hoặc các vi mạch dùng trong kỹ thuật truyền hình . Tất
cả các vi mạch này đều có thểû điều khiển dễ dàng và trực tiếp qua hai đường dẫn
của dao diện song song với máy tính PC. Chỉ cần bổ sung thêm rất ít các vi mạch,
cổng nối tiếp cũng có thể được sử dụng.
II . Truyền Dữ Liệu và Đònh Đòa Chỉ :
Bus I2C sử dụng 2 đường dẫn:
 Đường dẫn dữ liệu nối tiếp SDA
 Đøng dẫn giữ nhòp SCL
Giống như ở thanh ghi dòch, dữ liệu và đòa chỉ được truyền cùng theo một
nhòp .Cả hai đường dẫn đều có thể được sử dụng theo từng hướng dữ liệu. Mỗi
đường dẫn đều có một điện trở nối lên nguồn(Pull-up) và có thể được mỗi thành
viên kéo xuống mức LOW qua các lối ra cực góp hở hoặc 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, nhưng vẫn luôn giám sát các
tín hiệu truyền trên bus. Khi chỉ có một vi mạch chủ được sử dụng, vi mạch này tự
xuất ra tín hiệu giữ nhòp để sủ dụng. Dữ liệu có thể đến từ vi mạch chủ cũng như
từ vi mạch tớ.
Giao thức bus I2C nhận biết một dẵy các tình huống đẵ được đònh nghóa


chính xác, các tình huống này giới thiệu từng thành viên bus, để nhận dạng chỗ
bắt dầu và kết thúc của một cuộc truyền cũng như cách đònh đòa chỉ có thể có của
nó.
 Trạng thái yên tónh: SDA và SCL ở mức HIGH và do vậy là không kích hoạt.


 Điều kiện bắt đầu( Start): SDA được vi mạch master chuyển sang mức thấp, trong
khi 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, trong khi SCL
giữ nguyên ở mức HIGH.
 Truyền dữ liệu : Mỗi bộ truyền xếp tám bít dữ liệu lên đường dẫn dữ liệu SDA,
bằng các xung giữ nhòp các bít này được vi mạch chủ(master) đẩy tiếp lên đường
giữ nhòp SCL. Việc truyền dữ liệu bắt đầu với bít có giá trò lớn nhất.
 Xác nhận (Acknowledge):Mỗi bộ nhận kết thúc qúa trình nhận môït byte bằng một
mức LOW ở đường dẫn SDA, cho đến khi vi mạch chủ tạo ra xung đồng hồ thứ
chín ở đường dẫn SCL. Việc xác nhận đồng thời có nghóa là một byte tiếp theo cần
được nhận. Việc kết thúc cuộc truyền theo mong muốn cần phải được báo trước
bằng việc không xuất hiện sự xác nhận. Sự kết thúc thật sự của cuộc truyền được
đạt tới bằng điều kiện dừng(Stop).
Các đòa chỉ được truyền và kết thúc giống hệt như dữ liệu. Trong trường hợp
đơn giản nhất là cuộc truyền dữ liệu từ vi mạch chủ tới một vi mạch tớ(slave)
chẳng hạn tới một cổng lối ra, các qúa trình diễn ra sau: Vi mạch chủ (master) tạo
ra diều kiện bắt đầu và truyền đòa chỉ của vi mạch cổng vào các bit 7 đến 1 và
hướng mong muốn truyền dữ liệu vào bit 0, cụ thể là 0 đối với trường hợp "ghi"
và 1 đối với trường hợp "đọc". Việc truyền đòa chỉ được kết thúc bởi vi mạch tớ
(slave) cần trao đổi. Sau đó vi mạch chủ (master) gửi byte dữ liệu và cũng là để
kết thúc một qúa trình truyền. Vi mạch chủ có thể chấm dứt mối liên kết bằng
điều kiện Stop hoặc gửi các byte tiếp theo tới chính các vi mạch ấy.
Các đòa chỉ chỉ vi mạch có độ dài 7 bit,trong đó còn một bit hướng dữ liệu
được truyền bổ sung sau cùng. Thông thương các đòa chỉ vi mạch được qui đònh để

chỉ rõ loại trong 4 bit cao hơn và có thể được lựa chọn tự do trong 3 bit thấp hơn
(A0 - A2) bằng mạch điện bên ngoài. Nhiều vi mạch cùng một loại cũng có thể
hoạt động trên cùng một bus. Tổng cộng có thể có đến 128 vi mạch có thể được sử
dụng trên cùng một bus.
Đòa chỉ bus I2C với hướng dữ liệu
A A A A A A A R/
6
5
4
3
2
1
0
W
Khi cần đọc dữ liệu từ một vi mạch tớ (slave), đòa chỉ cần phải được truyền
bằng bit hướng dữ liệu đẵ được đặt. Vi mạch chủ xuất ra từng nhóm tám xung
đồng hồ và nhận được tám bit dữ liệu. Cho đến khi nó xác nhận cuộc nhận dữ liệu
bằng Acknowledge, ở xung đồng hồ thú chín, vi mạch này có thể nhận các byte


tiếp theo.Cuối cùng, cuộc truyền được vi mạch chủ kết thúc bằng việc không đưa
ra tín hiệu xác nhận (Nacknowledge ) và kèm theo là điều kiện dừng.
Mỗi mạch I2C đều có một đòa chỉ đẵ được quy đònh, đòa chỉ này một
phần được quy đònh để đặc trưng cho từng loại còn một phần khác được thay đổi
qua các đường dẫn đòa chỉ được dẫn ra ngoài. Điều đó có nghóa là,chẳng hạn với
ba đường đòa chỉ được dẫn ra ngoài có tới tám vi mạch cùng loại có thể được đấu
nối vào bus.
Tốùc độ giữ nhòp cực đại dùng cho bus I2C bằng 100 KHz. Các chương trình
được giới thiệu dưới đây sử dụng thời gian chờ bằng 10ms, để tránh tình trạng
vượt qúa tốc độ cưc đại khi cho chạy trên các máy tính nhanh.

III. Bus I2C Dùng SEEPROM AT24C0X
Đây là 1 bộ nhớ cố đònh (permanent),có thể được xoá và ghi bằng điện mà
không cần cung cấp điện áp làm việc phụ thêm.
 24C01 128 bytes
 24C02 256 bytes
 24C03 512 bytes
 24C04 1024 bytes
 24C08 2048 bytes
Các bộ nhớ SEEPROM có dung lượng nhỏ thường được sử dụng để thiết lập
các dữ liệu đònh chuẩn hoặc một lương dữ liệu không đáng kể khác một cách
độc lập với nguồn cung cấp vào một hệ thống. Các vi mạch này bảo đảm việc
lưu trữ dữ liệu được trên 10 năm. Một ưu điểm khác là việc thiết kế mạch đơn
giản,đồng nghóa với việc không cần đến điện áp bổ sung dùng cho bộ nạp
chương trình,bởi vì một điện áp cao hơn đã được tạo ra ngay trên chip.


Vcc

7
3
2
1

AT24C02
WP

VCC

A2
A1

A0

SDA
SCLK
GND

39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8

8
5
6
4

P0.0/AD0
P0.1/AD1

P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

19
18
9
31

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
XTAL1
XTAL2
RST
EA/VPP
AT89C51

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11

P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INTO
P3.3/INT1
P3.4/TO
P3.5/T1
P3.6/WR
P3.7/RD
PSEN
ALE/PROG

21
22
23
24
25
26
27
28
10
11
12
13
14
15
16

17
29
30


Viết AT24C0X : Xóa ghi EEPROM,max 2 bytes

S Đòa chỉ
Slave

0

A Đòa chỉ bộ
nhớ

Viết

A Viết
byte 1
Ack của Slave

A Viết
byte 2

A S

Đọc AT24C0X :
S Đòa chỉ
Slave


0

A Đòa chỉ bộ
nhớ

Viết

Đọc
byte 1

A Đọc
A
byte 2
Ack của Master

A S Đòa chỉ
Slave

1

A

Ack của Slave

Đọc
NAC S
byte n
K
không có NACK


Khi đọc ra,sau đòa chỉ vi mạch,trước hết là đòa chỉ byte của byte đầu tiên
mong muốn phải được chỉ đònh . Sau đó,điều kiện ngừng cần phải được xuất ra để
trao đổ với vi mạch theo hướng đọc ra. Trên đó nhiều byte có thể đïc đọc ra một
cách tùy ý. Một bộ đệm đòa chỉ bên trong tự động tăng thêm một.
Khi lập trình (viết) cấn chú ý là sau đòa chỉ vi mạch,đòa chỉ byte mong muốn
cần được chuyển giao. Sau đó,tiếp theo là byte dữ liệu cần được lập trình.Cũng có
thể xảy ra trường hợp hai byte được truyền kế tiếp nhau. Khi đó,quá trình lập trình
và xoá thực tế bắt đầu ngay sau điều kiện ngừng.


III. CHÖÔNG TRÌNH VIEÁT EEPROM AT24C0X TÖØ PC :
1. Chöông trình vi xöû lí :
ORG 0000H
MEM1 EQU 30H
MEM2 EQU 31H
MEM19 EQU 50H
MEM20 EQU 51H
MAIN:
MOV SCON,#01010010B
CLR TR1
MOV TMOD,#21H
MOV TH1,# -3
SETB TR1
LOOP:
;Nhan tin hieu tu PC
ACALL INCHAR
CJNE A,#79,NEXT
;CT write a byte
ACALL INCHAR
MOV MEM1,A

; Address 24C02
ACALL INCHAR
MOV MEM2,A
; Data 24C02
ACALL VIETROM
;Delay thoi gian de nap Rom
ACALL DELAY100MS
;Goi CT con docrom
NEXT:


CJNE A,#79,LOOP
;CT Read a byte
;Khai bao cac CT con
ACALL INCHAR
MOV MEM1,A
; Address 24C02
ACALL DOCROM
;Phat len PC gia tri rom doc duoc
ACALL OUTCHAR
;Xuat ra P2 de kiem tra
MOV P2,A
SJMP LOOP
INCHAR:
JNB RI,$
CLR RI
MOV A,SBUF
RET
OUTCHAR:
JNB TI,$

CLR TI
MOV SBUF,A
RET
I2CINIT:
SETB P1.6 ;SDA = 1
SETB P1.7 ;SCL = 1
RET
I2CSTART:
CLR P1.6 ;SDA = 0
SETB P1.7 ;SCL = 1
CLR P1.7 ;SCL = 0
RET
I2CSTOP:
CLR P1.6 ;SDA = 0
CLR P1.7 ;SCL = 0
SETB P1.7 ;SCL = 1
SETB P1.6 ;SDA = 1
RET
ACK:
CLR P1.6 ;SDA = 0


CLR P1.7
SETB P1.7
CLR P1.7
NACK:
SETB P1.6
CLR P1.7
SETB P1.7
CLR P1.7

RET

;SCL = 0
;SCL = 1
;SCL = 0
;SDA = 1
;SCL = 0
;SCL = 1
;SCL = 0

XUATRA:
MOV MEM20,A
;BO NHO TRUNG GIAN
MOV A,#8
MOV MEM19,A
;BO DEM DUNG CHO 8 BIT
LAP:
MOV A,MEM20
ANL A,#128
;CHE BIT 7
RR A
;SAU BIT 6 (SDA)
ADD A,#3FH
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 1
SETB P1.6
CLR P1.7
SETB P1.6
SETB P1.7
CLR P1.7
RET


DOCVAO:
SETB P1.6
;SDA = 1
CLR P1.7
;SCL = 0
MOV MEM20,#0
MOV MEM19,#8
LAP1:
SETB P1.7
;SCL = 1
MOV A,MEM20
RL A
MOV B,A
MOV A,P1
ANL A,#64
;DOC SDA
RL A
RL A
;BIT 0
ADD A,B

MOV MEM20,A
;LUU TRU
CLR P1.7
;SCL = 0
DJNZ MEM19,LAP1 ;8 LAN
RET
VIETROM:
ACALL I2CSTART
MOV A,#10100000B
ACALL XUATRA
MOV A,#0
ACALL XUATRA
MOV A,MEM2
ACALL XUATRA
ACALL I2CSTOP
ACALL DELAY100MS
RET
DOCROM:
ACALL I2CSTART
MOV A,#10100000B
;DIA CHI AT24C02,VIET
ACALL XUATRA
MOV A,#0
;DIA CHI BAT DAU 0
ACALL XUATRA


ACALL I2CSTOP
ACALL I2CSTART
MOV A,#10100001B

;DIA CHI AT24C02,DOC
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
2. Chöông trình Visual Basic :
Dim Dataout(0) As Byte
Dim Datain() As Byte
Dim Transfer As Byte
Dim Timeout As Boolean
Dim str As String
Dim Buffer As Variant
Private Sub CmdRead_Click()
'Phat tin hieu read a byte
Dataout(0) = 80

Buffer = Dataout()


MSComm1.Output = Buffer
MSComm1.InBufferCount = 0
'Truyen dia chi
str = Text2.Text
Transfer = Val(str)
Dataout(0) = Transfer
Buffer = Dataout()
MSComm1.Output = Buffer
MSComm1.InBufferCount = 0
tmrError.Enabled = True
Timeout = False
Do
DoEvents
Loop Until MSComm1.InBufferCount = 1 Or Timeout = True
If Timeout = False Then
Buffer = MSComm1.Input
Datain() = Buffer
Text3.Text = Datain(0)
Text4.Text = "Data read successfully !"
Else
Text4.Text = "Not response from 89C51"
End If
End Sub
Private Sub cmdWrite_Click()
'Phat tin hieu write a byte
Dataout(0) = 79
Buffer = Dataout()

MSComm1.Output = Buffer
MSComm1.InBufferCount = 0
''Truyen dia chi
str = Text2.Text
Transfer = Val(str)
Dataout(0) = Transfer
Buffer = Dataout()
MSComm1.Output = Buffer
MSComm1.InBufferCount = 0


'Truyen data
str = Text1.Text
Transfer = Val(str)
Dataout(0) = Transfer
Buffer = Dataout()
MSComm1.Output = Buffer
MSComm1.InBufferCount = 0
tmrError.Enabled = True
Timeout = False
Text4.Text = "Data and Address are transfering"
Do
DoEvents
Loop Until MSComm1.InBufferCount = 1 Or Timeout = True
If Timeout = False Then
Buffer = MSComm1.Input
Datain() = Buffer
If Datain(0) = Val(Text1.Text) Then
Text4.Text = "Data writed successfully !"
Else

Text4.Text = "Data Error"
End If
Else
Text4.Text = "Not response from 89C51"
End If
End Sub
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 2
MSComm1.InputLen = 0
tmrError.Interval = 2000
MSComm1.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub


Private Sub tmrError_Timer()
tmrError.Enabled = False
Timeout = True
End Sub

Chương IV :

GIỚI THIỆU DÂY CHUYỀN SẢN XUẤT
I.Yêu Cầu Của Công Việc Đối Với Dây Chuyền Sản Xuất :
 Sản phẩm sau khi qua giai đoạn cơ bản,nó phải qua các công đoạn phụ.
Sau khi làm đã đủ các công đoạn phụ này,nó sẽ trở thành sản phẩm hoàn chỉnh để
đưa đến người tiêu dùng. Các công đoạn phụ này có đặc điểm là chúng không phụ

thuộc vào nhau,công đoạn này có thể làm trước hoặc làm sau bất kỳ công đoạn
nào,không cần theo thứ tự. Trong dây chuyền sản xuất này có công đoạn cuối
cùng để lấy sản phẩm hoàn chỉnh đã làm đủ các công đoạn phụ ra khỏi dây
chuyền đồng thời cho phép đưa sản phẩm mới vào (sản phẩm chưa làm công đoạn
phụ nào)
 Mục đích sau cùng là làm sao phân bố đều công việc đến các công đoạn
phụ,tại mỗi thời điểm ở các công đoạn đều có sản phẩm để làm. Khi đó dây
chuyền sản xuất sẽ đạt năng suất và hiệu quả cao nhất.
* Em cũng xin giới thiệu dây chuyền sản xuất đang được ứng dụng tại xí
nghiệp may Việt Tiến. Sản phẩm ở đây là áo quần các loại. Các công đoạn phụ
bao gồm: vào cổ,đơm nút,may túi,may cánh tay...
II.Dây Chuyền Sản Xuất:
 Dây chền sản xuất ở đây có băng tải chuyển động tròn đều với vận
tốc không đổi ( vận tốc của băng tải tương đối thấp khoảng10cm/s). Sau khi
chuyển động được một vòng, nó sẽ trở về vò trí ban đầu.
 Băng tải ở đây có nhiệm vụ chuyển động để đưa các sản phẩm sau khi
đã hoàn thành bất kỳ công đoạn nào hoặc đưa sản phẩm mới vào dây chuyền sản
xuất.


 Vấn đề đặt ra là quản lý số sản phẩm có trên băng tải, đồng thời biết
được các sản phẩm đó đã làm công đoạn nào và chưa làm công doạn nào. Từ đó
cho phép điều khiển vào,ra tại các vò trí vào ra của các công đoạn.
 Do đó cấu tạo của băng tải sẽ gồm một số rãnh cố đònh ( ký hiệu là n, n
= const, n có thể lên đến hàng ngàn). Mỗi rãnh của băng tải có hai trạng thái:
chứa một bánh xe dùng để treo sản phẩm hoặc trống ( không có sản phẩm).
 Băng tải có thể cho phép các bánh xe( dùng để treo sản phẩm) vào hoặc
ra tại các vò trí cho phép vào ra của các công đoạn. Khi có tín hiệu điều khiển vào
thì ngay lập tức băng tải sẽ đẩy bánh xe ra khỏi dây chuyền, đồng thời khi có tín
hiệu điều khiển ra thì băng tải sẽ cho phép bánh xe chứa sản phẩm đã làm xong

công đoạn nào đó đang chờ vào dây chuyền tức thì.

CĐ1

CĐ2
4

1
1
5
6
10

1

9
7

2
CĐ4

CĐ3
3

Hình : Dây Chuyền Sản Xuất

8


1. Băng chuyền chính

2. Băng chuyền rẽ nhánh
3. Bàn làm việc
7. Tủ điều khiển băng chuyền chính
8. Tủ điều khiển băng chuyền rẽ nhánh
9. Cột trung gian

4. Truyền động chính
5. Thiết bò rẽ nhánh
phụ
6. Thiết bò nhận dạng
10. Cột chính truyền động.
11. Sản phẩm chờ

Sp
Sp
Sp

Mặt cắt ngang Băng Chuyền
việc

Bàn làm


Cột trung gian
Cột truyền động chính

III.Cách Nhận Biết Các Bánh Xe (các sản phẩm):
Vấn đề đặt ra làm thế nào để nhận biết được các bánh xe khi chúng vào và
ra khỏi băng tải của dây chuyền không theo một thứ tự, quy đònh nào. Do đó để
nhận biết các bánh xe ta sẽ gắn một con SEEPROM (AT24C0X). Mỗi một con

AT24C0X sẽ được nạp một giá trò cố đònh ( mã ROM).
VÍ DỤ: giả sử băng tải của dây chuyền có 1000 rãnh thì ta sẽ dùng 1000 con
ROM gắn trên 1000 bánh xe. Vì vậy để phân biệt được bánh xe (sản phẩm) này
thì các con SEEPROM sẽ được nạp các giá trò từ 1 đến 1000 (2 bytes).
IV. Đọc Dữ Liệu Từ Serial EEPROM :
 Như ta đã giới thiệu ở phần bus I2C để đọc dữ liệu từ SEEPROM tại mỗi
công đoạn ta sẽ dùng 1 con VXL AT89C51
 Nếu dây chuyền sản xuất có n công đoạn ,ta sẽ dùng (n+1) con VXL
.Con VXL sau cùng dùng cho việc lấy sản phẩm đã làm xong n công đoạn ra và
đưa sản phẩm mới vào.
V. Điều Khiển Vào và Điều Khiển Ra :


 Tại mỗi công đoạn sẽ có 2 vò trí đặc biệt :
 Vò trí cho phép vào (MEMIN) : Cho phép bánh xe chứa sản phẩm
rẽ vào băng chuyền rẽ nhánh để làm.
 Vò trí cho phép ra (MEMOUT) : Cho phép bánh xe chứa sản phẩm
làm xong đang chờ chạy vào băng chuyền chính.
 Các vò trí MEMIN & MEMOUT của cùng 1 công đoạn và giữa các công
đoạn sẽ cách nhau 1 khoảng cách cố đònh do cấu tạo cơ khí và cách bố trí các
công đoạn của dây chuyền sản xuất.
 Điều khiển vào : điều kiện
 MEMIN # 0 : có bánh xe (sản phẩm).
 Không có tín hiệu báo đầøy từ công đoạn đang xét
Điều khiển ra : điều kiện
 MEMOUT # 0 :không có sản phẩm.
 Có sản phẩm làm xong đang chờ
Ghi chú : Khi có sản phẩm làm xong đang chờ cho ra để vào băng tải.
Khi có tín hiệu Điều Khiển ra thì bánh xe ( AT24C02 ) sẽ được cấp nguồn và 2
chân SDA và SCL tiếp xúc P1.6 và P1.7 , VXL sẽ đọc được dữ liệu từ AT24C02

được cấp nguồn và phát lên PC.

VI. Sơ Đồ Nguyên Lý Điều Khiển :

PC

VXL1

ĐK
Vào&
Ra

VXL2

Đọc
EEPR

ĐK
Vào&
Ra

VXL n

Đọc
EEPR

ĐK
Vào&
Ra


VXL n+1

Đọc
EEPR

ĐK
Vào&
Ra

Đọc
EEPR


 VXL 1 đến n : có nhiệm vụ
Nhận từ PC tín hiệu :
 Điều khiển vào
 Điều khiển ra
Phát PC tín hiệu :
 Báo bận tại các công đoạn
 Mã SEEPROM
 VXL (n+1) : có nhiệm vụ
Nhận từ PC tín hiệu :
 Điều khiển vào (sản phẩm đã làm đủ n công đoạn)
 Điều khiển ra (đưa sản phẩm mới vào)
Phát PC tín hiệu :
 Cờ báo băng tải chuyển động (mỗi lần băng tải chuyển động được 1 ô
(rãnh) thì cờ băng tải sẽ báo).
 Mã SEEPROM
 PC có nhiệm vụ thu thập,quản lý và xử lí dữ liệu
 Set các vò trí MEMIN(i) và MEMOUT(i) (i = 1đến n+1)



 Quản lí n rãnh băng tải của dây chuyền sản xuất :mỗi lần nhận được tín
hiệu cờ băng tải từ VXL cuối (n+1),PC sẽ tăng các giá trò MEMIN(i) và
MEMOUT(i) lên 1 đơn vò
 Quản lí n sản phẩm (n bánh xe) đã làm công đoạn nào và chưa làm công
đoạn nào hay là sản phẩ mới đưa vào
 Phát tín hiệu Điều khiển vào và Điều khiển ra đến các VXL

CHƯƠNG V :

SƠ ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH
ĐỂ ĐIỀU KHIỂN DÂY CHUYỀN SẢN XUẤT (DCSX) TỔNG QUÁT
TRÊN GỒM n CÔNG ĐOẠN (CĐ),CHƯƠNG TRÌNH MINH HỌA SAU ĐÂY SẼ
TRÌNH BÀY DÂY CHUYỀN SẢN XUẤT ĐƠN GIẢN NHƯ SAU : SẢN PHẨM
(SP) PHẢI LÀM 3 CĐ VÀ CĐ CUỐI CÙNG LÀ CĐ 4 ĐỂ LẤY SP ĐÃ LÀM
XONG 3 CĐ RA VÀ ĐƯA SP MỚI VÀO (CHƯƠNG TRÌNH HOÀN TOÀN CÓ
THỂ MỞ RỘNG CHO DCSX GỒM n CĐ) . CÁC CĐ 1,2,3,4 ỨNG VỚI VỊ TRÍ
CỦA CÁC VXL 1,2,3,4.
* Giả sử băng tải của DCSX có 12 rãnh (ô) ,do đó có thể chứa tối đa 12
bánh xe (SP) mỗi bánh xe có gắn 1 con seeprom AT24C0X,các con seeprom được
nạp các giá trò từ 1 - 12 (1 byte)
* Các VXL 1,2,3 :
• Nhận từ PC tín hiệu :


 ĐK Vào (xuất xung ra P3.4 để kiểm tra)
 ĐK Ra (xuất xung ra P3.5 để kiểm tra)
• Phát lên PC tín hiệu :
 Báo bận ( Swich P3.2 = 0 : bận )

 Mã ROM đọc được ( Swich P3.3 = 0 : có sản phẩm làm xong đang chờ
vào dây chuyền sản xuất )
* VXL 4
• Nhận từ PC tín hiệu :
 ĐK Vào (xuất xung ra P3.4 để kiểm tra)
 ĐK Ra (xuất xung ra P3.5 để kiểm tra)
• Phát lên PC tín hiệu :
 Cờ báo băng tải chuyển động ( Swich P3.2 = 0 )
 Mã ROM đọc được (Swich P3.3 = 0 : có sản phẩm làm xong đang chờ
để vào DCSX )
* PC :
• Dùng mảng MEMIN(1-4) để xét các vò trí ĐK Vào tại các VXL 1,2,3,4
• Dùng mảng MEMOUT(1-4) để xét các vò trí ĐK Ra tại các VXL 1,2,3,4
• Dùng mảng DATA(1-12) để quản lí 12 ô BT, ô nào không có SP thì
DATA(i) = 0,ô nào có SP thì giá trò DATA(i) = mã ROM chứa SP đó (i = 1-12)
• Dùng mảng DATACD(1-12) để quản lí các CĐ đã làm hoặc chưa làm
của 12 SP. Nếu SP trên bánh xe chứa ROM có mã là i thì DATACD(i) sẽ quản lí
(i = 1-12) SP đó.
DATACD(i) = xxxxxxxx (8 bit)
 bit 0 : CĐ 1
 bit 1 : CĐ 2
 bit 2 : CĐ 3
bit x = 0 : CĐ chưa làm
bit x = 1 : CĐ đã làm
• Để nhận và phát với mạng VXL,PC qui đònh cách
đònh đòa chỉ và mã lệnh như sau : dùng 1 byte để nhận biết đòa chỉ và mã lệnh :
C3C2C1C0 A3A2A1A0
Đòa chỉ :
 A3A2A1A0 = 0001 : Đòa chỉ VXL1
 A3A2A1A0 = 0010 : Đòa chỉ VXL2

 A3A2A1A0 = 0011 : Đòa chỉ VXL3
 A3A2A1A0 = 0100 : Đòa chỉ VXL4
Mã lệnh :
 C3C2C1C0 = 0001 : ĐK Vào


 C3C2C1C0 = 0010 : ĐK Ra
 C3C2C1C0 = 0011 : Mã ROM
 C3C2C1C0 = 0100 : Bận (VXL1,2,3),Cờ BT (VXL4)

Sơ Đồ Mạch Nguyên Lý


5V
33p
1U
12MHZ

T1OUT
T2OUT
R1IN
R2IN

7
13
8

11
10
12

9
15

T1IN
T2IN
R1OUT
R2OUT
GND

VCC

20

GND

10
11
8.2k

MAX232/SO

P3.0/RXD
P3.1/TXD
5V

100

JP1
1
2

3
4

RST
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

PSEN

1
5V

RESET

21
22
23
24
25
26
27
28
39
38

37
36
35
34
33
32
12
13
14
15
16
17
30

2
3
4
5
6
7
8
9

1

5V

C
330


330

-Busy ( CĐ1,2 ,3 )
-Cờ BT (CĐ4 )
1
2

SP_Wait (CĐ1,2,3)

2
1

5V

AT89C51
3300

29

5
9
4
8
3
7
2
6
1

2


CONNECTOR DB9

10u
9
1
2
3
4
5
6
7
8

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

P3.2/INTO
P3.3/INT1
P3.4/T O
P3.5/T1
P3.6/WR
P3.7/RD
ALE/PROG

ĐK_Ra

40
1U

14

5V

18

EA/V PP

RESISTOR SIP 9

V+
V-

31

ĐK_Vào


2
6
1U

1
3
4
5

C+
C1C2+
C2-

XTAL2

VCC

XTAL1

16

19

5V
1U

JP2
4
3
2

1

Vcc

JP3
4
3
2
1

VCC
5
6
4

SDA
SCLK

A0
A1
A2

GND

WP

8
1
2
3

7

AT24C02

PC

LOOP

tín hiệuTỔ
cờ NG QUÁT PC
CHƯƠNGCó
TRÌNH
BT từ

XL4?

CT ĐK
Vào
- CT ĐK Ra
- Đọc mã Rom từ
các VXL
LOOP


N

Y
START
- SET MEMOUT
(i)

- SET MEMIN
(i)
LOOP
Tín hiệu BT từ
XL4?
DATAIN =
44H ?
- INC
MEMOUT(i )
- INC MEMIN
(i )
CT ĐK
VÀO

Vò trí vào CĐ1
có SP?
DATA[MEMI
LƯU ĐỒN(1)]#0
GIẢI THUẬT CHI TIẾT :
CĐ1 làm
chưa ?
DATACD[DATA(MEM
IN(1))]
AND
01H = 01H ?
Phát tín hiệu
ĐK vào xuống
VXL1



= 11H

N
Y
Y

N

Có tín hiệu
báo Busy
Y
từ VXL1 ?
DATAIN =
41H ? N
Xoá ô nhớ vừa
cho SP vào
DATA[MEMIN(
N=0
1)]

Y

N
Vò trí vào CĐ2
có SP?
DATA[MEMIN
(2)]#0?
CĐ2 làm chưa ?
DATACD[DATA(MEM
IN(2))] AND 02H =

02H ?
N
N
Phát tín hiệu
ĐK vào xuống
VXL2
DATAOUT

Y


N

Y

Y
Y

N
Nu
Có tín hiệ
báNo Busy
từ VXL2 ?
DATAIN =
42H ?
Xoá ô nhớ vừa
cho SP vào
DAT[MEMIN(2)
]=0
Vò trí vào CĐ3

có SP?
DATA[MEMI
N(3)#0?
CĐ3 làm
N
chưa ?
DATACD[DATA(MEM
IN(3))] AND 04H =
04H ?
Phát tín hiệu
ĐK vào xuống
VXL3

Y


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×