Programmable logic controller

Bộ điều khiển logic khả trình (tiếng Anh: "programmable logic controller", viết tắt: PLC) hay còn gọi là bộ điều khiển lập trình, là thiết bị điều khiển lập trình được (khả trình) cho phép thực hiện linh hoạt các thuật toán điều khiển logic thông qua một ngôn ngữ lập trình. Người sử dụng có thể lập trình để thực hiện một loạt trình tự các sự kiện. Các sự kiện này được kích hoạt bởi tác nhân kích thích (ngõ vào) tác động vào PLC hoặc qua các hoạt động có trễ như thời gian định thì hay các sự kiện được đếm. PLC dùng để thay thế các mạch relay trong thực tế. PLC hoạt động theo phương thức quét các trạng thái trên đầu ra và đầu vào. Khi có sự thay đổi ở đầu vào thì đầu ra sẽ thay đổi theo. Ngôn ngữ lập trình của PLC có thể là Ladder hay State Logic. Hiện nay có nhiều hãng sản xuất ra PLC như Siemens, Allen-Bradley, Mitsubishi Electric, General Electric, Omron, Honeywell...

Một khi sự kiện được kích hoạt thật sự, nó bật ON hay OFF thiết bị điều khiển bên ngoài được gọi là thiết bị vật lý. Một bộ điều khiển lập trình sẽ liên tục "lặp" trong chương trình do "người sử dụng lập ra" chờ tín hiệu ở ngõ vào và xuất tín hiệu ở ngõ ra tại các thời điểm đã lập trình.

Để khắc phục những nhược điểm của bộ điều khiển dùng dây nối (bộ điều khiển bằng Relay) người ta đã chế tạo ra bộ PLC nhằm thỏa mãn các yêu cầu sau:

- Lập trình dễ dàng, ngôn ngữ lập trình dễ học.
- Gọn nhẹ, dễ dàng bảo quản, sửa chữa.
- Dung lượng bộ nhớ lớn để có thể chứa được những chương trình phức tạp.
- Hoàn toàn tin cậy trong môi trường công nghiệp.
- Giao tiếp được với các thiết bị thông minh khác như: máy tính, nối mạng, các môi Modul mở rộng.
- Giá cả cá thể cạnh tranh được.

Các thiết kế đầu tiên là nhằm thay thế cho các phần cứng Relay dây nối và các Logic thời gian.Tuy nhiên,bên cạnh đó việc đòi hỏi tăng cường dung lượng nhớ và tính dễ dàng cho PLC mà vẫn bảo đảm tốc độ xử lý cũng như giá cả… Chính điều này đã gây ra sự quan tâm sâu sắc đến việc sử dụng PLC trong công nghiệp. Các tập lệnh nhanh chóng đi từ các lệnh logic đơn giản đến các lệnh đếm, định thời, thanh ghi dịch… sau đó là các chức năng làm toán trên các máy lớn… Sự phát triển các máy tính dẫn đến các bộ PLC có dung lượng lớn, số lượng I/O nhiều hơn.

Trong PLC, phần cứng CPU và chương trình là đơn vị cơ bản cho quá trình điều khiển hoặc xử lý hệ thống. Chức năng mà bộ điều khiển cần thực hiện sẽ được xác định bởi một chương trình. Chương trình này được nạp sẵn vào bộ nhớ của PLC, PLC sẽ thực hiện việc điều khiển dựa vào chương trình này. Như vậy nếu muốn thay đổi hay mở rộng chức năng của quy trình công nghệ, ta chỉ cần thay đổi chương trình bên trong bộ nhớ của PLC. Việc thay đổi hay mở rộng chức năng sẽ được thực hiện một cách dễ dàng mà không cần một sự can thiệp vật lý nào so với sử dụng các bộ dây nối hay Relay.

==Cấu trúc, nguyên lý hoạt động ==
===Cấu trúc ===
Tất cả các PLC đều có thành phần chính là: Một bộ nhớ chương trình RAM bên trong (có thể mở rộng thêm một số bộ nhớ ngoài EPROM). Một bộ vi xử lý có cổng giao tiếp dùng cho việc ghép nối với PLC, các module I/O.

Bên cạnh đó, một bộ PLC hoàn chỉnh còn đi kèm thêm một đơn vị lập trình bằng tay hay bằng máy tính. Hầu hết các đơn vị lập trình đơn giản đều có đủ RAM để chứa đựng chương trình dưới dạng hoàn thiện hay bổ sung. Nếu đơn vị lập trình là đơn vị xách tay, RAM thường là loại CMOS có pin dự phòng, chỉ khi nào chương trình đã được kiểm tra và sẵn sàng sử dụng thì nó mới truyền sang bộ nhớ PLC. Đối với các PLC lớn thường lập trình trên máy tính nhằm hỗ trợ cho việc viết, đọc và kiểm tra chương trình. Các đơn vị lập trình nối với PLC qua cổng RS232, RS422, RS485, …

===Nguyên lý hoạt động của PLC===
CPU điều khiển các hoạt động bên trong PLC. Bộ xử lý sẽ đọc và kiểm tra chương trình được chứa trong bộ nhớ, sau đó sẽ thực hiện thứ tự từng lệnh trong chương trình, sẽ đóng hay ngắt các đầu ra. Các trạng thái ngõ ra ấy được phát tới các thiết bị liên kết để thực thi. Và toàn bộ các hoạt động thực thi đó đều phụ thuộc vào chương trình điều khiển được giữ trong bộ nhớ.

