1. Trang chủ
  2. » Giáo Dục - Đào Tạo

CHƯƠNG 5 CHƯƠNG TRÌNH

15 92 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 556 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

liệu về máy tính PC: nội dung dữ liệu được kit vi xử lý thu thập từ các đối tượng điều khiển bên ngoài ví dụ như giá trị diện áp, xung điều khiển hoặc các giá trị đo được từ cảm biến v.v

Trang 1

Chương 5:

CHƯƠNG TRÌNH

PHẦN 1: TẬP LỆNH

I GIỚI THIỆU TẬP LỆNH :

Việc thu thập dữ liệu và điều khiển từ xa là một vấn đề đáng được quan tâm trong lĩnh vực điều khiển tự động Tuy nhiên, thật phiền hà nếu như không có một sự thống nhất chung về câu lệnh trong quá trình trao đổi thông tin Vì thế, một phần nội dung chính của đề tài là xây dựng được một tập lệnh trong giao tiếp dữ liệu giữa máy tính với vi xử lý và sử dụng được nó Việc xây dựng tập lệnh giao tiếp RS-232 này được xem như một mong muốn tạo ra một câu lệnh chung trong giao tiếp dữ liệu giữa máy tính và vi xử lý về mặt ngôn ngữ

Đây là một phương tiện giao tiếp giữa máy tính và vi xử lý, nhằm giúp cho người sử dụng không phải mất nhiều thời gian lập trình lại từ đầu mỗi khi muốn thực hiện vấn đề giao tiếp mà việc trao đổi thông tin vẫn có thể xảy ra dễ dàng thông qua việc sử dụng tập lệnh này

Tập lệnh được xây dựng bao gồm các lệnh xuất nhập đầy đủ các dạng tín hiệu như: tín hiệu dạng mức, tín hiệu dạng xung, tín hiệu dạng analog/digital giúp việc trao đổi thông tin không bị giới hạn và đối tượng điều khiển (từ kit vi xử lý) cũng được phong phú hơn Ngoài ra, tập lệnh còn có một số lệnh điều khiển và quan sát quá trình hoạt động của hệ thống như: biến cài đặt dạng sóng ngõ ra (Kx), counter (Cx), dữ liệu (Dx), biến trạng thái xác lập chế độ hoạt động từ PC hay từ KIT (Sx) và biến thực thi hiển thị chế độ hoạt động RUN/STOP (Mx) giúp cho quá trình hoạt động của hệ thống diễn ra một cách chặt chẽ, dễ quan sát và dễ quản lý hơn

II NỘI DUNG TẬP LỆNH:

Các lệnh được xây dựng trong tập lệnh giao tiếp RS-232 này nhìn chung chỉ bao gồm các lệnh giao tiếp dữ liệu là xuất và nhập Đối với các lệnh gởi dữ

Trang 2

liệu về máy tính (PC): nội dung dữ liệu được kit vi xử lý thu thập từ các đối

tượng điều khiển bên ngoài ví dụ như giá trị diện áp, xung điều khiển hoặc các

giá trị đo được từ cảm biến v.v… và đưa vào các vùng địa chỉ định sẵn tùy thuộc

vào dạng của tín hiệu thu vào (dạng mức, xung hay A/D) và gởi đến PC mỗi khi

có yêu cầu Đối với các lệnh gởi dữ liệu từ PC đến vi xử lý: nội dung dữ liệu

nhận về từ PC, ví dụ như các thông số điều khiển được cài đặt sẵn, cũng được

đưa vào các vùng địa chỉ riêng ứng với các dạng dữ liệu nhận vào Các giá trị dữ

liệu này có thể được dùng để điều khiển các đối tượng bên ngoài khác tùy thuộc

vào ứng dụng cụ thể của chương trình Các lệnh không mang dữ liệu được PC

gởi đến vi xử lý là các lệnh yêu cầu vi xử lý gởi dữ liệu, các lệnh không mang

dữ liệu từ vi xử lý gởi về PC là các lệnh trả lời đã nhận được nội dung PC vừa

gởi vì vi xử lý không có chức năng yêu cầu dữ liệu

1 Bảng mô tả các vùng địa chỉ của board VXL:

Stt Vùng địa

1 I0-I1 2x2 2 byte dạng ASCII Input mức-16 ngõ vào(bit)

2 N0-N1 2x5 5 byte dạng ASCII Input xung-2 ngõ vào(99.999Hz

max)

3 Q0-Q1 2x5 5 byte dạng ASCII Ngõ vào A/D – 2 ngõ vào

(99.999max)

4 U0-U1 2x5 5 byte dạng ASCII Ngõ vào A/D - 2 ngõ vào

(±4.999max)

