1. Giới thiệu về tín hiệu Analog (Tín hiệu tương tự)
Khác với tín hiệu nhị phân, tín hiệu tương tự (Analog) là tín hiệu không chỉ có hai trạng thái là có điện hoặc không có điện, mà tín hiệu tương tự có nhiều tầm giá trị trong một phạm vi nhất định. Một ví dụ điển hình cho một bộ chuyển đổi tín hiệu tương tự là bộ chiết áp – tuỳ thuộc vào vị trí của biến trở mà giá trị có thể tăng hay giảm, đi từ giá trị nhỏ nhất đến giá trị lớn nhất.
Ví dụ về tín hiệu tương tự trong hệ thống điều khiển công nghiệp:
- Nhiệt độ: -50…+150
- Lưu lượng: 0… 200 lít/phút.
- Tốc độ: 500 … 1500 vòng/phút.
Các đơn vị này được chuyển đổi sang dạng điện áp, dòng hay điện trở với sự giúp đỡ của một bộ chuyển đổi đo lường được gọi là sensor/transducer. Ví dụ, tốc độ động cơ chúng ta đo được nằm trong tầm từ 500…1500 vòng/phút thông qua bộ chuyển đổi điện áp sẽ nằm trong tầm từ 0…+10V. Nếu tốc độ động cơ là 865 vòng/phút thì qua bộ chuyển đổi điện áp sẽ trả về giá trị là +3,65V.
Hình 1. Ví dụ về chuyển đổi tốc độ quay sang tín hiệu điện áp.
Quá trình xử lý tín hiệu tương tự trong PLC đối với giá trị điện áp/dòng điện hay điện trở đầu vào… thì cần phải chuyển đổi sang dạng số (Digital), gọi tắt là chuyển đổi ADC. Thông thường bộ chuyển đổi ADC trong hệ thống điều khiển có độ phân giải tầm từ 8 – 11 bit, hoặc lớn hơn do ứng dụng hệ thống.
2. Quá trình xử lý tín hiệu tương tự
Để làm rõ hơn về vấn đề xử lý tín hiệu tương tự, ta dùng một hình ảnh sau đây để minh hoạ rõ hơn về quá trình xử lý tín hiệu tương tự từ tín hiệu vật lý đến cảm biến, module vào/ra tương tự (AI/AQ) cũng như giao tiếp với các bộ điều khiển.
Hình 2. Quá trình xử lý vào/ra tương tự.
- Yêu cầu hệ thống: Trong quá trình sản xuất có rất nhiều các đại lượng vật lý cần được PLC xử lý cho mục đích điều khiển của hệ thống.
- Cảm biến: Các cảm biến đo lường cảm nhận những thay đổi vật lý như sự thay đổi tuyến tính, góc quay, độ dẫn điện.
- Bộ chuyển đổi (transducer): Các bộ chuyển đổi đo lường chuyển đổi các giá trị để cập ở trên sang những tín hiệu tương tự chuẩn.
- Bộ chuyển đổi ADC: Trước khi giá trị tương tự được CPU xử lý, chúng cần phải chuyển sang dạng số (mức phân giải). Điều này được thực hiện bằng bộ chuyển đổi ADC ở các module AI. Việc chuyển đổi tín hiệu tương tự sang hiệu số được thực hiện tuần tự, có nghĩa là tín hiệu được chuyển đổi lần lượt cho từng kênh AI.
- Kết quả bộ nhớ: Kết quả chuyển đổi được lưu trữ trong bộ nhớ – thanh ghi PIW (AIW), giá trị này chỉ mất đi khi có giá trị mới viết đề lên, và được cập nhật theo chu kỳ lấy mẫu của module.
- Ngõ ra tín hiệu tương tự và DAC: Bộ DAC chuyển giá trị trong thanh ghi PQW (AQW) sang các tín hiệu tương tự chuẩn để đưa qua cơ cấu chấp hành.
- Cơ cấu chấp hành cho tín hiệu tương tự: Tín hiệu xuất ra từ module AQ đã chuẩn hoá có thể nối trực tiếp với các cơ cấu chấp hành hoạt động bằng tín hiệu tương tự để điều khiển.
3. Lập trình xử lý ngõ vào tương tự (AI)
Có rất nhiều cảm biến đọc tín hiệu tương tự trong thực tế như: cảm biến nhiệt, áp suất, siêu âm (đo chiều cao/sâu), cảm biến màu, lưu lượng, v.v. trả về các tín hiệu tương tự chuẩn như:
- Tín hiệu dòng điện: 0 – 20 mA, 4 – 20 mA, v.v.
- Tín hiệu điện áp: ±10V, 0 – 10V, ±5V, 0 – 5V, v.v.
- Tín hiệu nhiệt độ trả về với RTD, TC.
- Tín hiệu cảm biến lực (loadcell) cho cân định lượng, v.v.
Khi tín hiệu tương tự trả về từ cảm biến qua module AI sẽ được bộ ADC chuyển sang dạng số Integer dưới dạng số hóa (mức) tín hiệu. Các giá trị số hoá này (mức) sẽ khó quan sát hơn các giá trị thực tế, và việc xử lý các phép toán của các số hoá (mức) có thể làm cho người dùng không quen và khó xử lý. Để đơn giản hóa vấn đề này chúng ta có thể vẽ biểu đồ biểu diễn cho số hóa trả về và giá trị thực tế như sau:
Hình 3. Mối quan hệ giữa mức tín hiệu và giá trị thực.
Những tham số trong biểu diễn mối quan hệ giữa mức tín hiệu và giá trị thực tế đưa vào module AI có ý nghĩa như sau:
- K1 là mức tín hiệu nhỏ nhất tương ứng với tín hiệu tương tự nhỏ nhất Lo_Lim đưa vào module AI.
- K2 là mức tín hiệu lớn nhất tương ứng với tín hiệu tương tự lớn nhất Hi_Lim đưa vào module AI.
3.1. Lập trình xử lý tín hiệu dòng/áp
- Lệnh NORM_X:
Hình 4. Lệnh NORM_X trong TIA Portal
Người dùng có thể sử dụng lệnh Normalize để chuyển đổi giá trị đầu vào năm trong giới hạn [Min, Max]với ngõ ra thay đổi tuyến tính trong giới hạn [0.0, 1.0].
- Công thức toán học của lệnh NORM_X:
OUT = \frac{{VALUE-MIN}}{{MAX-MIN}}
- Tham số của lệnh NORM_X
Tham số |
Khai báo |
Kiểu dữ liệu |
Vùng nhớ |
Miêu tả |
EN |
In |
Bool |
I, Q, M, D, L |
Ngõ vào cho phép hoạt động. |
ENO |
Out |
Bool |
Q, M, D, L |
Ngõ ra cho phép hoạt động. |
MIN(1) |
In |
Int, R |
I, Q, M, D, L hay |
Giới hạn dưới của giá trị. |
VALUE(1) |
In |
Int, R |
I, Q, M, D, L hay hằng số |
Giá trị đưa vào |
MAX(1) |
In |
Int, R |
I, Q, M, D, L hay |
Giới hạn trên của giá trị |
OUT |
Out |
R |
Q, M, D, L |
Kết quả trả về nằm trong giới hạn [0.0 , 1.0] |
Các thông số này giống nhau về kiểu dữ liệu do đó phải khai báo giống nhau. |
- Đồ thị biểu diễn hoạt động của lệnh NORM_X:
Hình 5. Đồ thị biểu diễn hoạt động của lệnh NORM_X
- Lệnh SCALE_X:
Hình 6. Lệnh SCALE_X trong TIA Portal.
Lệnh SCALE_X chuyển đổi giá trị ngõ vào VALUE sang một tầm giá trị mới phù hợp với yêu cầu sử dụng. Khi lệnh SCALE_X dược thực hiện thì giá trị VALUE được chuyển đổi nằm trong giới hạn [MIN, MAX] và được lưu trữ vào vùng nhớ OUT.
- Công thức toán học của lệnh SCALE_X:
OUT = \left[ {VALUE.\left( {MAX - MIN} \right)} \right] + MIN
- Tham số của lệnh SCALE_X:
Tham số |
Khai báo |
Kiểu dữ liệu |
Vùng nhớ |
Miêu tả |
EN |
In |
Bool |
I, Q, M, D, L |
Ngõ vào cho phép hoạt động. |
ENO |
Out |
Bool |
Q, M, D, L |
Ngõ ra cho phép hoạt động. |
MIN(1) |
In |
Int, R |
I, Q, M, D, L |
Giới hạn dưới của giá trị |
VALUE(1) |
In |
Int, R |
I, Q, M, D, L |
Giá trị đưa vào |
MAX(1) |
In |
Int, R |
I, Q, M, D, L |
Giới hạn trên của giá trị |
OUT |
Out |
R |
Q, M, D, L |
Kết quả trả về nằm trong giới hạn [MIN , MAX] |
Các thông số này giống nhau về kiểu dữ liệu do đó phải khai báo giống nhau. |
- Đồ thị biểu diễn hoạt động của lệnh SCALE_X
Hình 7. Đồ thị biểu diễn hoạt động của lệnh SCALE_X.
- Ứng dụng lệnh NORM_X và SCALE_X để đọc tín hiệu Analog:
Công thức xử lý tín hiệu Analog Input như sau:
OUT = \left[ {\frac{{FLOAT\left( {IN} \right)-K1}}{{K2-K1}} \cdot \left( {HI\_LIM-LO\_LIM} \right)} \right] + LO\_LIM
Và dựa theo công thức của lệnh NORM_X và SCALE_X thì chúng ta có thể kết hợp hai lệnh trên để tạo ra công thức xử lý tín hiệu tương tự cho AI như sau:
Ví dụ: Lập trình giám sát độ pH của hồ nuôi tôm. Tín hiệu đầu vào cung cấp từ 0V đến 10V tương đương với độ pH từ 0 đến 14. Sử dụng lệnh NORM_X và SCALE_X để lập trình và hiển thị tín hiệu.
Hướng dẫn:
- Bước 01: Khởi tạo Project mới với CPU 1214C.
- Bước 02: Chọn Module 6ES7 231-4HD32-0XB0.
Hình 8. Module Analog Input 6ES7 231-4HD32-0XB0.
Hình 9. Cấu hình cho Module Analog Input 6ES7 231-4HD32-0XB0.
- Bước 03: Tạo Tag giám sát biến trạng thái của các tín hiệu: PLC Tags → Add new tag table → chọn Tag table và đặt tên.
Hình 10. Tag giám sát biến trạng thái.
- Bước 04: Lập trình các chức năng điều khiển cơ bản cho hệ thống.
- Bước 05: Lập trình đọc độ pH của hồ nuôi tôm.
- Bước 06: Mô phỏng và kiểm chứng.
Khởi động hệ thống:
Để đầu ra “OUT HMI” của khối SCALE_X hiển thị độ pH mong muốn là 6, cần nhập giá trị đầu vào “INPUT” của khối NORM_X là 12000.
4. Lập trình xử lý tín hiệu ngõ ra tương tự (AQ)
Khi tín hiệu tương tự xuất ra module AQ cũng là giá trị số hóa (mức). Như vậy, nếu muốn xuất một giá trị 5.5V thì người dùng cần phải dùng tam thức để tìm ra giá trị số hóa tương ứng là 15206 rồi sử dụng lệnh Move để chuyển giá trị tới AQ.
Việc tính toán như vậy làm mất thời gian và bất tiện. Để đơn giản hóa vấn đề, chúng ta có thể vẽ biểu đồ biểu diễn cho số thực trả về số hóa để xuất ra AQ như sau:
Hình 15. Mối quan hệ giữa tín hiệu ngõ ra và giá trị thực muốn xuất ra AQ.
Từ đó, chúng ta có thể viết được phương trình hỗ trợ xử lý tín hiệu AQ giúp việc xử lý tín hiệu tương tự với các thuật toán lập trình đơn giản hơn:
AQW = \left[ {\frac{{VALUE - LO\_LIM}}{{HI\_LIM - LO\_LIM}} \cdot \left( {K2 - K1} \right)} \right] + K1
Dựa theo công thức của lệnh NORM X và SCALE_X thì chúng ta có thể kết hợp hai lệnh trên tạo ra công thức xử lý tín hiệu AQ như sau:
Lưu ý: Lệnh Scale_X sẽ thực hiện chuyển đổi số thực Real sang số Int trong giai đoạn này.