Nghiên cứu, thiết kế, chế tạo hệ thống minicim

Hệ thống sản xuất tích hợp CIM (Computer Intergrade Manufacturing) là hệ thống sản xuất tiên tiến nhất hiện nay và đang ngày càng được ứng dụng rộng rãi trên thế giới. Khái niệm về CIM tiến sĩ Joseph Harrington đưa ra vào những năm 1973. Mặc dù khái niệm của ông về CIM chưa được hoàn chỉnh, ngày nay danh từ CIM đã trở nên rất quen thuộc trong cách nói về sản xuất. CIM đã trở thành chiến lược nền tảng của tích hợp các thiết bị và hệ thống sản xuất thông qua các máy tính hoặc các bộ vi xử lý tự động. So với các hệ thống sản xuất truyền thống, CIM có nhiều ưu điểm vượt trội hơn hẳn. Hệ thống CIM không những làm tăng năng suất và chất lượng sản phẩm, hạ giá thành của sản phẩm mà còn có khả năng linh hoạt cao, đáp ứng được những thay đổi nhanh chóng của thị trường. Trong nội dung đồ án tốt nghiệp của sinh viên ngành cơ điện tử, với sự hướng dẫn tận tình của các thầy hướng dẫn GS.TS. Trần Văn Địch, TS. Nguyễn Huy Ninh bộ môn Công nghệ Chế tạo máy, trường Đại học Bách khoa Hà Nội. Chúng em đã chọn đề tài “Nghiên cứu, thiết kế hệ thống MiniCIM” phù hợp với khả năng cũng như thời gian thực hiện. Để thực hiện đề tài, trước hết chúng em đã nghiên cứu, khảo sát về các hệ thống CIM đã và dang được ứng dụng, sau đó lựa chọn hệ thống phù hợp để thiết kế và chế tạo. Quá trình thiết kế, chế tạo cơ khí và quá trình thiết kế hệ thống điều khiển được tiến hành đồng thời. Đồ án được chia làm 6 chương, mỗi chương được tách ra các phần nhỏ hơn, đồng thời có kèm theo phụ lục về các bản vẽ và phụ lục về chương trình điều khiển. Chương I. Tổng quan về hệ thống CIM. Chương II. Cấu trúc hệ thống CIM. Chương III. Thiết kế máy CNC. Chương IV. Thiết kế robot. Chương V. Thiết kế hệ thống băng tải. Chương VI. Xây dựng hệ điều khiển cho hệ thống CIM. Phụ lục bản vẽ. Phụ lục chương trình điêu khiển