5 O0-O1 2x2 2 byte dạng ASCII Output mức-16 ngõ ra(bit)

6 P0-P1 2x5 5 byte dạng ASCII Output xung-2 ngõ ra (99.99Hz

max)

7 A0-A1 2x5 5 byte dạng ASCII Ngõ ra D/A-2 ngỏ ra

(99.999max)

8 K0-K7 8x2 2 byte dạng ASCII Biến cài đặt

10 D0-D7 8x2 2 byte dạng ASCII Dữ liệu

11 S0-S7 8x1 1 byte dạng ASCII Biến trạng thái

12 M0-M7 8x1 1 byte dạng ASCII Biến thực thi

Trang 3

2 Bảng mô tả các lệnh chuẩn:

Stt Lệnh từ PC Phản hồi từ VXL Mô tả(cho PC)

Ix↵

I0’B’I1’B’↵

Ix’B’↵

Đọc ngõ vào các Digital input x=0hay1(dạng ASCII)

Nx↵

N0’BBBBB’N1’BBBBB’↵

Nx’BBBBB’↵

Đọc ngõ vào các puls Input x=0hay1(dạng ASCII)

Qx↵

Q0’BBBBB’Q1’BBBBB’↵

Qx’BBBBB’↵

Đọc ngõ vào các A/D Input (đơn cực) x=0 hay 1 (dạngASCII)

Ux↵

U0’BBBBB’U1’BBBBB’↵

Ux’BBBBB’↵

Đọc ngõ vào các A/D Input (lưỡng cực) x=0 hay 1 (dạngASCII)

x=0 hay 1 (dạng ASCII)

(dạng ASCII)

(dạng ASCII)

7 (dạng ASCII)

đến 7 (dạng ASCII)

ASCII)

đến 7 (dạng ASCII)

12 Mx’B’↵ Mx↵ Xuất ngõ ra biến thực thi.x=0

đến 7 (dạng ASCII)

Ghi chú: ’BBBBB’: số byte dữ liệu của các vùng địa chỉ luôn được gọi ở dạng ASCII ; x là chỉ số đi kèm theo các ký tự chỉ vùng địa chỉ nhằm mở rộng các vùng địa chỉ có cùng chức năng.

Trang 4

PHẦN 2: MÔ TẢ CHƯƠNG TRÌNH

LƯU ĐỒ CHƯƠNG TRÌNH TỔNG

QUÁT

1: Dữ liệu nhận về từ PC

2: Dữ liệu gởi đến PC

3: Kết quả xử lý

4: Yêu cầu xử lý

Khối giao tiếp RS-232:

- Nhận chuỗi từ PC

- Kiểm tra.

- Đóng gói dữ liệu (truyền)

- Truyền dữ liệu đã đóng gói đến PC

Buffer user

Giao tiếp RS-232

Chương trình xử lý dữ liệu

1

4

Trang 5

Khối buffer user:

Đây là vùng đệm cho các chương trình ứng dụng Khối này thực hiện lưu trữ và truy xuất dữ liệu từ các vùng dữ liệu quy định trong tập lệnh Các chương trình thực hiện trong khối này là:

- Ghi giá trị A/D vào vùng địa chỉ Q0.

- Ghi trạng thái hoạt động từ Kit hay PC đọc từ ngõ vào input 1 đưa vào ô nhớ S0.

- Chế độ Run/Stop nhận từ PC đưa vào ô nhớ địa chỉ M0.

- Các ngõ vào input 2,3,4 cài đặt dạng sóng ra đưa vào vùng nhớ địa chỉ K0.

- Trị đỉnh của dạng sóng ra đưa vào ô nhớ dữ liệu địa chỉ D0.

Khối chương trình xử lý dữ liệu:

Khối này thực hiện các chương trình ứng dụng cho hệ thống Tùy các yêu cầu cụ thể đặt ra mà nó thực hiện nhiều hay ít chức năng Sơ đồ khối tổng quát cho nhóm chương trình trtong ứng dụng này là:

Hiển thị

Chương trình xử lý

Tạo dạng sóng ra Đọc A/D

Xuất D/A

Đọc input Xuất output Buffer

user

Trang 6

Bước đầu trong giao tiếp dữ liệu giữa máy tính và vi xử lý được thực hiện bởiø việc gởi chuỗi dữ liệu từ máy tính Do đó, kit vi xử lý chỉ thực hiện và trả lời theo yêu cầu của máy tính gởi đến.

CHƯƠNG TRÌNH NHẬN CHUỖI TỪ PC:

Như đã giới thiệu ở chương Protocol, frame dữ liệu gởi đi luôn được bắt đầu bởi một byte header cho cả hai hướng truyền (từ PC và vi xử lý)

