Mitsubishi PLC Data Types and Label Types
Mitsubishi PLC THIẾT BỊ VÀ NHÃN (DEVICES AND LABELS)
Rất nhiều câu hỏi được đặt ra về các loại dữ liệu PLC của Mitsubishi. Điều này hiện phổ biến hơn với GX Works3 và PLC dòng FX5 (iQ-F) và R (iQ-R).
Đầu tiên, điều quan trọng là phải hiểu bộ nhớ trong PLC Mitsubishi. Chỉ có các thanh ghi 16 bit và các bit đơn. Không có loại lưu trữ khác cho dữ liệu. Không có vùng lưu trữ 8 bit, 32 bit hoặc 64 bit.
Vì vậy, nếu chúng ta bắt đầu với các vùng lưu trữ trong PLC có thể định địa chỉ (chúng ta gọi những THIẾT BỊ này) thì chúng sẽ như sau:
Có một số thiết bị khác không được đề cập ở đây chẳng hạn như thanh ghi R và bit thông báo F, nhưng phần lớn phần này bao gồm các thiết bị được sử dụng phổ biến nhất và địa chỉ của chúng cho dù đó là số thập phân, bát phân hay thập lục phân.
Như bạn có thể thấy ở đây không có gì về kiểu dữ liệu, đây hoàn toàn là thiết bị bộ nhớ (còn gọi là vị trí bộ nhớ). Chúng ta sử dụng chúng để làm gì và chúng ta sử dụng chúng như thế nào là một chuyện riêng biệt. Chẳng hạn, tôi có thể lưu trữ số nguyên 16 bit trong thanh ghi dữ liệu D0 hoặc tôi có thể lưu trữ giá trị dấu phẩy động (thực) 32 bit trong D0. Tuy nhiên, nếu tôi trỏ một giá trị dấu phẩy động 32 bit vào D0 thì nó sẽ sử dụng cả thanh ghi D0 và D1 (hai thanh ghi 16 bit liên tiếp) để chứa giá trị đó. Vì vậy, với tư cách là một lập trình viên của Mitsubishi, trách nhiệm của chúng tôi là đảm bảo rằng chúng tôi không sử dụng lại cùng một thanh ghi cho nhiều thứ.
Những THIẾT BỊ này đã tồn tại trong nhiều thế hệ PLC Mitsubishi. Và trước GX Works2, mọi thứ đều được lập trình ở cấp độ Thiết bị. Không có khái niệm về Nhãn. Chúng tôi đã có nhận xét để có thể biết chúng tôi đang sử dụng nhiều THIẾT BỊ khác nhau để làm gì, nhưng bạn phải nhập THIẾT BỊ khi lập trình. Tuy nhiên, với GX Works2 Mitsubishi đã phát hành khả năng sử dụng Nhãn. Trong GX Works2, tính năng này hoạt động bằng cách dành một phần Bộ nhớ thiết bị thông thường để sử dụng cho vùng bộ nhớ nhãn khi bạn không liên kết nhãn với thiết bị một cách cụ thể. Hoặc bạn có thể chỉ định đăng ký nào bạn muốn sử dụng.
Trong ví dụ bên dưới, chúng ta có hai nhãn, một nhãn được gán cho Thiết bị và một nhãn không có. Khi chương trình biên dịch nó sẽ chọn một thanh ghi dữ liệu để sử dụng.
Có một số thiết bị khác không được đề cập ở đây chẳng hạn như thanh ghi R và bit thông báo F, nhưng phần lớn phần này bao gồm các thiết bị được sử dụng phổ biến nhất và địa chỉ của chúng cho dù đó là số thập phân, bát phân hay thập lục phân.
Như bạn có thể thấy ở đây không có gì về kiểu dữ liệu, đây hoàn toàn là thiết bị bộ nhớ (còn gọi là vị trí bộ nhớ). Chúng ta sử dụng chúng để làm gì và chúng ta sử dụng chúng như thế nào là một chuyện riêng biệt. Chẳng hạn, tôi có thể lưu trữ số nguyên 16 bit trong thanh ghi dữ liệu D0 hoặc tôi có thể lưu trữ giá trị dấu phẩy động (thực) 32 bit trong D0. Tuy nhiên, nếu tôi trỏ một giá trị dấu phẩy động 32 bit vào D0 thì nó sẽ sử dụng cả thanh ghi D0 và D1 (hai thanh ghi 16 bit liên tiếp) để chứa giá trị đó. Vì vậy, với tư cách là một lập trình viên của Mitsubishi, trách nhiệm của chúng tôi là đảm bảo rằng chúng tôi không sử dụng lại cùng một thanh ghi cho nhiều thứ.
Những THIẾT BỊ này đã tồn tại trong nhiều thế hệ PLC Mitsubishi. Và trước GX Works2, mọi thứ đều được lập trình ở cấp độ Thiết bị. Không có khái niệm về Nhãn. Chúng tôi đã có nhận xét để có thể biết chúng tôi đang sử dụng nhiều THIẾT BỊ khác nhau để làm gì, nhưng bạn phải nhập THIẾT BỊ khi lập trình. Tuy nhiên, với GX Works2 Mitsubishi đã phát hành khả năng sử dụng Nhãn. Trong GX Works2, tính năng này hoạt động bằng cách dành một phần Bộ nhớ thiết bị thông thường để sử dụng cho vùng bộ nhớ nhãn khi bạn không liên kết nhãn với thiết bị một cách cụ thể. Hoặc bạn có thể chỉ định đăng ký nào bạn muốn sử dụng.
Trong ví dụ bên dưới, chúng ta có hai nhãn, một nhãn được gán cho Thiết bị và một nhãn không có. Khi chương trình biên dịch nó sẽ chọn một thanh ghi dữ liệu để sử dụng.
Những gì đăng ký sử dụng nhãn chưa được chỉ định có thể di chuyển xung quanh. Nhưng nó sẽ nằm trong phạm vi được xác định bởi bảng sau (người dùng có thể quản lý được):
Khi GX Works3 xuất hiện và phần cứng iQ-F và iQ-R mới, một vùng bộ nhớ mới dành riêng cho Nhãn đã được thêm vào bộ xử lý để chúng tôi không sử dụng bộ nhớ thiết bị tiêu chuẩn cho các nhãn chưa được gán. Vì vậy bảng trên không tồn tại trong GX Works3.
Nhưng còn các kiểu dữ liệu thì sao?
Trong GX Works2 và phần mềm trước đó, vì chúng tôi chủ yếu thực hiện mọi việc ở cấp độ thiết bị nên hầu hết các lập trình viên đều sử dụng các chức năng cụ thể kiểu dữ liệu cổ điển của Mitsubishi. Ví dụ: trên PLC iQ (Q series), chúng ta sẽ có các hàm toán học sau:
+ để bổ sung 16 bit
D+ để bổ sung 32 bit
E+ để bổ sung Dấu phẩy động 32 bit
Trong ví dụ dưới đây chúng ta vẫn sử dụng thiết bị cho các đối số đầu vào và đầu ra.
Nhưng khi chuyển sang Nhãn, bây giờ chúng ta cần đảm bảo Kiểu dữ liệu của nhãn khớp với kiểu dữ liệu dự kiến của hàm:
Để làm được điều này, nhãn sẽ phải có các kiểu dữ liệu sau:
Nhưng thực sự là trong lập trình Sơ đồ khối chức năng (còn gọi là Thang có cấu trúc), nơi việc kiểm tra kiểu dữ liệu bắt đầu phát huy tác dụng và sẽ không cho phép bạn chọn sai kiểu dữ liệu.
Lỗi này xảy ra do chúng ta vô tình đặt kiểu dữ liệu là Word thay vì Float.
Vậy chúng ta có những loại dữ liệu nào và chúng ta có thể sử dụng những giá trị nào với chúng cũng như những chức năng nào phù hợp với những loại đó?
Dưới đây là ảnh chụp màn hình các loại dữ liệu bạn có thể chọn làm loại dữ liệu tiêu chuẩn (đơn giản) trên PLC FX5 (iQ-F)
Chúng có thể chứa dữ liệu như sau:
Nhưng bây giờ trong lập trình FBD, chúng ta cần sử dụng đúng các kiểu hàm để làm việc với các Kiểu dữ liệu này.
Ví dụ: INC tăng Word, nhưng INC_U tăng và Unsigned Word.
Nhưng đôi khi nó hơi khó hiểu khi chuyển đổi kiểu dữ liệu vì có một số lượng hướng dẫn chuyển đổi kiểu dữ liệu đáng kinh ngạc:
Một số trong số này rất dễ hiểu vì khi bạn bắt đầu nhập chúng, chúng rất cụ thể:
Ví dụ: DINT2FLT chuyển đổi 32-bit SIGNED (còn gọi là Từ kép [Đã ký]) thành float.
Tuy nhiên, bạn phải xác định đúng loại dữ liệu của mình khi sử dụng các khối chức năng tuân thủ IEEE 61131. Và đây là nơi mọi thứ có thể trở nên phức tạp.
Ví dụ: hàm WORD_TO_DINT yêu cầu đầu vào WORD (còn gọi là Word Unsigned) và chuyển đổi đầu vào này thành đầu ra DINT (Dword Signed). Vì vậy, WORD và DWORD dành cho các giá trị có dấu UN và INT và DINT dành cho các giá trị có dấu. Nhưng bạn không thể trộn và kết hợp các thanh ghi với các chức năng này vì D100 không có kiểu dữ liệu.
Vậy làm thế nào để bạn biết một chức năng là lệnh cổ điển của Mitsubishi hay phiên bản IEEE mới? Chà, bạn có thể biết bằng cách nhìn vào vị trí của nó trong cửa sổ chọn Phần tử:
Các chức năng hàng đầu trong Hướng dẫn BASIC là các hướng dẫn Mitubishi cổ điển đã có trước khi lập trình dựa trên nhãn thuần túy và hoạt động ở cấp độ đăng ký HOẶC cấp độ Nhãn.
Các hướng dẫn sâu hơn trong khu vực “Chức năng tiêu chuẩn/Khối chức năng” trong Lựa chọn phần tử là các phiên bản tuân thủ IEEE và yêu cầu loại dữ liệu phù hợp, nếu không chúng sẽ không biên dịch