Load memory, Work memory của PLC là gì? Làm sao để chọn đúng

5
613

Trong quá trình lập trình PLC, các bạn sẽ gặp những khái niệm bộ nhớ Load memory, bộ nhớ Work memory… Vậy những bộ nhớ đó là gì và chúng hoạt động như thế nào? Hãy cùng itudong tìm hiểu nhé.

Load Memory – Bộ nhớ chương trình

Sau khi lập trình trên máy tính, chúng ta download xuống PLC thì Load Memory chính là bộ nhớ đầu tiên tiếp nhận đoạn chương trình này. Toàn bộ các dữ liệu chương trình: cấu hình phần cứng, nội dung phần mềm, data block… đều chứa trong bộ nhớ này. Nói cách khác, Load Memory giống như ổ đĩa cứng trên máy tính của chúng ta vậy.

Cấu trúc bộ nhớ PLC

Bộ nhớ Load Memory có thể tích hợp sẵn trong PLC hoặc chứa trong thẻ nhớ. Trên thị trường, các dòng PLC S7-1200 đều có tích hợp sẵn Load memory, vì vậy chúng ta có thể download chương trình xuống PLC mà không cần thẻ nhớ. Tuy nhiên, nếu chương trình chúng ta lập trình khá lớn và nặng thì có thể dùng thẻ nhớ để mở rộng Load memory cho S7-1200.

Các dòng S7-1500 hoặc S7-300 thì khác. Chúng không có bộ nhớ Load memory tích hợp. Vì vậy các dòng PLC này đều phải yêu cầu thẻ nhớ mới có thể hoạt động được.

Work Memory – Bộ nhớ làm việc

Đúng như tên gọi, tại thời điểm PLC đang chạy, những khối block, vùng dữ liệu mà PLC tác động sẽ được kéo qua Work Memory để làm việc. Các đối tượng khác không cần tới thì vẫn nằm nguyên ở Load memory. Khi làm việc xong thì Work memory sẽ giải phóng các ô nhớ này để chứa các đối tượng khác trong quá trình làm việc tiếp theo. Nói cách khác, Work memory giống như RAM trên máy tính của chúng ta vậy. 

Trong PLC, bộ nhớ Work memory lại được chia ra thành 2 phần đó là:

  • Code Work memory: chứa các lệnh thực thi trong Work memory
  • Data Work memory: chứa các block data trong Work memory

Nhưng chúng ta không cần quan tâm 2 phần này lắm vì PLC sẽ tự động chia vùng nhớ Work memory cho phù hợp với tác vụ đang thực hiện. Nó chỉ hữu ích khi chúng ta cần xem thành phần nào đang chiếm nhiều dung lượng để biết mà giảm thiểu tiết kiệm Work memory tương ứng.

Mỗi loại PLC sẽ có bộ nhớ làm việc khác nhau. Dòng càng cao thì bộ nhớ này càng lớn. Và lưu ý là chúng ta không thể mở rộng bộ nhớ này được.

Retain Memory 

Khi PLC đang hoạt động, nếu muốn thông số của tag được giữ lại khi PLC restart thì chúng ta sẽ dùng đến bộ nhớ Retain Memory.

Theo mặc định thì thông số của tag sẽ không được Retain memory lưu lại. Tuy nhiên, nếu chúng ta muốn lưu thông số của tag nào thì sẽ cấu hình cho phép lưu trong Tia portal. 

Cách cấu hình Retain Memory để PLC lưu trữ giá trị tag khi mất điện:

Trong khối Data Block (DB), các bạn muốn PLC lưu trữ thông số của tag nào thì sẽ tích vào ô retain tương ứng của tag đó:

Tuy nhiên, trong bảng Tag table thì các biến nhớ I, Q, M mặc định sẽ bị ẩn không chọn được để lưu trữ:

Để bật tính năng này lên, các bạn nhấn vào nút Retain phía trên bảng Tag Table:

Một cửa sổ hiện ra cho phép chúng ta cấu hình vùng nhớ M có thể lưu trữ:

Ở đây chúng ta nhập theo số lượng Byte tính từ MB0. Ở ví dụ trên, mình nhập 12 byte. Tức là lúc này MB0->MB11 sẽ trở thành vùng nhớ lưu trữ (retain) không bị mất khi cúp điện. Kết quả như sau:

Vùng nhớ I và Q không thể retain được. MD14 không được retain bởi vì MD14 nằm ngoài dãy MB0->MB11 mình đã cấu hình ở trên.