Vì thế, để tránh mất thời gian nếu phải nhận vào cả chuỗi mà ngay ở byte đầu tiên đã không đúng, nên trước tiên ta chỉ nhận về và kiểm tra byte header Việc nhận dữ liệu chỉ được tiếp tục thực hiện khi byte header là đúng Ngoài ra cũng có một số ràng buộc kèm theo cho quá trình nhận chuỗi, là ở lần nhận sau phải đảm bảo rằng dữ liệu nhận vào lần trước đó đã được kiểm tra và xử lý Điều kiện này đặt ra nhằm mục đích bảo toàn các giá trị nhận về từ PC, vì nếu việc nhận dữ liệu vào cứ diễn ra liên tục mà quá trình kiểm tra và xử lý không đáp ứng kịp, thì sẽ xảy ra trường hợp dữ liệu ở lần nhận sau sẽ đè lên dữ liệu nhận về trước đó Như vậy, quá trình thực hiện sẽ bỏ sót một vài trường hợp xử lý tức hệ thống hoạt động không tối ưu Điều này chỉ thật sự cần thiết đối với hệ thống thực hiện theo hệ thời gian thực (multitasking) vì các công việc trong chương trình được thực hiện song song nhau.

Trang 7

Max=chiều dài tối đa của chuỗi cho phép nhập vào

Kiểm tra byte Header

Kiểm tra vùng đệm thu có dữ liệu không

Cờ nhận=0 ?

Nhận vào 4 byte đầu của chuỗi x[i]

N=x[3]+4 (chiều dài củachuỗi dữ liệu+

4byte header&control fiels) N<=max?

i=0n Nhận chuỗi x[i] vào vùng

đệm thu

i=0max Nhận chuỗi x[i] vào vùng

đệm thu

END

Không có

Sai

Đúng

N

Y

Chương trình nhận chuỗi từ PC

Trang 8

CHƯƠNG TRÌNH KIỂM TRA:

Việc kiểm tra chuỗi dữ liệu nhận về chủ yếu là kiểm tra cấu trúc frame có phù hợp với định nghĩa không, và chuyển các giá trị dữ liệu nhận vào đến vùng địa chỉ khác, đồng thời cho phép hệ thống tiếp tục nhận dữ liệu vào nếu có Tác vụ này được thực hiện mỗi khi có chuỗi mới được nhận vào

Cothu=1?

(hoàn tất công việc nhận chuỗi?)

Bit b0=bit thấp nhất của byte bufin[2]

Bit b0=0?

(chuỗi nhận vào có dữ liệu?)

Số byte dữ liệu (bufin[3])>1?

Kết quả nhận đúng Kết quả nhậnsai

Số byte dữ liệu (bufin[3])>1?

Cothu=0(được phép nhận chuỗi mới)

RET

Chuỗi buffer[]=chuỗi bufin[]

Y Y

Y

Y

N

N

N N

Trang 9

CHƯƠNG TRÌNH XỬ LÝ TẬP LỆNH:

Chương trình xử lý tập lệnh bước đầu thực hiện việc kiểm tra một số byte control fiels được nhận về từ PC nhằm tránh sự trùng lặp trong quá trình xử lý Vì theo giao thức truyền thông đặt ra (protocol), nếu trong khoảng thời gian và số lần nhắc lại qui định, kể từ sau khi PC gởi một yêu cầu đến máy tính, mà PC vẫn không nhận được kết quả phản hồi theo mong muốn ( lỗi này có thể xảy ra khi kit vi xử lý không nhận đầy đủ dữ liệu gởi đến từ PC, có thể do các byte control fiel không được xác lập đúng qui định … ) hoặc kết quả nhận về từ khối vi xử lý báo lỗi thì nó gởi lại frame truyền mới, mà frame gởi lại này mang đầy đủ thông tin vừa rồi cho khối vi xử lý (xem chi tiết trong phần protocol) Tuy nhiên, không phải bất cứ khi nào PC không nhận được frame truyền mang theo thông tin trả lời từ vi xử lý đều xem là lỗi mà có thể do gặp sự cố về vấn đề thời gian Trong trường hợp đó, chương trình không xử lý lại từ đầu mà tiếp tục công việc xử lý cũ Nên bước kiểm tra này giải đáp cho câu hỏi khối

vi xử lý có nhận được và có xử lý yêu cầu vừa rồi không?

Tiếp theo quá trình kiểm tra, việc xử lý tập lệnh sẽ thực hiện dựa trên các kết quả của quá trình xử lý theo chức năng cụ thể cho từng hệ thống được đưa vào các vùng nhớ và sử dụng các lệnh được xây dựng trong tập lệnh.

Trang 10

Lưu đồ: chương trình

xử lý ứng dụng tập

lệnh

