Giao tiếp giữa chương trình và mạch điều khiển vi kẹp

Một phần của tài liệu Xây dựng hệ giám sát, điều khiển vi kẹp (Trang 77)

Trong hệ thống điều khiển vi kẹp có một mạch điện tử dùng để nhận lệnh điều khiển từ máy tính. Trong mạch này có một chip điều khiển MPS, chíp này nhận các giá trị số từ máy tính thông qua cổng nối tiếp sau đó điều khiển bộ biến đổi DA, biến đổi các giá trị số thành các giá trị điện áp tương ứng. Cụ thể bộ biến đổi DA là bộ biến đổi số tương tự 12bit, giá trị điện áp mong muốn cực đại là 5V. Giá trị điện áp cực đại là 5V tương ứng với giá trị số biến đổi là 4095 (giá trị cực đại của 12bit).

Tuy nhiên dữ liệu truyền qua cổng nối tiếp chỉ là các dữ liệu 1 byte, nghĩa là giá trị cực đại có thể đưa ra trong một lần truyền là 255. (Giá trị cực đại của 8 bit). Như vậy để có được một giá trị là 12 bit thì giữa bên phát và bên thu phải có sự thống nhất của định dạng dữ liệu truyền/nhận.

Để nhận được một giá trị số có độ lớn 12 bit thì ta phải thực hiện truyền liên tiếp 2 byte. Độ lớn dữ liệu trong khung truyền nối tiếp chọn là 8 bit (Trong hộp chọn data bit của giao diện hình 4.4 chọn là 8) . Trong đó hai bit cao nhất (bit 6,7) được dùng để nhận dạng thứ tự của giá trị truyền, 6 bit còn lại là các bit dữ liệu tương ứng với 6 bit thấp và 6 bit cao của giá trị số 12 bit cần truyền. Nếu giá trị của hai bit cao là 00 thì byte nhận được là byte thấp, và nếu giá trị của hai bit cao nhất là 11 thì byte đó là byte cao. Nếu trong quá trình truyền bị lỗi, hai bit cao nhất của byte dữ liệu bằng 01 hay 10 thì ta không nhận byte đó và phải truyền lại. Sau khi đã nhận được hai byte đúng liên tiếp nhau thì ghép hai byte đó lại thành một dữ liệu 12 bit.

Việc tách một số 12 bit thành hai số 6 bit để truyền được thực hiện như sau: Bên truyền ta chia số 12 bit cho 64 (26=64) phần nguyên sẽ là byte cao và được truyền trước, phần dư là byte thấp và được truyền sau. Bên nhận thực hiện ngược lại, khi nhận được byte cao thì thực hiện nhân với 64 sau đó cộng với byte thấp kết quả cho ra số 12bit.

ví dụ thực hiện truyền số 4000 qua cổng COM

trước tiên ta chia số 4000 thành hai phần như đã trình bày ở trên 4000 = 62*64+ 32

Như vậy byte cao được truyền đi có dạng là: 11111110 byte thấp sẽ là: 00100000

Nguyễn Văn Thắng – Luận văn thạc sĩ hệ thống thực nghiệm

bên nhận nhận được hai byte dữ liệu trên và thực hiện việc tách hai bit cao nhất sau đó lấy 6 bit thấp của byte cao nhân với 64 (tương đương với dịch trái 6 bit) rồi cộng với 6 bit của byte thấp được giá trị là 111110100000 = 4000.

Một phần của tài liệu Xây dựng hệ giám sát, điều khiển vi kẹp (Trang 77)