🎁️ 🍂️️ 💝 🌟 🎄 🌸 🔔 -->

Thanh ghi chỉ số Z

Thế nào là thanh ghi chỉ số, ứng dụng của nó là gì?

Thanh ghi chỉ số Z

Mục lục:

  1. Định nghĩa
  2. Dùng thanh ghi chỉ số để chỉ định địa chỉ
  3. Điểm chú ý
  4. Có bao nhiêu thanh ghi Z?
  5. Ứng dụng
  6. Thanh ghi ZZ

--------------------------------------------------------------------------------------------------------------------------

  1. Định nghĩa

Dành cho các bạn chưa biết nhiều về các thanh ghi của PLC dòng Q Mitsubishi, các bạn có thể tham khảo ở bài viết 

https://xtmechanicalblog.com/post/47/ban-do-dia-chi-cho-chuong-trinh-ladder-plc-mitsubishi.html

để có thêm góc nhìn tổng quát về các thanh ghi, số lượng cũng như chức năng cơ bản của chúng nhé.

Bản chất thanh ghi Z cũng có tính chất của một thanh ghi bình như thanh ghi D, ví dụ như mạch ở dưới.

 

Mạch trên vẫn cho ra kết quả giống nhau, nhưng thực tế thì chẳng ai dùng nó với cách như vậy cả.

Để giải thích lý do vì sao, mình cùng "hóa thân" thành CPU để xem nó nghĩ gì nhé.

 

Như trên, bạn thấy rằng ở 2 dòng code đầu, CPU chỉ định địa chỉ cụ thể D0D2, còn ở 2 dòng cuối, Z1 không hề được nhắc đến đúng không?

Vậy định nghĩa chính xác của thanh ghi Z:  “Là một thanh ghi 16 bit dùng để lưu địa chỉ, gọi là thanh ghi chỉ số.”

Nghe thì nhập nhằng quá phải không? Nhưng thực tế không cần phải nhớ làm gì, vì tiếp theo đây là ví dụ cho cách dùng của thanh ghi Z, đọc qua thôi là bạn sẽ hiểu ý nghĩa của thanh ghi chỉ số liền.

  1. Dùng thanh ghi chỉ số để chỉ định địa chỉ

Thanh ghi chỉ số sẽ liên kết các địa chỉ với nhau nhờ tính chất “chỉ số” của nó. Với tính chất đó, nó sẽ đóng vai trò là người chỉ định vị trí thao tác cho CPU đọc/ghi.

Cụ thể, các bạn hay nhìn hình bên dưới:

 

Thanh ghi D được liên kết với nhau ở trên thông qua Z1

Vậy giá trị K123 ở đây sẽ được MOVE vào đâu? D0Z1 là sao?

Thực ra D0Z1 nếu viết theo ngôn ngữ dễ hiểu, chính là D(0+Z1).

Ở câu lệnh đầu tiên Z1 = K20*K10 = 200

Vậy câu lệnh ở phía dưới có nghĩa là:

MOVE K123 D(0+200)

tương đương với MOV K123 D200

Vậy đoạn code đơn giản đi nhiều rồi đúng không, chỉ là “Copy giá trị 123 vào D200” mà thôi.

 

Vậy giờ muốn thay D200 thành D205 thì phải làm sao?

Đơn giản, hoặc là thay đổi Z1 sao cho D(0+Z1) = D205 là được, hoặc dễ hơn D5Z1 với Z1 giữ nguyên như cũ.

 

tuy nhiên chẳng ai viết D5Z1 cả mà người ta thường thay đổi Z1 để thanh ghi Z làm đúng chức năng của nó.

  1. Điểm chú ý:

Ta hãy thử phân tích W0Z1 thì xem có gì khác biệt không nhé.

Tương tự như trên, W0Z1 có nghĩa là W(0+Z1), với Z1 = 200 thì W0Z1 có nghĩa là W200

 

 

Như hình trên, các bạn sẽ vẫn thấy W200 vẫn bằng 0?

Lý do là thanh ghi W sẽ đếm theo hệ thập lục phân 16.