Ví dụ bảng so sánh dung lượng vùng nhớ của dòng PLC S7-1200.   

Ứng với mỗi dòng PLC sẽ có dung lượng bộ nhớ khác nhau. Các bạn có thể tìm thông tin này trong manual hawojc catalog của thiết bị một cách dễ dàng.

Ví dụ dưới đây là bảng so sánh các vùng dung lượng của dòng PLC S7-1200:

Cách chọn PLC đáp ứng bộ nhớ

Như phần trên chúng ta đã tìm hiểu, nếu Load memory bị thiếu, chúng ta có thể bổ sung card để mở rộng được. Nhưng nếu Work Memory bị thiếu thì không có cách nào khác để mở rộng, ngoài trừ phải nâng cấp thay PLC. Vì vậy để tránh chọn nhầm PLC, itudong sẽ hướng dẫn các bạn cách chọn PLC cho phù hợp nhé.

Trong chương trình TIA Portal, sau khi chúng ta lập trình xong, các bạn chọn Program Info như hình bên dưới:

Một bảng hiển thị dung lượng đã sử dụng trong chương trình sẽ hiện ra:

Các bạn chọn tab Resources, toàn bộ thông tin về các vùng nhớ sẽ được hiển thị một cách rõ ràng. Dựa vào đó, các bạn hãy chọn PLC cho phù hợp với yêu cầu bộ nhớ nhé.

Vùng nhớ M và Data Block, nên chọn cái nào để lưu thông số?

Hỏi: Bạn “Tu Le” đã comment hỏi một câu khá hay là “khi lưu thông số của hệ thống thì nên chọn vùng nhớ M hay Data Block để lưu?”

Giải đáp: Đây là một phân vân không hề nhỏ mà ai khi mới bắt đầu lập trình PLC cũng thắc mắc. Câu trả lời là vùng nhớ M và Data Block hoàn toàn có chức năng như nhau. Vì vậy mình chọn cái nào để lưu cũng được.

Tuy nhiên, mình sẽ so sánh ưu nhược điểm của vùng nhớ M và Data Block để các bạn quyết định nhé.

Giống nhau: Đều hỗ trợ các loại dữ liệu khác nhau: bit, byte, word, double word… Đều có thể lưu trữ khi mất điện.

Khác nhau:

Bộ nhớ M chỉ có thể biể diễn tối đa 4 byte (MD). Trong khi DB có thể biểu diễn kiểu cấu trúc khá dài.

Sử dụng DB sẽ làm dữ liệu có cấu trúc hơn và khó bị trùng nhau như khi sử dụng bộ nhớ M. Ví dụ, khi bạn đã sử dụng MD10 rồi thì bạn sẽ không được dùng MW12 nữa vì sẽ trùng nhau. Còn DB sẽ sắp xếp tự động tránh trường hợp trùng nhau này.

Ngoài ra, trong các dòng PLC mới đây (S7-1200 / S7-1500) Khối Datablock có thêm chứ năng Optimized nhằm sắp xếp các biến dữ liệu sao cho tối ưu nhất dung lượng bộ nhớ. Trong khi đó bộ nhớ M thường có địa chỉ cố định và không tối ưu được.

Do vậy kinh nghiệm của tác giả khi lập trình một hệ thống như sau:

  • Bộ nhớ M được ưu tiên dùng khi:
    • Dùng trong các khối OB
    • Ưu tiên tốc độ truy cập nhanh
  • Bộ nhớ Datablock được ưu tiên dùng khi:
    • Dữ liệu có cấu trúc: khối dữ liệu của motor, valve…
    • Kiểu dữ liệu lớn: date and time, mảng array…
    • Dùng để lưu các giá trị trong quá trình hoạt động như: thông số hệ thống, dữ liệu giao tiếp với hệ thống khác…
    • Dùng làm dữ liệu cho template, thư viện.

Video:

Hy vọng bài viết này sẽ giúp ích cho các bạn :). 

(itudong.com)

 

5 BÌNH LUẬN

  1. Chào Anh. Cảm ơn Anh đã chia sẻ.
    Em đang tìm hiểu về S7-1200, em giờ muốn lưu các thông số cài đặt mặc định của máy thì mình lưu vào các vùng nhớ M (MD, MW…) hay lưu vào các Data Block. Cảm ơn Anh.

BÌNH LUẬN

Please enter your comment!
Please enter your name here