Bit b1=buffer[2]&0x02

Frame gởi lần đầu (b1=0)?

buffer[4] ≠ địachỉ[0]?

Và buffer[5] ≠ địachỉ[1]?

Địachỉ[0]=buffer[4]

Địachỉ[1]=buffer[5]

Gọi tập lệnh

Cờ xử lý =1 (xử lý xong)

Y Y

N

N

Kết quả nhận đúng ?

Y

Frame nhận vào có dữ liệu ?

Y

N START

Trang 11

CHƯƠNG TRÌNH ĐÓNG GÓI DỮ LIỆU:

Chương trình đóng gói dữ liệu là tạo ra một frame truyền trả về cho PC mỗi khi nhận yêu cầu gởi đến từ nó Frame này cũng tuân theo qui định của các byte control fiel, và có thông báo kết quả của lần nhận vừa rồi Đối với frame gởi về từ vi xử lý, mã

ID là mã của frame nhận từ PC Ngoài ra, việc đóng gói dữ liệu còn nhằm mục đích là đảm bảo trong quá trình gởi 1 khung dữ liệu từ Kit về PC nếu có sự gián đoạn nào xảy ra (1 chương trình interrupt chẳng hạn ) thì sự thay đổi giá trị của một biến bất kỳ cũng không gây ảnh hưởng đến dữ liệu truyền, tuy trường hợp này chỉ xảy ra với xác suất thấp vì tốc độ truyền dữ liệu rất cao nhưng nó cũng là một khuyết điểm đáng chú ý của chương trình nếu không được quan tâm đến

Quá trình đóng gói dữ liệu và trả lời cho PC không phụ thuộc vào chương trình xử lý về mặt thời gian Nó được thực hiện sau khi hoàn tất chương trình kiểm tra frame nhận vào, kết quả của quá trình xử lý sẽ quyết định nội dung gởi về cho PC, số byte dữ liệu là không nếu chương trình xử lý vẫn đang thực hiện tại thời điểm đóng gói

Trang 12

Bufout[0]=header Bufout[1]=bufin[1]

Khởi tạo bufout[2]=0x80

Kết quả nhận đúng?

Bit b2=0 (bufout[2]= b2b1b0)

Xử lý xong?

Bit b0=0

Bufout[3]=chiều dài chuỗi dữliệu

Bufout[i+4]=dulieu[i]

Gởi chuỗi bufout

Bit b2=1 (bufout[2]= b2b1b0)

Bufout[3]=0(chiều dài chuỗi dữliệu=0)

Bit b0=0

Bufout[3]=0(chiều dài

chuỗi dữliệu=0)

Y Y

N N

Trang 13

CHƯƠNG TRÌNH DEMO-KIT:

Chương trình xử lý cho ứng dụng Demo-kit luôn phải cập nhật ngõ vào input 1 từ switch để biết chế độ hoạt động của hệ thống là Kit hay

PC

Chương trình xử lý được bắt đầu khi nhận được tín hiệu RUN và kết thúc tại STOP do PC gởi đến.

Các ngõ vào Input 2, 3, 4 được đọc về từ switch nên được thực hiện theo mức ưu tiên (từ 2 đến 4) nếu có nhiều ngõ vào cùng tích cực

Nếu tại một thời điểm mà không có dạng sóng ra nào được chọn thì hệ thống ở chế độ chờ và có thông báo ra PC

Các dạng sóng ngõ ra chỉ nhằm mục đích minh họa cho ứng dụng của việc sử dụng tập lệnh nên nó được xây dựng rất đơn giản với các dạng sóng ngõ ra có độ dốc không đổi

Trang 14

I CÁC DẠNG SÓNG NGÕ RA

End

Đọc ngõ vào input 1 từ kit để chọn chế độ hoạt

động

Trạng thái RUN?

Y

Input 1=1

Hoạt động từ kit

Đọc các ngõ vào input 2,3,4 từ

data switch

input 2=1?

Sóng ra dạng răng cưa lên

Sóng ra dạng răng cưa xuống

Chế độ chờ

input4=1

?

Y

Y

Sóng ra dạng nón

Y

input3=1?

N

N

N

N

Hoạt động từ PC

Đọc các ngõ vào input 2,3,4 PC truyền về

Y

N

Trang 15

Sóng ra dạng răng cưa xuống Sóng ra dạng răng cưa lên

Cài đặt trị đỉnh

Sóng ra =trị đỉnh

Sóng ra ≠0?

Giảm sóng ra

Y

Y N

Timer = 100ms

N

Cài đặt trị đỉnh

Sóng ra =0

Sóng ra < trị đỉnh

Tăng sóng ra

Y

Y N

Timer = 100ms

N

Ngày đăng: 28/11/2015, 06:44

w