doc345 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2490 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Nghiên cứu, thiết kế, chế tạo hệ thống minicim, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
rường hợp phép so sánh cho kết quả đúng, bit đầu tiên trong ngăn xếp sẽ có giá trị là 1. AB=,AW=,AD=,AR=: lệnh kiểm tra tính bằng nhau của nội dung hai byte, từ, từ kép hoặc số thực. Trong trường hợp phép so sánh cho kết quả đúng, sẽ thực hiên phép logic And giữa bit đầu tiên trong ngăn xếp với giá trị là 1. AB<=,AW<=,AD<=,AR<=: lệnh so sánh nội dung của byte, từ, từ kép hoặc số thực thứ nhất có nhỏ hơn hoặc bằng nội dung của byte, từ, từ kép hoặc số thực thứ hai hay không. Trong trường hợp phép so sánh cho kết quả đúng, sẽ thực hiên phép logic And giữa bit đầu tiên trong ngăn xếp với giá trị là 1. AB>=,AW>=,AD>=,AR>=: lệnh so sánh nội dung của byte, từ, từ kép hoặc số thực thứ nhất có lớn hơn hoặc bằng nội dung của byte, từ, từ kép hoặc số thực thứ hai hay không. Trong trường hợp phép so sánh cho kết quả đúng, sẽ thực hiên phép logic And giữa bit đầu tiên trong ngăn xếp với giá trị là 1. OB=, OW=, OD=, OR=: lệnh kiểm tra tính bằng nhau của nội dung hai byte, từ, từ kép hoặc số thực. Trong trường hợp phép so sánh cho kết quả đúng, sẽ thực hiên phép logic Or giữa bit đầu tiên trong ngăn xếp với giá trị là 1. OB<=, OW<=, OD<=, OR<=: lệnh so sánh nội dung của byte, từ, từ kép hoặc số thực thứ nhất có nhỏ hơn hoặc bằng nội dung của byte, từ, từ kép hoặc số thực thứ hai hay không. Trong trường hợp phép so sánh cho kết quả đúng, sẽ thực hiên phép logic Or giữa bit đầu tiên trong ngăn xếp với giá trị là 1. OB>=, OW>=,OD>=,OR>=: lệnh so sánh nội dung của byte, từ, từ kép hoặc số thực thứ nhất có lớn hơn hoặc bằng nội dung của byte, từ, từ kép hoặc số thực thứ hai hay không. Trong trường hợp phép so sánh cho kết quả đúng, sẽ thực hiên phép logic Or giữa bit đầu tiên trong ngăn xếp với giá trị là 1. 5.3.7. Lệnh nhảy và lệnh gọi chương trình con. Các lệnh của chương trình, nếu không có những lệnh điều khiển riêng, sẽ được thực hiện từ trên xuống dưới trong một vòng quét. Lệnh điều khiển chương trình cho phép thay đổi thứ tự thực hiện lệnh. Chúng cho phép chuyển thứ tự thực hiện, đáng ra là thứ tự tiếp theo, tới một lệnh bất kỳ nào khác của chương trình với một nhãn chỉ đích đã được đánh dấu trước. Thuộc nhóm lệnh điều khiển chương trình gồm: lệnh nhảy, gọi chương trình con. Việc đặt nhãn cho lệnh nhảy phải nằm trong chương trình. Nhãn của chương trình con hoặc chương trình xử lý ngắt được khai báo ở đầu chương trình. Không thể dùng lệnh nhảy JMP để chuyển điều khiển từ chương trình chính vào một nhãn bất kỳ trong chương trình con hoặc chương trình xử lý ngắt. Tương tự như vậy cũng không thể chuyển từ một chương trình con, hay một chương trình xử lý ngắt vào bất cứ một nhãn nào nằm ngoài chương trình đó. Lệnh gọi chương trình con là lệnh chuyển điều khiển đến chương trình con. Khi chương trình con thực hiện xong các phép toán của nó thì việc chuyển điều khiển lại được chuyển về lệnh tiếp theo trong chương trình chính nằm ngay sau lệnh gọi chương trình con. Từ một chương trình con có thể gọi một chương trình con khác trong nó, có thể gọi như vậy nhiều nhất là 8 lần trong S7_200. Đệ quy (trong một chương trình con có một lệnh gọi đến chính nó) về nguyên tắc không bị cấm song phải chú ý đến giới hạn này. Nếu lệnh nhảy hay lệnh gọi chương trình con được thực hiện thì đỉnh ngăn xếp luôn có giá trị bằng 1. Bởi vậy trong chương trình con các lệnh có điều kiện được thực hiện như các lệnh không có điều kiện. Sau các lệnh LBL (đặt nhãn) và SBR, lệnh LD trong STL sẽ bị vô hiệu hóa. Khi một chương trình con được gọi, toàn bộ nội dung của ngăn xếp sẽ được cất đi, đỉnh của ngăn xếp nhận giá trị logic mới là 1, các bit còn lại của ngăn xếp nhận giá trị là 0 và điều khiển được chuyển đến chương trình con đã gọi. Khi thực hiện xong chương trình con và trước khi điều khiển được chuyển trở lại chương trình đã gọi nó, nội dung ngăn xếp đã được cất giữ trước đó sẽ được chuyển trở lại ngăn xếp. Nội dung của thanh ghi AC không được cất giữ khi gọi chương trình con, nhưng khi chương trình xử lý ngắt được gọi, nội dung của thanh ghi AC sẽ được cất giữ trước khi thực hiện chương trình xử lý ngắt và nạp lại khi chương trình xử lý ngắt đã được thực hiện xong. Bởi vậy, chương trình xử lý ngắt có thể tự do sử dụng bốn thanh ghi AC của S7_200. JMP, CALL. LBL, SBR: lệnh nhảy JMP và gọi chương trình con SBR cho phép chuyển điều khiển từ vị trí này đến vị trí khác trong chương trình. Cú pháp của lệnh nhảy và lệnh gọi chương trình con trong LAD và trong STL đềi có toán hạng là nhãn chỉ đích (nơi nhảy đến, nơi chứa chương trình con). 5.3.8. Các lệnh can thiệp vào thời gian vòng quét. MEND, END, STOP, NOP, WDR: Các lênh này được dùng để kết thúc chương trình đang thực hiện kéo dài khoảng thời gian của một vòng quét. Trong LAD và STL chương trình chính phải được kết thúc bằng lệnh kết thúc không điều kiện MEND. Có thể sử dụng kết thúc có điều kiện END trước lệnh kết thúc không điều kiện. Lệnh STOP kết thúc chương trình nó chuyển điều khiển chương trình đến chế độ STOP. Nếu như gặp lệnh STOP trong chương trình chính, hoặc trong chương trình con thì chương trình đang thực hiện sẽ kết thúc ngay lập tức. Nếu như gặp lênh STOP trong chương trình xử lý ngắt thì chương trình xử lý ngắt sẽ kết thúc ngay lập tức và các tín hiệu ngắt chờ xử lý sau đó đều bị bỏ qua và không được thực hiện. Phần còn lại của chương trình cũng sẽ không đươc thực hiện. Việc thực sự chuyển sang chế độ STOP được thực hiện ở cuối chu kỳ quét hiện thời, sau giai đoạn giao tiếp với ngoại vi của vòng quét. Lệnh rỗng NOP không có tác dụng gì trong việc thực hiện chương trình. Cần lưu ý lệnh NOP phải được đặt ngay trong chương trình chính, chương trình con hoặc chương trình xử lý ngắt. Lệnh WDR sẽ khởi đông lại đồng hồ quan sát (Watch Dog Timer), và chương trình tiếp tục được thực hiện trong vòng quét ở chế độ quan sát. Khi trong chương trình có những lệnh lặp hoặc thời gian trễ quá lớn thì những quá trình sau đây sẽ bị hạn chế: - Truyền thông (loại trừ kiểu Freeport). - Cập nhật vào ra (trừ trường hợp vào ra tức thời). - Cập nhật cưỡng bức. - Cập nhật các bit kiểu SM (SM0 và SM25 đến SM29 không cập nhật được). - Chẩn đoán thời gian chạy. - Với các vong quét lớn hơn 25 giây thì các bộ timer có độ phân giải 10ms và 100ms sẽ làm việc không chính xác. Nếu thời gian của vòng quét lớn hơn 300ms, hoặc một xử lý ngắt có chương trình xử lý ngắt với thời gian chạy chương trình lâu hơn 300ms thì cần phải sử dụng lệnh WDR để khởi động lại đồng hồ quan sát. Nhằm sử dụng lệnh WDR một cách hữu hiệu, S7_200 cung cấp 3 từ liền nhau trong vùng nhớ đặc biệt có địa chỉ SMW22. SMW24, SMW26 để ghi các giá trị về thời gian vòng quét kể từ khi S7_200 đưa vào chế độ RUN như thời gian quét ngắn nhất (trong từ SMW24), thời gian quét dài nhất (trong từ SMW26) và thời gian quét vừa được thực hiện (trong từ SMW22). Các từ này chỉ có thể truy nhập để đọc bằng chương trình. Chúng thuộc vùng nhớ chỉ đọc (Read Only). 5.3.9. Các lệnh về điều khiển Timer. Timer là nộ tạo thời gian trễ giữa tín hiệu vào và tín hiệu ra nên trong điều khiển thường được gọi là khâu trễ. Nếu ký hiệu tín hiệu (logic) vào là x(t) và thời gian trễ được tạo ra bằng timer là t thì tín hiệu đầu ra của timer đó là x(t-t). S7_200 có 128 timer (với CPU214) được chia làm hai loại khác nhau, đó là: - Timer tạo thời gian trễ không có nhớ (On-Delay Timer), ký hiệu là TON. - Timer tạo thời gian trễ có nhớ (Retentive On-Delay Timer), ký hiệu là TONR. Hai kiểu timer của S7_200 (TON và TONR) phân biệt với nhau ở phản ứng của nó đối với trạng thái tín hiệu đầu vào. Cả hai timer kiểu TON và TONR cùng bắt đầu tạo thời gian trễ tín hiệu kể từ thời điểm có sườn lên ở tín hiệu đầu vào, tức là khi tín hiệu đầu vào chuyển trạng thái logic từ 0 lên 1, được gọi là thời điểm timer được kích và không tính khoảng thời gian khi đầu vào có giá trị là 0 vào thời gian trễ tín hiệu được đặt trước. Khi đầu vào có giá trị logic bằng không, TON tự động RESET còn TONR thì không tự động RESET. Timer TON được dùng để tạo thời gian trễ trong một khoảng thời gian ngắn (miền liên thông), còn với TONR thời gian trễ sẽ được tạo ra trong nhiều khoảng thời gian khác nhau. Timer TON và TONR bao gồm ba loại với 3 độ phân giải khác nhau: 1ms, 10ms, 100ms. Thời gian trễ t được tạo ra chính là tích của độ phân giải timer được chọn và giá trị đặt trước cho timer. Ví dụ timer có độ phân giải là 10ms và giá trị đặt trước là 50 thì thời gian trễ sẽ là t =500ms. Timer của S7_200 có những tính chất cơ bản như sau: - Các bộ timer được điều khiển bởi một cổng vào và giá trị đếm tức thời của timer được nhớ trong thanh ghi 2 byte (gọi là T_word) của timer, xác định khoảng thời gian trễ kể từ khi timer được kích. Giá trị đặt trước của timer được ký hiệu trong LAD và STL là PT. Giá trị đếm tức thời của thanh ghi T-Word thường xuyên được so sánh với giá trị đặt trước của timer. - Mỗi bộ time ngoài thanh ghi T_word lưu giá trị đếm tức thời, còn có một bit ký hiệu bằng T_bit, vhỉ thị trạng thái logic đầu ra. Giá trị logic của bit này phụ thuộc vào giá trị so sánh giữa giá trị đếm tức thời và giá trị đặt trước. - Trong khoảng thời gian tín hiệu x(t) có giá trị logic 1, giá trị đếm tức thời trong T-word luôn được cập nhật và thay đổi tăng dần lên cho đến khi nó đạt giá trị cực đại. Khi giá trị tức thời lớn hơn hay bằng giá trị đặt trước thì T_Bit có giá trị logic là 1. Các loại timer của S7_200 (đối với CPU212 và CPU214) chia theo TON và TONR và độ phân giải bao gồm: Lệnh Độ phân giải Giá trị cực đại CPU214 TON 1ms 32,767s T32,T96 10ms 327,67s T33¸T36 ,T97¸T100 100ms 3276,7s T37¸T63 TONR 1ms 32,767s T0,T64 10ms 327,67s T1¸T4,T65¸T68 100ms 3276,7s T5¸T31,T69¸T95 Chú ý: Khi sử dụng timer kiểu TONR, giá trị đếm tức thời được lưu lại và không bị thay đổi trong khoảng thời gian khi tín hiệu đầu vào có logic 0. Giá trị của T_ bit không được nhớ mà hoàn toàn phụ thuộc vào kết quả so sánh giữa giá trị đếm tức thời và giá trị đặt trước. Các timer được đánh số từ 0 đến 63 (với CPU 212) hoặc từ 0 đến 127 (với CPU214). Mỗi timer được đặt tên là Txx với xx là số hiệu của Timer. Txx đồng thời cũng là địa chỉ hình thức, song T_word và T-Bit vẫn được phân biệt nhau nhờ kiểu sử dụng với Txx. Khi dùng lệnh làm việc với từ thì Txx được hiểu là địa chỉ của T-Word, ngược lại khi sử dụng lệnh làm việc với tiếp điểm thì Txx được hiểu là dịa chỉ của T-Bit. Một Timer đang làm việc có thể đưa trở lại trạng thái khởi động ban đầu bằng cách RESET với lệnh RESET. Khi reset một bộ timer, T-word và T-Bit của nó đồng thời được xóa và có giá trị bằng 0. Có thể reset bất cứ bộ timer nào của S7_200 bằng lệnh R(ESET). Có hai phương pháp để reset một timer kiểu TON: xóa tín hiệu đầu vào hoặc dung lệnh reset (R). Sau khi timer được kích, chúng làm việc độc lập với vòng quét (Scan) tức là thời điểm PLC cập nhật T_word và T-Bit để thay đổi giá trị đếm tức thời và trạng thái tín hiệu logic đầu ra không phụ thuộc vào chương trình và cũng không phụ thuộc vào trạng thái của T-bit. Tuy nhiên tần số cập nhật phụ thuộc vào độ phân giải của timer. a) Cập nhật Timer có độ phân giải 1ms: CPU của S7-200 có các bộ timer có độ phân giải 1ms, cho phép timer cập nhật và thay đổi giát trị đếm tức thời trong T_word mỗi một ms một lần. Các bộ timer với độ phân giải thấp cho phép thao tác chính xác một điều khiển. Ngay sau khi bộ timer với độ phân giải 1ms được kích, việc cập nhật để thay đổi giá trị đếm tức thời trong T-word hoàn toàn tự động. Chỉ nên đặt giá trị rất nhỏ cho PT của bộ Timer có độ phân giải 1ms, tần số cập nhật để thay đổi giá trị đếm tức thời và của T-Bit của mỗi bộ timer không phụ thuộc vào vòng quét (Scan) của bộ điều khiển và vòng quét của chương trình chạy. Do việc cập nhật T-word hoàn toàn tự động nên thời gian đặt trước có thể bị trôi trong khoảng 1ms. Do vậy, ví dụ đẻ có thể có được bộ thời gian trễ không quá 56ms thì nên đặt giá trị ban đầu PT cho timer là 57. b) Cập nhật Timer có độ phân giải 1ms: CPU của S7-200 có các bộ timer có độ phân giải 10ms, cho phép timer cập nhật và thay đổi giát trị đếm tức thời và trạng thái logic đầu ra của các bộ timer này không phụ thuộc vào chương trình và được tiến hành hoàn toàn tự động mỗi vòng quét một lần tại thời điểm đầu vòng quét. Do việc cập nhật T-word hoàn toàn tự động nên thời gian đặt trước có thể bị trôi trong khoảng 10ms. Do vậy, ví dụ đẻ có thể có được bộ thời gian trễ không quá 140ms thì nên đặt giá trị ban đầu PT cho timer là 15. c) Cập nhật Timer có độ phân giải 1ms: Hầu hết các bộ Timer S7-200 là các bộ timer có độ phân giải 100ms. Giá trị để lưu trữ trong bộ timer 100ms được tính tại đầu mỗi vòng quét và thời gian để tính sẽ là khoảng thời gian từ đầu vong quét trước đó. Việc cập nhật để thay đổi giá trị đếm tức thời của timer được tiến hành ngay tại thời điểm có lệnh khi báo cho timer trong chương trình. Bởi vậy quá trình cập nhật giá trị đếm tức thời không phải là quá trình tự động và không nhất thiết phải được thực hiện một lần mỗi vòng quét ngay cả khi Timer đã được kích. Đối với trường hợp lệnh timer 100ms được khai báo nhiều lần trong một vòng quét thì có thể xảy ra hiện tượng giá trị lưu trữ bị cộng nhiều lần với giá trị đếm tức thời. Vì vậy nên sử dụng lệnh khai báo timer 100 ms chính xác một lần trong một vòng quét. d) Hiệu quả của việc cập nhật giá trị đếm tức thời của Timer 1ms, 10ms, 100ms. Việc cập nhật giá trị đếm tức thời của các timer với độ phân giải khác nhau dược thực hiện tại những thời điểm khác nhau phụ thuộc vào cách sử dụng timer đó. 5.3.10. Các lệnh điều khiển Counter. Counter là bộ đếm hiện chức năng đếm sườn xung trong S7_200. Các bộ đếm của S7_200 được chia làm hai loại: bộ đếm tiến (CTU) và bộ đếm tiến/lùi (CTUD). Bộ đếm tiến CTU đếm số sườn lên của tín hiệu logic đầu vào, tức là đếm số lần đổi trạng thái logic từ 0 lên 1 của tín hiệu. Số sườn xung đếm được được ghi vào thanh ghi hai byte của bộ đếm gọi là thanh ghi C_Word. Nội dung của C_Word, gọi là giá trị đếm tức thời của bộ đếm, luôn được so sánh với giá trị đặt trước của bộ đếm, được ký hiệu là PV. Khi giá trị đếm tức thời bằng hoặc lớn hơn giá trị đặt trước này thì bộ đếm báo ra ngoài bằng cách đặt giá trị logic 1 vào một bit đặc biệt của nó, được gọi là C_bit. Trường hợp giá trị đếm tức thời của nó nhỏ hơn giá trị đặt trước thì C_bit có giá trị logic là 0. Khác với các bộ timer, các bộ đếm CTU đều có chân nối với tín hiệu điều khiển xóa để thực hiện lại việc đặt lại chế độ khởi phát ban đầu (reset) cho bộ đếm. Khi bộ đếm được reset cả C_word và C_bit đều nhận giá trị 0. Bộ đếm tiến/lùi CTUD đếm tiến khi gặp sườn lên của xung vào cổng đếm tiến (CU trong LAD và bit thứ 3 trong ngăn xếp trong STL) và đếm lù khi gạp sườn lên của xung vào cổng đếm lùi (CD trong LAD hoặc bit thứ 2 trong ngăn xếp trong STL). CTUD cũng được đưa về trạng thái khởi phát bằng hai cách: dùng lệnh reset với C_bit của bộ đếm hoặc cung cấp tín hiệu đầu vào logic của chân xóa. CTUD có giá trị đếm tức thời đúng bằng giá trị đang đếm và được lưu trong thanh ghi 2 byte C_word của bộ đếm. Giá trị đếm tức thời luôn được so sánh với giá trị đặt trước PV của bộ đếm. Nếu giá trị đếm tức thời lớn hơn hoặc bằng giá trị đặt trước thì giá trị C_bit có giá trị bằng 1 còn các trường hợp còn lại C_bit có giá trị logic bằng 0. Bộ đếm CTU có miền giá trị đếm tức thời từ 0 đến 32767. Bộ đếm tiến/lùi có miền giá trị đếm tức thời từ -32768¸32767. Các bộ đếm được đánh số từ 0 đến 63 (đối với CPU 212) hoặc từ 0 đến 127 (đối với CPU 214) và được ký hiệu bằng Cxx, trong đó xx là số thứ tự của bộ đếm. Ký hiệu Cxx cũng là địa chỉ hình thức của C_word và C_bit. Tuy chúng có địa chỉ hình thức giống nhau nhưng chúng có thể phân biệt nhau nhờ cách truy xuất bit hay truy xuất từ. 5.3.11. Các lệnh về số học. Những điểm cần lưu ý khi sử dụng toán tử với số nguyên và số thực: - Đối với các phép tính số học số nguyên: · Nếu SM1.3 có giá trị logic bằng 1 trong khi đang thực hiện phép chia thì các bit thông báo trạng thái kết quả khác giữ nguyên và giá trị đầu vào các toán hạng không bị thay đổi. · Giá trị logic của tất cả các bit thông báo trạng thái kết quả của phép tính số học đều đúng nghĩa sau khi đã thực hiện hoàn chỉnh phép tính đó. - Đối với các phép tính số học trên số thực: · Nếu SM1.3 có giá trị logic bằng 1 trong khi đang thực hiện phép chia thì các bit thông báo trạng thái kết quả khác giữ nguyên và giá trị đầu vào các toán hạng không bị thay đổi. SM1.1 dùng để báo lỗi khi kết quả bị tràn hoặc các kết quả đầu vào không hợp thức. · Trường hợp SN1.1 có giá trị logic bằng 1, giá trị logic trịng thái của SM1.0 và SM1.2 sẽ không còn ý nghĩa và giá trị đầu vào toán hạng các toán hạng không bị thay đổi. Còn khi giá trị SM1.1 có giá trị logic bằng 0 (SM1.3 cũng không có giá trị logic bằng 1 nếu như đang thực hiện phép chia) thì phép tính số học được hoàn thành với kết quả hợp thức và SM1.0 và SM1.2 có giá trị logic đúng bằng kết quả tính toán. Các lệnh: a) ADD_I (trong LAD) hoặc +I (trong STL):là lệnh cộng hai số nguyên 16 bit (IN1 và IN2) kết quả được cất trong OUT(LAD) hoặc trong IN2(STL). b) SUB-I (trong LAD) hoặc -I (trong STL):là lệnh trừ hai số nguyên 16 bit (IN1 và IN2) kết quả được cất trong OUT(LAD) hoặc trong IN2(STL). Các toán hạng: IN1, IN2 (Word):VW, T, C, IW, QW, MW, SMW, AC, AIW, hằng số,*VD, *AC. OUT (Word): VW, T, C, IW, QW, MW, SMW, AC, *VD, *AC. c) ADD_DI (trong LAD) hoặc +D (trong STL):là lệnh cộng hai số nguyên 32 bit (IN1 và IN2) kết quả được cất trong OUT(LAD) hoặc trong IN2(STL). d) SUB_DI (trong LAD) hoặc -D (trong STL):là lệnh trừ hai số nguyên 32 bit (IN1 và IN2) kết quả được cất trong OUT(LAD) hoặc trong IN2(STL). Các toán hạng: IN1, IN2 (Double Word):VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT (Double Word): VD, ID, QD, MD, SMD, AC, *VD, *AC. e) ADD_R (trong LAD) hoặc +R (trong STL):là lệnh cộng hai số nguyên 32 bit (IN1 và IN2) kết quả được cất trong OUT(LAD) hoặc trong IN2(STL). f) SUB_R (trong LAD) hoặc -R (trong STL):là lệnh trừ hai số nguyên 32 bit (IN1 và IN2) kết quả được cất trong OUT(LAD) hoặc trong IN2(STL). Các toán hạng: IN1, IN2 (Double Word):VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT (Double Word): VD, ID, QD, MD, SMD, AC, *VD, *AC. g) MUL: thực hiện nhân hai số nguyên 16 bit (IN1, IN2 trong LAD) hoặc nhân số nguyên 16 bit n1 và số nguyên chứa trong từ thấp của toán hạng 32 bit n2 (trong STL) và cho ra kết quả chứa trong từ kép OUT(4 byte trong LAD) hoặc n2 (32 bit). Toán hạng: IN1, IN2, n1 (word): VW, T, C, IW, QW, MW, SMW, AC, AIW, hằng số,*VD, *AC. OUT, n2(từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. h) DIV: thực hiện nhân hai số nguyên 16 bit (IN1, IN2 trong LAD) hoặc nhân số nguyên 16 bit n1 và số nguyên chứa trong từ thấp của toán hạng 32 bit n2 (trong STL) và kết quả 32 bit chứa trong OUT hoặc n2 gồm thương số ghi trong từ thấp (16 bit từ 0¸15) và phần dư ghi trong từ cao (16 bit từ 16¸31). Toán hạng: IN1, IN2, n1 (word): VW, T, C, IW, QW, MW, SMW, AC, AIW, hằng số,*VD, *AC. OUT, n2(từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. i) MUL_R (trong LAD) hoặc *R trong STL: thực hiện nhân hai số thực 32 bit (IN1, IN2 trong LAD và STL) và cho ra kết quả chứa trong từ kép OUT(4 byte trong LAD) hoặc IN2 (32 bit). Toán hạng: IN1, IN2, n1 (từ kép): VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT, n2(từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. j) DIV_R (trong LAD) hoặc /R trong STL: thực hiện chia hai số thực 32 bit (IN1, IN2 trong LAD và STL) và cho ra kết quả chứa trong từ kép OUT(4 byte trong LAD) hoặc IN2 (32 bit). Toán hạng: IN1, IN2, n1 (từ kép): VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT, n2(từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. k) SQRT: lệnh thực hiện việc lấy căn bậc hai của số thực 32 bit IN. Kết quả cũng là một số thực 32 bit được ghi vào từ kép OUT (4 Byte). Toán hạng: IN1, IN2, n1 (từ kép): VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT, n2(từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. 5.3.12. Lệnh tăng, giảm một đơn vị và lệnh giá trị thanh ghi. Các lệnh tăng giảm và đảo sử dụng những ô nhớ đặc biệt mà lệnh đó sử dụng được trình bày trong bảng sau: Lệnh Kiểu lệnh SM1.0 (kết quả 0) SM1.1 (báo tràn) SM1.2 (kết quả âm) SM1.3 (Chia cho 0) INVW Không dấu Có Không Không Không INVD Không dấu Có Không Không Không INCW Nguyên Có Có(1) Có Không INCD Nguyên Có Có(1) Có Không DECW Nguyên Có Có(1) Có Không DECD Nguyên Có Có(1) Có Không (1) Kết quả tràn khung. a) INC_W (trong LAD) hoặc INCW (trong STL):lệnh cộng số nguyên 1 vào nội dung từ đơn. Kết quả được ghi vào OUT (trong LAD) hoặc ghi lại vào (IN trong STL). Các toán hạng: IN (Word): VW, T, C, IW, QW, MW, SMW, AC, AIW, hằng số,*VD, *AC. OUT (Word): VW, T, C, IW, QW, MW, SMW, AC, *VD, *AC. b) INC_W (trong LAD) hoặc INCW (trong STL):lệnh cộng số nguyên 1 vào nội dung từ kép. Kết quả được ghi vào OUT (trong LAD) hoặc ghi lại vào (IN trong STL). Toán hạng: IN (từ kép): VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT (từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. c) DEC_W (trong LAD) hoặc DECW (trong STL):lệnh bớt nội dung từ đơn đi một đơn vị. Kết quả được ghi vào OUT (trong LAD) hoặc ghi lại vào (IN trong STL). Các toán hạng: IN (Word): VW, T, C, IW, QW, MW, SMW, AC, AIW, hằng số,*VD, *AC. OUT (Word): VW, T, C, IW, QW, MW, SMW, AC, *VD, *AC. d) DEC_DW (trong LAD) hoặc DECDW (trong STL):lệnh bớt nội dung từ đơn đi một đơn vị. Kết quả được ghi vào OUT (trong LAD) hoặc ghi lại vào (IN trong STL). Toán hạng: IN (từ kép): VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT(từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. e) INV_W (trong LAD) hoặc INVW (trong STL):lệnh đảo giá trị từng bit của từ đơn IN. Kết quả được ghi vào OUT (trong LAD) hoặc ghi lại vào (IN trong STL). Các toán hạng: IN (Word): VW, T, C, IW, QW, MW, SMW, AC, AIW, hằng số,*VD, *AC. OUT (Word): VW, T, C, IW, QW, MW, SMW, AC, *VD, *AC. f) INV_DW (trong LAD) hoặc INVDW (trong STL):lệnh đảo giá trị từng bit của từ kép IN. Kết quả được ghi vào OUT (trong LAD) hoặc ghi lại vào (IN trong STL). Toán hạng: IN (từ kép): VD, ID, QD, MD, SMD, AC, HC, hằng số,*VD, *AC. OUT (từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. 5.3.13. Các lệnh dịch chuyển nội dung ô nhớ. a) MOV_B (trong LAD) hoặc MOVB (trong STL): lệnh sao chép nội dung của byte IN sang byte OUT. Toán hạng: In: VB, IB, QB, MB, SMB, AC, hằng số, *VD, *AC. Out (BYTE): VB, IB, QB, MB, SMB, AC, *VD, *AC. b) MOV_W (trong LAD) hoặc MOVW (trong STL): lệnh sao chép nội dung của từ IN sang byte OUT. Toán hạng: In (từ): VW, T,C, IW, QW, MW, SMW, AC, AIW, hằng số, *VD, *AC. Out (từ): VW, T,C, IW, QW, MW, SMW, AC, AIW, *VD, *AC. c) MOV_DW (trong LAD) hoặc MOVD (trong STL): lệnh sao chép nội dung của từ kép IN sang byte OUT. Toán hạng: In (từ kép): VD, ID, QD, MD, SMD, AC, HC, hằng số, *VD, *AC, &VB, &IB, &QB, &MB, &T, &C. Out(từ kép): VD, ID, QD, MD, SMD, AC, *VD, *AC. d) MOV_R (trong LAD) hoặc MOVR (trong STL): lệnh sao chép nội dung của số thực IN sang byte OUT. Toán hạng: In (từ): VD, ID, QD, MD, SMD, AC, HC, hằng số, *VD, *AC Out(từ): VD, ID, QD, MD, SMD, AC, *VD, *AC. e) SWAP: lệnh trao đổi nội dung của byte thấp và byte cao trong từ đơn IN. Toán hạng: In (từ): VW, T,C, IW, QW, MW, SMW, AC, *VD, *AC. 5.3.14. Các lệnh làm việc với mảng. a) BLKMOV_B (LAD) hoặc BMB (STL): lệnh di chuyển nội dung của một mảng byte. Độ dài của mảng được xác định bởi N có kiểu byte, do vậy lớn nhất mảng chỉ có 255 byte. Byte đầu của mảng là IN (kiểu byte). Nơi đến xác định bằng byte đầu là OUT. Toán hạng: In: VB, IB, QB, MB, SMB, *VD, *AC. Out (BYTE): VB, IB, QB, MB, SMB, *VD, *AC. N(byte): VB, IB, QB, MB, SMB, AC, *VD, *AC, hằng số. b) BLKMOV_B (LAD) hoặc BMB (STL): lệnh di chuyển nội dung của một mảng từ đơn. Độ dài của mảng được xác định bởi N có kiểu byte, do vậy lớn nhất mảng chỉ có 255 từ đơn. Từ đơn đầu của mảng là IN (kiểu từ đơn). Nơi đến xác định bằng từ đơn đầu là OUT. Toán hạng: In (từ đơn): VW, T,C, IW, QW, MW, SMW, AIW, *VD, *AC. Out (từ đơn): VW, T,C, IW, QW, MW, SMW, AQW, *VD, *AC. N (từ đơn): ): VB, IB, QB, MB, SMB, AC, *VD, *AC, hằng số. c)FILL_N (trong LAD) hoặc FILL (STL):lệnh ghi vào một mảng từ đơn giá trị của từ IN. Độ dài của mảng được xác định bởi N có kiểu byte, do vậy lớn nhất mảng chỉ có thể là 255 từ. Từ đơn của mảng là OUT (kiểu từ). Toán hạng: In (từ đơn): VW, T,C, IW, QW, MW, SMW, AIW, hằng số, *VD, *AC. Out (từ đơn): VW, T,C, IW, QW, MW, SMW, AQW, *VD, *AC. N (từ đơn): ): VB, IB, QB, MB, SMB, AC, *VD, *AC, hằng số. 5.3.15. Các lệnh dịch chuyển thanh ghi. a) Nhóm lệnh với thanh ghi có độ dài 16 hoặc 32 bit: Khi sử dụng các lệnh dịch chuyển các bit của từ đơn hay từ kép cần chú ý: - Sẽ không thực hiện việc dịch chuyển nếu như số đếm lần đẩy bằng 0. - Nếu số đếm lần đẩy lớn hơn 0, bit nhớ tràn SM1.1 có giá trị logic cuối cùng được đẩy ra. - Nếu số đếm lần đẩy lớn hơn hoặc bằng 16 khi dịch chuyển từ đơn hay 32 khi dịch chuyển từ kép, thì lệnh sẽ chỉ thực hiện với số đếm lần đẩy lớn nhất là 16 hoặc 32. - Lệnh SRW (đẩy các bit từ đơn sang phải) và SRD (đẩy các bit từ kép sang phải) sẽ chuyển giá trị logic 0 vào bit cao nhất của từ hoặc từ kép tại mỗi lần đẩy. Sau khi thực hiện lệnh, bit SM1.1sẽ có giá trị logic của bit thứ N-1 của từ đơn hoặc từ kép, trong đó N là số lần đẩy. - Lệnh SLW (đẩy các bit từ đơn sang trái) và SLD (đẩy các bit từ kép sang trái) sẽ chuyển giá trị logic 0 vào bit thấp nhất của từ hoặc từ kép tại mỗi lần đẩy. Sau khi thực hiện lệnh, bit SM1.1 sẽ có giá trị logic của bit thứ 16-N đối với từ đơn hoặc 32-N đối với từ kép, trong đó N là số lần đẩy. - Bit báo kết quả 0 (bit SM1.0) sẽ có giá trị logic bằng 1 nếu sau khi thực hiện lệnh đẩy nội dung của từ đơn hay từ kép bằng 0. Khi sử dụng các lệnh quay các bit của từ đơn hay từ kép cần chú ý: - Lệnh quay thực hiện phép đẩy vòng tròn sang trái hoặc sang phải các bit của một từ đơn hoặc một từ kép. Tại mỗi một lần quay, giá trị logic của bit bị đẩy ra khỏi đầu này cũng là giá trị logic được đưa vào đầu kia của từ kép. - Lệnh quay sẽ không được thực hiện nếu như số lần quay có giá trị bằng 0 hay là bằng một bội số của 16 ( đối với từ đơn) hoặc 32 (đối với từ kép). - Đối với các giá trị khác của số đếm lần quay lớn hơn 16(đối với từ đơn) hoặc 32 (đối với từ kép), lệnh sẽ thực hiện với số đếm lần quay mới bằng phần dư của số đếm lần quay cũ chia cho 16 (đối với từ đơn) hoặc 32 (đối với từ kép). - Lệnh RRW (quay sang phải đối với từ đơn) và RRD (lệnh quay sang phải từ kép) tại mỗi lần quay giá trị logic của bit thấp nhất trong từ hoặc từ kép được ghi vào báo tràn SM1.1. Sau khi thực hiện lệnh, bit SM1.1 sẽ có giá trị logic của bit thứ 16-N đối với từ đơn hoặc 32-N đối với từ kép, trong đó N là số lần đẩy. - Lệnh RLW (quay sang trái đối với từ đơn) và RLD (lệnh quay sang trái từ kép) tại mỗi lần quay giá trị logic của bit cao nhất trong từ hoặc từ kép được ghi vào báo tràn SM1.1. Sau khi thực hiện lệnh, bit SM1.1 sẽ có giá trị logic của bit thứ N-1 đối với từ đơn hoặc từ kép, trong đó N là số lần đẩy. - Bit báo kết quả 0 (bit SM1.0) sẽ có giá trị logic bằng 1 nếu sau khi thực hiện lệnh quay nội dung của từ đơn hay từ kép bằng 0. Lệnh Kiểu lệnh SM1.0 (kết quả 0) SM1.1 (báo tràn) SM1.2 (kết quả âm) SM1.3 (chia cho 0) SRW Không dấu có có Không Không SLW Không dấu có có Không Không SRD Không dấu có có Không Không SLD Không dấu có có Không Không RRW Không dấu có có Không Không RLW Không dấu có có Không Không RRD Không dấu có có Không Không RLD Không dấu có có Không Không SHRB Không dấu Không có Không Không Những điều sau đây chỉ đúng với các hàm dịch chuyển bit của từ đơn và từ kép: - Nếu bộ đếm chuyển dịch có giá trị lớn hơn 0 thì bit nhớ tràn SM1.1 có giá trị logic của bit cuối cùng được đẩy ra. - Bit báo kết quả 0 SM1.1 có giá trị logic 1 nếu sau khi lệnh được thực hiện, từ hoặc từ kép có nội dung bằng 0. Những điều sau đây chỉ đúng với các hàm dịch chuyển bit của từ đơn và từ kép: - Nếu bộ đếm dịch chuyển không phải là bội số nguyên của 16 (đối với việc quay từ) hoặc 32 (đối với việc quay từ kép) thì giá trị của bit cuối cùng bị đẩy ra ngoài sẽ được gán cho bit nhớ tràn SM1.1. - Nếu bit báo kết quả 0 có giá trị logic 1 thì giá trị của từ hay từ kép được quay bằng 0. b) Nhóm lệnh với độ dài thanh ghi tùy ý: SHRB lệnh dịch chuyển các bit của thanh ghi một vị trí trong một vòng quét. Thanh ghi được xác định trong lệnh bằng các toán hạng S_bit chỉ địa chỉ bit thấp trong thanh ghi và N chỉ độ dài thanh ghi. Dấu của toán hạng N xác định chiều dịch chuyển từ bit thấp sang bit cao (N>0) hay ngược lại từ bit cao sang bit thấp (N<0). Tóan hạng DATA của lệnh là địa chỉ bit mà giá trị logic của nó sẽ được đẩy vào thanh ghi. Giá trị logic của bit bị đẩy ra khỏi thanh ghi được ghi vào bit báo tràn SM1.1. 5.3.16. Các lệnh làm việc với bảng:(chỉ có trong CPU214). Bảng được định nghĩa là một mảng từ đơn xếp liền nhau từ địa chỉ thấp ở đầu bảng đến địa chỉ cao nhất ở cuối bảng. Hai từ đơn đầu tiên của bảng được dùng để quản lý bảng. Dữ liệu được ghi vào bảng bắt đầu từ từ đơn thứ ba trong bảng, mỗi dữ liệu chiếm một từ đơn. Một bảng nhiều nhất chỉ có thể chứa được 100 dữ liệu. Hai từ đơn đầu bảng có ý nghĩa như sau: - Từ đơn đầu, ký hiệu TL, chứa kích thước của bảng không kể hai từ đơn quản lý bảng, tức là số các từ đơn trong bảng được dùng để ghi dữ liệu. - Từ đơn thứ hai, ký hiệu EC, của bảng dùng để ghi các dữ liệu hiện có trong bảng. a) AT_T_TBL (LAD) hoặc ATT (trong STL): Lệnh ghi thêm vào bảng một dữ liệu kiểu từ đơn, được xác định bằng nội dung của toán hạng DATA (kiểu từ) trong lệnh. Bảng được chỉ định trong lệnh bằng toán hạng TABLE xác định từ đầu tiên của bảng, tức là TL. Nếu bảng đầy tức là EC=TL, bit SM1.4 sẽ có giá trị logic bằng1. Dữ liệu mới được đưa vào sẽ nằm trong từ chưa dùng đầu tiên, tức là ngay sau dữ liệu được nhập trước đó. Khi lệnh được thực hiện xong nội dung của EC tăng lên một đơn vị. Toán hạng: - DATA (từ đơn): VW, T,C, IW, QW, MW, SMW, AC, AIW, hằng số, *VD, *AC. - TABLE (từ đơn): VW, T,C, IW, QW, MW, SMW, *VD, *AC. b) LIFO: Lệnh lấy dữ liệu cuối của bảng ra khỏi bảng, tức là dữ liệu được nhập sau cùng. Nếu bảng trống tức là dữ liệu đã được lấy ra hết, hay EC=0, thì bit SM1.4 sẽ có giá trị logic bằng 1. Dữ liệu lấy ra được đưa vào DATA kiểu từ. Khi lệnh thực hiện xong nội dung của DATA giảm đi một đơn vị. Toán hạng: - DATA (từ đơn): VW, T,C, IW, QW, MW, SMW, AC, AQW, *VD, *AC. - TABLE (từ đơn): VW, T,C, IW, QW, MW, SMW, *VD, *AC. c) FIFO: Lệnh lấy dữ liệu đầu tiên của bảng ra khỏi bảng, tức là dữ liệu được nhập đầu tiên. Nếu bảng trống tức là dữ liệu đã được lấy ra hết, hay EC=0, thì bit SM1.4 sẽ có giá trị logic bằng 1. Dữ liệu lấy ra được đưa vào DATA kiểu từ. Các dữ liệu còn lại trong bảng được dồn lên một vị trí để lấp chỗ trống vừa được lấy ra. Khi lệnh thực hiện xong nội dung của DATA giảm đi một đơn vị. Toán hạng: - DATA (từ đơn): VW, T,C, IW, QW, MW, SMW, AC, AQW, *VD, *AC. - TABLE (từ đơn): VW, T,C, IW, QW, MW, SMW, *VD, *AC. 5.3.17. Các lệnh tìm kiếm: Chỉ sử dụng đối với CPU214. Chỉ sử dụng lệnh tìm kiếm để tìm dữ liệu trong bảng theo mẫu định trước. Mẫu định trước là nội dung của toán hạng PATRN của lệnh. Có bốn luật tìm kiếm: so sánh bằng nhau (=), só sánh khác nhau (), so sánh lớn hơn (>), so sánh nhỏ hơn (<). Lệnh TBL FIND (trong LAD) hoặc END= (, >,, >, < trong STL). Khi tìm thấy INDX chỉ vào dữ liệu đầu tiên tìm được trong bảng và lệnh kết thúc. Do đó để tìm kiếm dữ liệu tiếp theo, INDX phải được tăng lên 1 và gọi lại lệnh này. Nếu như không tìm thấy, INDX có giá trị đúng bằng giá trị của bộ đếm EC. 5.3.18. Các hàm đổi dữ liệu. a) ENCO: hàm xác định chỉ số thấp nhất có giá trị logic 1 trong một từ đơn. b) DECO: hàm chuyển đổi một số nguyên trong khoảng 0¸15 thành chỉ số của bit trong một từ đơn. c) ATH: Hàm chuyển đổi mã ASCII sang số nguyên hệ cơ số 16. d) HTA: hàm chuyển đổi một số nguyên hệ cơ số 16 thành mã ASCII. e) SEG: hàm chuyển đổi sốnguyên hệ cơ số 16 trong khoảng 0¸F sang thành giá trị bit tương ứng của thanh ghi 7 nét. f) BCDI (hoặc BCD_I trong LAD): hàm chuyển đổi một số nhị thập phân sang số nguyên. g) IBCD (hoặc I_BCD trong LAD): hàm chuyển đổi một số nguyên sang số nhị thập phân. h) TRUNC: hàm chuyển đổi số thực 32 bit sang số nguyên 32 bit có dấu, chỉ sử dụng đối với CPU214. i) DTR (DI_REAL trong LAD): hàm chuyển đổi số nguyên 32 bit có dấu sang số thực 32 bit, chỉ sử dụng đối với CPU214. 5.3.19. Xây dựng cấu trúc vòng lặp. Sử dụng vòng lặp FOR… NEXT để thiết kế một vòng lặp với số vòng lặp được chỉ định trong lệnh bằng hai toán hạng ITL kiểu từ đơn chỉ điểm khởi phát và FNL cũng kiểu từ đơn để chỉ điểm kết thúc. Ngoài ra lệnh còn sử dụng một từ đơn IDX để lưu số vòng lặp tức thời. Tại thời điểm bắt đầu thực hiện vòng lặp FOR, từ đơn IDX nhận giá trị của ITL. Sau đó mỗi khi kết thúc một vòng lặp, tức là khi gặp lệnh NEXT, nội dung của IDX được tăng lên 1 và được so sánh với nội dung của FNL. Nếu nội dung của IDX chưa lớn hơn FNL, chương trình sẽ thực hiện lại vòng lặp, ngược lại khi nội dung của IDX đã lớn hơn FNL chương trình kết thúc lệnh FOR… NEXT bằng cách thực hiện lệnh nằm ngay sau câu lệnh NEXT. Khi gặp lệnh bit đầu tiên của ngăn xếp nhận giá trị là 1. Toán hạng: IDX (từ đơn): VW, T,C, IW, QW, MW, SMW, AC, *VD, *AC. ITL (từ đơn): VW, T,C, IW, QW, MW, SMW, AC, AIW, hằng số, *VD, *AC. FNL (từ đơn): VW, T,C, IW, QW, MW, SMW, AC, AIW, hằng số, *VD, *AC. 5.3.20. Đồng hồ thời gian thực. Chỉ được dùng trong CPU214. Các dữ liệu đọc ghi với đồng hồ thời gian thực trong LAD và trong STL có độ dài một byte và phải được mã hóa theo hệ nhị thập phân. Chúng nằm trong bộ đệm gồm 8 byte nằm liền nhau theo thứ tự. Byte 0 Năm từ 0¸99 Byte 1 Tháng từ 0¸12 Byte 2 Ngày từ 0¸31 Byte 3 Giờ từ 0¸23 Byte 4 Phút từ 0¸59 Byte 5 Giây từ 0¸59 Byte 6 0 Byte 7 0 Ngày trong tuần READ_RTC (trong LAD) hoặc TODR (trong STL): lệnh đọc nội dung của đồng hồ thời gian thực vào bộ đệm 8 byte được chỉ thị trong lệnh bằng toán hạng T. SET_RTC (trong LAD) hoặc TODW (trong STL): lệnh ghi nội dung của bộ đệm 8 byte được chỉ thị trong toán hạng T vào đồng hồ thời gian thực. Chú ý: Không được sử dụng các lệnh đọc và ghi của đồng hồ thời gian thực vừa trong chương trình chính vừa trong chương trình xử lý ngắt. Khi thực hiện chương trình xử lý ngắt thì các lệnh đọc và ghi đồng hồ thời gian thực sẽ không được thực hiện. Bit SM4.5 sẽ có giá trị logic 1 trong trường hợp như vậy. 5.3.21. Truyền thông trên mạng nhiều chủ. Các lệnh đọc và ghi dữ liệu từ một trạm này đến bộ nhớ của bất cứ trạm (PLC) nào khác trong mạng nhờ cổng truyền thông. Các trạm được xác định để giao lưu với nhau thông qua địa chỉ quy ước của chúng (PLC station address). Một mạng thông thường có thể có tới 32 trạm. Nếu sử dụng bộ lặp (repeaters), số trạm trong mạng có thể được nâng lên con số tối đa là 125. Số dữ liệu nhiều nhất cho một lần truyền là 16 byte. Các lệnh đọc ghi mảng dử liệu của một trạm khác qua cổng PORT là NETR và NETW. Kiểu truyền thông và mạng liên kết được xác định bằng nội dung quản lý bộ đệm truyền thông được chỉ thị trong lệnh bằng một toán hạng TABLE. Cùng một lúc chỉ có thể sử dụng tối đa 8 lệnh đọc và ghi trong mạng. Toán hạng: TABLE (Byte): VB, MB, *VD, *AC. PORT (Byte): hằng số 0. Ngoài ra, để đảm bảo việc truyền thông đựơc an toàn cần phải khai báo sử dụng PPI protocol trước khi sử dụng lệnh NETR và NETW, tốt nhất là tại vòng quét đầu tiên của PLC. PPI protocol là một bộ xác lập kiểu truyền tin nối tiếp 11 bit cho PLC bao gồm 1 bit Start, 8 bit dữ liệu (byte), 1 bit kiểm tra chẵn lẻ và 1 bit Stop. Bộ đệm truyền thông có nhiều nhất là 23 byte được chia làm hai vùng: vùng các thông tin quản lý gồm 7 byte và vùng dữ liệu. Vùng dữ liệu có thể có tới 16 byte. Cấu trúc của bộ đệm truyền thông, giả sử được khai báo trong trạm A để giao lưu dữ liệu với trạm B như sau: Byte 7 6 5 4 3 2 1 0 0 Các bit trạng thái Xem bảng dưới 1 Địa chỉ trạm B Địa chỉ của trạm B mà trạm A giao lưu để truyền thông. 2 Con trỏ gián tiếp chỉ vùng địa chỉ trong B Con trỏ chỉ vào đầu mảng dữ liệu được truyền thông trong trạm B 3 4 5 6 Độ dài mảng dữ liệu Mãng dữ liệu truyền thông trong trạm A. nếu kiểu truyền thông với B là để đọc thì sau khi thực hiện lệnh NETR, dữ liệu đọc được của B được ghi vào đây. Ngược lại nếu kiểu truyền thông là gửi thì dữ liệu của A gửi sang B phải được ghi vào mảng này trước khi gọi lệnh NETW. 7 Dữ liệu 0 8 Dữ liệu 1 … … 22 Dữ liệu 15 Byte đầu tiên của bộ đệm gồm 8 bit truyền thông có cấu trúc như sau: 0 3 không có lỗi truyền thông. Lỗi quá thời gian trạm B không trả lời Lỗi tín hiệu nhận (chẵn/lẽ) Lỗi ghép nối( lặp địa chỉ hoặc lỗi phần cứng). Lỗi xếp hàng, quá nhiều lệnh NETR và NETW. Không khai báo PPI Protocol trong SM30. Lỗi tham số. Bộ đệm truyền thông có tham số sai. Trạm B bận. Lỗi tổ chức. Lỗi dữ liệu thông báo… A_F chưa sử dụng 1 2 3 4 0 5 Không có lỗi. Có lỗi 6 Không làm việc. Có làm việc 7 Chưa thực hiện xong việc truyền thông. Thực hiện xong việc truyền thông 5.3.22. Ngắt và xử lý ngắt. Nguyên tắc cơ bản của một chế độ ngắt cũng giống như việc thực hiện lệnh gọi một chương trình con, sự khác nhau ở đây là việc gọi chương trình con được gọi một cách chủ động bằng lệnh CALL, còn xử lý ngắt được gọi bị động bằng một tín hiệu báo ngắt, hệ thống sẽ tổ chức gọi và thực hiện chương trình con tương ứng với tín hiệu báo ngắt đó, hay nói cách khác hệ thống sẽ tổ chức xử lý tín hiệu ngắt đó. Chương trình con này gọi là chương trình xử lý ngắt. Trong CPU214 có các kiểu tín hiệu báo ngắt sau: - Tám ngắt vào/ra theo sườn lên và sườn xuống của các cổng I0.0 ¸I0.3. - Hai ngắt thời gian. - Hai ngắt truyền thông nối tiếp (nhận và truyền). - Bảy ngắt bộ đếm tốc độ cao (CV=PV trên HSC0 và thay đổi, xóa ngoài và CV=PV trên HSC1 và HSC2). - Hai ngắt đầu ra truyền xung là PTO0 và PTO1. a) Thứ tự ưu tiên: Nhóm ưu tiên CPU 214 Ngắt truyền thông 4 Ngắt vào/ra 16 Ngắt thời gian 4 b) Khai báo và hủy toàn cục chế độ ngắt: Khi ở chế độ RUN toàn bộ chế độ ngắt khai báo trước sẽ tự động bị vô hiệu hóa, tất cả các chế độ ngắt có thể được kích cùng lúc bằng việc thực hiện việc kích chế độ ngắt toàn cục ENI. Lệnh hủy toàn cục DISI sẽ vô hiệu hóa tất cả các chế độ ngắt. Tuy vậy vẫn cho phép các tín hiệu ngắt được xếp hàng chờ, nhưng không cho phép thực hiện bất cứ một chương trình xử lý ngắt nào. c) Khai báo và hủy một chế độ ngắt: Để khai báo một chế độ ngắt phải thực hiện hai công việc kích tín hiệu báo ngắt cho chế độ đó bằng lệnh ATCH và khai báo chương trình xử lý ngắt tương ứng bằng lệnh ngắt INT. Có thể gộp nhiều tín hiệu báo ngắt vào một chương trình xử lý ngắt, song một tín hiệu báo ngắt chỉ có thể có nhiều nhất một chương trình xử lý ngắt. Có thể hủy bỏ từng chế độ ngắt riêng biệt bằng lệnh DTCH. Lệnh này sẽ đặt một chế độ ngắt vào trạng thái không tích cực. d) Chương trình xử lý ngắt: Cũng giống như một chương trình con, chương trình xử lý ngắt có một nhãn riêng được đánh dấu tại đầu chương trình. Nhãn này được khai báo bằng lệnh INT. Tất cả các lệnh nằm giữa nhãn của chương trình xử lý ngắt và lệnh quay về không điều kiện RETI của chương trình xử lý ngắt đều thuộc về nội dung của chương trình xử lý ngắt. e) Ngắt truyền thông: Kiểu điều khiển truyền thông bằng chương trình được gọi là kiểu điều khiển cổng tự do (Freeport Control). Khi sử dụng chế độ truyền thông này, kiểu biên bản truyền thông freeport , tốc độ truyền tín hiệu, số bit được truyền cho một ký tự, chế độ kiểm tra (parity) phải được định nghĩa trước trong byte đặc biệt SMB30 như sau: SMB30 Giải thích m Kiểu truyền thông: Point to Point (PPI) Freeport PPI (bình dẳng) Không sử dụng m b Tốc độ truyền (Baud): 000 38.400 (CPU214) hay19.200 (CPU212). 001 19.200 010 9.600 011 4.800 2.400 1.200 600 300 b b d Số bit truyền: 8 bit 7 bit p Kiểu kiểm tra (parity): Không kiểm tra. Kiểm tra chẵn (even). Không kiểm tra. Kiểm tra lẻ (Odd) P f) Ngắt vào/ra: Thuộc nhóm tín hiệu báo ngắt vào/ ra là: - Tín hiệu báo ngắt khi có sườn lên hoặc sườn xuống của cổng đầu vào. - Tín hiệu báo ngắt của bộ đếm tốc độ cao. - Tín hiệu báo ngắt của cổng truyền xung. g) Ngắt thời gian: Tín hiệu báo ngắt theo thời gian được phát ra đều đặn theo chu kỳ thời gian. Chu kỳ phát tín hiệu báo ngắt theo thời gian là một số nguyên trong khoảng 5ms¸255ms và được xác định bởi giá trị của SMB34, cho tín hiệu báo ngắt thời gian 0 và của SMB35 cho tín hiệu báo ngắt thời gian 1. ATCH: lệnh khai báo sử dụng một chế độ ngắt với kiểu (hay mã hiệu) được xác định bằng toán hạng EVENT(byte). Chương trình xử lý ngắt tương ứng được xác định bằng toán hạng INT(byte) trong lệnh. Sau khi khai báo tín hiệu báo ngắt của chế độ ngắt đó cũng được kích theo. DTCH: Lệnh hủy bỏ một chế độ ngắt đã được khai báo sử dụng trước đó. Kiểu (hay mã hiệu) của nó được xác định bằng toán hạng EVENT (byte) trong lệnh. INT: Lệnh sử dụng để khai báo một chương trình xử lý ngắt. Nhãn của chương trình được xác định trong toán hạng n của lệnh INT. CRETI, RETI: là lệnh kết thúc có điều liện và không có điều kiện của một chương trình xử lý ngắt. Lệnh kết thúc không điều kiện thường đặt ở cuối chương trình xử lý ngắt. DISI: Lệnh hủy bỏ toàn cục các chế độ ngắt đã được khai báo sử dụng trước đó. Lệnh này chỉ có tác dụng treo các tín hiệu báo ngắt lên và không xử lý chúng, nhưng vẫn cho phép chúng được ghi vào hàng chờ xử lý. ENI: Lệnh khai báo toàn cúc các chế độ ngắt hoặc kích hoạt lại tất cả các chế độ ngắt đã bị hủy trước đó bằng lệnh DISI. 5.3.23. Sử dụng ngắt truyền thông. a) Ghi dữ liệu lên mạng. Lệnh XMT làm việc với cổng truyền thông nối tiếp của PLC lệnh ghi dữ liệu lên mạng. Toán hạng TABLE (VB, IB, QB, MB, SMB, *VD, *AC) của lệnh xác định mảng dữ liệu được chuyển. Toán hạng PORT 0 xác định tên cổng truyền thông được sử dụng. b) Đọc dữ liệu từ mạng. Khi chế độ ngắt truyền thông kiểu 8 đã được khai báo và chế độ truyền thông freeport phù hợp đã được xác định trong SMB30 thì mỗi khi có dữ liệu cùng kiểu trên mạng, dữ liệu sẽ được chuyển vào ô nhớ SMB2 theo từng byte. Khác với việc ghi dữ liệu lên mạng, việc nhận dữ liệu nên được tiến hành trong chế độ ngắt truyền thông. Mỗi khi nhận được một ký tự, hệ thống sẽ phát ra một tín hiệu báo ngắt có mã hiệu 8. Những ký tự nhận được được hệ thống cất giữ trong SMB2 và chuyển nó tới vùng mong muốn. 5.3.24. Sử dụng bộ đếm tốc độ cao. a) Nguyên lý hoạt động của bộ đếm tốc độ cao. HSC0: Bộ đếm HSC0 có một cổng vào là I0.0. Nó chỉ có một chế độ làm việc duy nhất là đếm tiến và đếm lùi số các sườn lên của tín hiệu đầu vào tại cổng I0.0. Chiều đếm tiến và đếm lùi được quy định bởi trạng thái của bit SM37.3 như sau: đếm lùi theo sườn lên của I0.0. đếm tiến theo sườn lên của I0.0. Tần số đếm cực đại cho phép của HSC0 là 2KHz. HSC1 ( chỉ có trong CPU214): là bộ đếm linh hoạt, sử dụng bốn đầu vào I0.6, I0.7, I1.0, I1.1 với 12 chế độ làm việc khác nhau: Chế độ làm việc Mô tả 0 Đếm tiến hoặc lùi sườn lên của I0.6. Chiều đếm được quy định bởi SM47.3. Hoạt động của HSC1 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 1 Đếm tiến hoặc lùi sườn lên của I0.6. Chiều đếm được quy định bởi SM47.3. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài. 2 Đếm tiến hoặc lùi sườn lên của I0.6. Chiều đếm được quy định bởi SM47.3. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài; I1.1 làm tín hiệu khởi phát (start). 3 Đếm tiến hoặc lùi sườn lên của I0.6. Chiều đếm được quy định bởi cổng I0.7. Hoạt động của HSC1 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 4 Đếm tiến hoặc lùi sườn lên của I0.6. Chiều đếm được quy định bởi cổng I0.7. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài. 5 Đếm tiến hoặc lùi sườn lên của I0.6. Chiều đếm được quy định bởi cổng I0.7. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài; I1.1 làm tín hiệu khởi phát (start). 6 Đếm tiến theo sườn lên của I0.6 và đếm lùi theo sườn lên của I0.7. Hoạt động của HSC1 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 7 Đếm tiến theo sườn lên của I0.6 và đếm lùi theo sườn lên của I0.7. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài. 8 Đếm tiến theo sườn lên của I0.6 và đếm lùi theo sườn lên của I0.7. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài. I1.1 làm tín hiệu khởi phát (start). 9 Đếm số lần lệch trạng thái của hai cổng vào I0.6 và I0.7 tức là khi kết quả của phép tính logic XOR giữa I0.6 và I0.7 là 1. Hoạt động của HSC1 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 10 Đếm số lần lệch trạng thái của hai cổng vào I0.6 và I0.7 tức là khi kết quả của phép tính logic XOR giữa I0.6 và I0.7 là 1. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài. 11 Đếm số lần lệch trạng thái của hai cổng vào I0.6 và I0.7 tức là khi kết quả của phép tính logic XOR giữa I0.6 và I0.7 là 1. HSC1 sử dụng I1.0 làm tín hiệu xóa (reset )từ bên ngoài. I1.1 làm tín hiệu khởi phát (start). HSC2 ( chỉ có trong CPU214): là bộ đếm linh hoạt, cũng giống như HSC1 nhưng chúng làm việc độc lập với nhau; thay vì sử dụng bốn đầu vào I0.6, I0.7, I1.0, I1.1 thì HSC2 sử dụng các đầu vào I1.2, I1.3, I1.4, I1.5 với 12 chế độ làm việc khác nhau: Chế độ làm việc Mô tả 0 Đếm tiến hoặc lùi sườn lên của I1.2. Chiều đếm được quy định bởi SM57.3. Hoạt động của HSC2 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 1 Đếm tiến hoặc lùi sườn lên của I1.2. Chiều đếm được quy định bởi SM57.3. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài. 2 Đếm tiến hoặc lùi sườn lên của I1.2. Chiều đếm được quy định bởi SM57.3. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài; I1.5 làm tín hiệu khởi phát (start). 3 Đếm tiến hoặc lùi sườn lên của I1.2. Chiều đếm được quy định bởi cổng I1.3. Hoạt động của HSC2 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 4 Đếm tiến hoặc lùi sườn lên của I1.2. Chiều đếm được quy định bởi cổng I1.3. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài. 5 Đếm tiến hoặc lùi sườn lên của I1.2. Chiều đếm được quy định bởi cổng I1.3. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài; I1.5 làm tín hiệu khởi phát (start). 6 Đếm tiến theo sườn lên của I1.2 và đếm lùi theo sườn lên của I1.3. Hoạt động của HSC2 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 7 Đếm tiến theo sườn lên của I1.2 và đếm lùi theo sườn lên của I1.3. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài. 8 Đếm tiến theo sườn lên của I1.2 và đếm lùi theo sườn lên của I1.3. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài. I1.5 làm tín hiệu khởi phát (start). 9 Đếm số lần lệch trạng thái của hai cổng vào I1.2 và I1.3 tức là khi kết quả của phép tính logic XOR giữa I1.2 và I1.3 là 1. Hoạt động của HSC2 hoàn toàn được điều khiển bởi hệ thống (không có tín hiệu kích và xóa từ bên ngoài). 10 Đếm số lần lệch trạng thái của hai cổng vào I1.2 và I1.3 tức là khi kết quả của phép tính logic XOR giữa I1.2 và I1.3 là 1. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài. 11 Đếm số lần lệch trạng thái của hai cổng vào I1.2 và I1.3 tức là khi kết quả của phép tính logic XOR giữa I1.2 và I1.3 là 1. HSC2 sử dụng I1.4 làm tín hiệu xóa (reset )từ bên ngoài. I1.5 làm tín hiệu khởi phát (start). b) Thủ tục khai báo sử dụng bộ đếm tốc độ cao. Khai báo sử dụng các bộ đếm HSC0, HSC1, HSC2 nên thực hiện tại vòng quét đầu tiên, khi mà bit SM0.1 có giá trị là 1. Thủ tục tốt nhất nên đựoc lập thành một chương trình con và chương trình con đó được gọi trong vòng quét đầu tiên bằng lệnh CALL. 5.3.25. Sử dụng hàm phát xung tốc độ cao. CPU 214 sử dụng hai cổng Q0.0 và Q0.1 để phát dãy xung tần số cao hoặc tín hiệu điều xung theo độ rộng. PTO là một dãy xung vuông tuần hoàn có chu kỳ là một số nguyên trong khoảng 250ms¸65.535ms hoặc từ 2ms¸65.535ms. Độ rộng mỗi xung bằng ½ chu kỳ của mỗi dãy. PWM là một dãy xung tuần hoàn có chu kỳ là một số nguyên trong khoảng 250ms¸65.535ms hoặc từ 2ms¸65.535ms. Khác với PTO, độ rộng của mỗi xung có thể quy định được là một số nguyên nằm trong khoảng 0ms¸65.535ms hoặc 0ms¸65.535ms. Nếu độ rộng xung được quy định lớn hơn chu kỳ của PWM thì một tín hiệu có giá trị logic bằng 1, ngược lại sẽ có một tín hiệu logic 0. Lệnh PLS lệnh phát xung tại cổng Q0.0 hoặc Q0.1 theo cấu trúc được định nghĩa trong byte điều khiển và các ô nhớ về chu kỳ độ rộng. Cổng xung phát ra được chỉ định trong toán hạng x (0 cho Q0.0 và 1 choQ0.1) của lệnh. VI. Chương trình điều khiển băng tải (dùng S7-200) Sơ đồ các tín hiệu vào ra tương ứng với các bộ phận Network 1 là khởi động động cơ 1 chiều(tác dụng làm xích truyển động). Động cơ này có tín hiệu đầu ra là Q0.2 và tín hiệu đầu vào là I0.2 Network 2 khi phôi đi đến công tắc hành trình1 thì trạng thái này sẽ được lưu vào biến nhớ M0.1trong thoài gian là 2.5s(có bộ đếm thời gian T37) Network3 cho thấy sau khi pallet chạm vào công tắc hành trình 1 thì sau 2.5s(T37 có tín hiệu) lúc đó sẽ có tín hiệu đầu ra của Q0.3 tương ứng vứi xi lanh gạt 1 sẽ được đẩy ra và đưa pallet qua làn xích 2. Và sau 0.5s( điều khiển bởi T33) thì xi lanh gạt 1 sẽ tự động rút về Network4 cho thấy ngay khi pallet chạm vào công tắc hành trình 2 (tín hiệu I0.4) thì lập tức xilanh chặn 1(đầu ra Q0.4) sẽ được đẩy ra và sẽ giữ ở vị trí đẩy trong 5s Network 5 có tác dụng giống với network 4. Tức là khi pallet đến vị trí công tắc hành trình 3 (I0.5) thì xilanh chặn 2 (Q0.5) sẽ bắn ra và giữ trạng thái này trong 4s Network 6 có tác dụng giống network 2. Khi pallet chạm công tắc hành trình 4(I0.6)thì sẽ lưu trạng thái này vào biến nhớ M2.1. Có T101 điều khiển thời gian(2.5s) Network 7 sẽ làm nhiệm vụ đẩy xilanh gạt 2 (Q0.6) sau 4s khi pallet chạm công tắc hành trình 4(I0.6). Và sẽ rút xi lanh vào sau 0.5s.

Các file đính kèm theo tài liệu này:

  • docNghiên cứu, thiết kế, chế tạo hệ thống MiniCIM.doc