Hệ thống Bus là tuyến dùng để truyền tín hiệu, hệ thống gồm nhiều đường tín hiệu song song:
- Address Bus: Bus địa chỉ dùng để truyền địa chỉ đến các Modul khác nhau.
- Data Bus: Bus dùng để truyền dữ liệu.
- Control Bus: Bus điều khiển dùng để truyền các tín hiệu định thì và điểu khiển đồng bộ các hoạt động trong PLC.

Trong PLC các số liệu được trao đổi giữa bộ vi xử lý và các modul vào ra thông qua Data Bus. Address Bus và Data Bus gồm 8 đường, ở cùng thời điểm cho phép truyền 8 bit của 1 byte một cách đồng thời hay song song.

Nếu một modul đầu vào nhận được địa chỉ của nó trên Address Bus, nó sẽ chuyển tất cả trạng thái đầu vào của nó vào Data Bus. Nếu một địa chỉ byte của 8 đầu ra xuất hiện trên Address Bus, modul đầu ra tương ứng sẽ nhận được dữ liệu từ Data bus. Control Bus sẽ chuyển các tín hiệu điều khiển vào theo dõi chu trình hoạt động của PLC. Các địa chỉ và số liệu được chuyển lên các Bus tương ứng trong một thời gian hạn chế.

Hệ thống Bus sẽ làm nhiệm vụ trao đổi thông tin giữa CPU, bộ nhớ và I/O. Bên cạch đó, CPU được cung cấp một xung Clock có tần số từ 1,8 MHz. Xung này quyết định tốc độ hoạt động của PLC và cung cấp các yếu tố về định thời, đồng hồ của hệ thống.

===Bộ nhớ===
PLC thường yêu cầu bộ nhớ trong các trường hợp: Làm bộ định thời cho các kênh trạng thái I/O. Làm bộ đệm trạng thái các chức năng trong PLC như định thời, đếm, ghi các Relay.

Mỗi lệnh của chương trình có một vị trí riêng trong bộ nhớ, tất cả mọi vị trí trong bộ nhớ đều được đánh số, những số này chính là địa chỉ trong bộ nhớ. Địa chỉ của từng ô nhớ sẽ được trỏ đến bởi một bộ đếm địa chỉ ở bên trong bộ vi xử lý. Bộ vi xử lý sẽ giá trị trong bộ đếm này lên một trước khi xử lý lệnh tiếp theo. Với một địa chỉ mới, nội dung của ô nhớ tương ứng sẽ xuất hiện ở đầu ra, quá trình này được gọi là quá trình đọc.

Bộ nhớ bên trong PLC được tạo bởi các vi mạch bán dẫn, mỗi vi mạch này có khả năng chứa 2.000 - 16.000 dòng lệnh, tùy theo loại vi mạch. Trong PLC các bộ nhớ như RAM, EPROM đều được sử dụng.
- RAM (Random Access Memory) có thể nạp chương trình, thay đổi hay xóa bỏ nội dung bất kỳ lúc nào. Nội dung của RAM sẽ bị mất nếu nguồn điện nuôi bị mất. Để tránh tình trạng này các PLC đều được trang bị một pin khô, có khả năng cung cấp năng lượng dự trữ cho RAM từ vài tháng đến vài năm. Trong thực tế RAM được dùng để khởi tạo và kiểm tra chương trình. Khuynh hướng hiện nay dùng CMOS-RAM nhờ khả năng tiêu thụ thấp và tuổi thọ lớn.
- EPROM (Electrically Programmable Read Only Memory) là bộ nhớ mà người sử dụng bình thường chỉ có thể đọc chứ không ghi nội dung vào được. Nội dung của EPROM không bị mất khi mất nguồn, nó được gắn sẵn trong máy, đã được nhà sản xuất nạp và chứa hệ điều hành sẵn. Nếu người sử dụng không muốn mở rộng bộ nhớ thì chỉ dùng thêm EPROM gắn bên trong PLC. Trên PG (Programer) có sẵn chỗ ghi và xóa EPROM.
- EEPROM (Electrically Erasable Programmable Read Only Memory) liên kết với những truy xuất linh động của RAM và có tính ổn định. Nội dung của nó có thể được xóa và lập trình lại, tuy nhiên số lần lưu sửa nội dung là có giới hạn.
- Môi trường ghi dữ liệu thứ tư là đĩa cứng hoặc đĩa mềm, được sử dụng trong máy lập trình. Đĩa cứng hoặc đĩa mềm có dung lượng lớn nên thường được dùng để lưu những chương trình lớn trong một thời gian dài.

Kích thước bộ nhớ:
- Các PLC loại nhỏ có thể chứa từ 300 -1.000 dòng lệnh tùy vào công nghệ chế tạo.
- Các PLC loại lớn có kích thước từ 1K - 16K, có khả năng chứa từ 2.000 -16.000 dòng lệnh.

Ngoài ra còn cho phép gắn thêm bộ nhớ mở rộng như RAM, EPROM.

==Các ngõ vào ra I/O ==
Các đường tín hiệu từ bộ cảm biến được nối vào các modul (các đầu vào của PLC), các cơ cấu chấp hành được nối với các modul ra (các đầu ra của PLC). Hầu hết các PLC có điện áp hoạt động bên trong là 5V, tín hiệu xử lý là 12/24VDC hoặc 100/240VAC. Mỗi đơn vị I/O có duy nhất một địa chỉ, các hiển thị trạng thái của các kênh I/O được cung cấp bởi các đèn LED trên LC, điều này làm cho việc kiểm tra hoạt động nhập xuất trở nên dễ dàng và đơn giản hơn.

Bộ xử lý đọc và xác định các trạng thái đầu vào (ON, OFF) để thực hiện việc đóng hay ngắt mạch ở đầu ra.