do đó với hệ thập phân 200 khi chuyển sang hệ thập lục phân 16 sẽ thành C8.

Vậy thì W0Z1 sẽ tương đương với WC8 chứ không phải là W200.

 

Khá nhập nhằng phải không? Vậy thì mình viết theo cách như dưới đây, sẽ dễ hiểu hơn.

 

Dùng luôn hệ thập lục phân 16 ngay từ đầu, bài toán sẽ được giải quyết ^^!

  1. Có bao nhiêu thanh ghi Z?

Với dòng Q của Mitsubishi, sẽ có 20 thanh ghi Z từ Z0~Z19.

Sẽ có người bảo sao ít như thế này??? Nhưng không phải vậy, cá nhân mình từ khi làm việc với PLC đến giờ chỉ gặp chương trình lớn nhất cũng chỉ dùng đến Z5 là hết. Lý do vì sao ư? Hãy xem bên dưới.

 

Tất cả 2 vùng trên hình đều dùng Z1, đều có ý nghĩa là dùng để nạp vào D0, D1 đúng không?

Chức năng của thanh ghi chỉ số không dùng để hiển thị, để tính toán cố định mà chỉ dùng để chỉ định địa chỉ, do đó ở khung số 1 sau khi copy giá trị vào D0, thì ở khung số 2 ta lại ghi vào Z1 giá trị K11, rồi copy nó vào D1.

Do đó, không cần phải quá nhiều thanh ghi Z mà chỉ cần “tái sử dụng” như ở trên là đã giải quyết được đa số bài toán yêu cầu dùng thanh ghi Z rồi.

  1. Ứng dụng:

Có 1 thanh ghi D chứa các trạng thái của máy,

với D = 1 thì chạy điều kiện 1, D = 2 thì chạy điều kiện 2,.......D = n thì chạy điều kiện n.

với cách viết bình thường thì sẽ là:

 

 Vậy với n= 1000 điều kiện thì có 1000 cái mạch như trên???

Với thanh ghi Z, chỉ việc viết đơn giản như sau:

 

check lại như sau:

Recipe:

Recipe là gì, thì các bạn có thể tham khảo ở bài viết: https://xtmechanicalblog.com/post/46/cau-truc-chuong-trinh-plc-theo-cach-viet-nguoi-nhat.html

Với yêu cầu như bên dưới:

ứng dụng cho biến Z ta sẽ có đoạn code như sau:

Vậy là với Z1 chạy từ 1-10, Z2 sẽ dành cho nhóm bên phải để lưu trữ, Z3 sẽ dành cho nhóm bên trái để hiển thị.

 

  1. Thanh ghi ZZ

Với thanh ghi Z thì chỉ có 16 bit, tức là giá trị địa chỉ lớn nhất mà nó nhận được chỉ hơn 32000 thôi phải không? Vậy làm thế nào để thao tác với các thanh ghi lớn hơn?

Lúc này biến 32 bit ZZ sẽ được sử dụng cho những địa chỉ như vậy.

Cách cài đặt:

 

Ví dụ:

 

Kết quả:

 

Vậy là mình đã giới thiệu về cách sử dụng của thanh ghi Z rồi, hy vọng qua bài viết này sẽ giúp bạn có thêm một công cụ mới để nâng cao tay nghề trong tương lai.

Mọi câu hỏi, góp ý xin để ở phần bình luận phía dưới, cảm ơn đã dành thời gian cho bài viết của mình và hẹn mọi người trong bài viết tới nhé.

Tác giả:

Nhan Nguyen

Nguồn: https://zubu.jp/%e4%b8%89%e8%8f%b1%e3%82%b7%e3%83%bc%e3%82%b1%e3%83%b3%e3%82%b5%e3%81%aez%ef%bc%88%e3%82%a4%e3%83%b3%e3%83%87%e3%83%83%e3%82%af%e3%82%b9%e3%83%ac%e3%82%b8%e3%82%b9%e3%82%bf%ef%bc%89%e3%81%ae%e4%bd%bf

0 Bình luận

Bài viết liên quan