Các lệnh so sánh dữ liệu

Một phần của tài liệu Bai 1 cau truc va nguyen ly hoat dong cua PLC (Trang 25)

Lệnh so sánh dữ liệu (hình 1.23) yêu cầu PLC so sánh hai giá trị dữ liệu, có thể là so sánh giá trị digital đọc từ thiết bị nhập với giá trị thứ hai được chứa trong thanh ghi. Ví dụ, yêu cầu hoạt động nào đó phải được tiến hành khi tín hiệu vào từ bộ cảm biến nhiệt độ cung cấp giá trị digital thấp hơn giá trị cài đặt được lưu trữ trong thanh ghi dữ liệu của PLC. Thông thường, các PLC có thể thực hiện các so sánh nhỏ hơn (< hoặc LES), bằng (= hoặc EQU), nhỏ hơn hoặc bằng ( ≤; <= hoặc LEQ), lớn hơn (> hoặc GRT), lớn hơn hoặc bằng (≥; >= hoặc GEQ) và khác nhau (≠; <> hoặc NEQ). Các dấu ngoặc bên cạnh mỗi thuật ngữ cho biết cách viết tắt thông dụng trong lập trình.

Hình 1.23. Mạch so sánh.

Đối với so sánh dữ liệu, lệnh phổ biến gồm lệnh chuyển dữ liệu cần so sánh, địa chỉ nguồn, nơi có thể lấy dữ liệu so sánh (giá trị 1), và địa chỉ đích của dữ liệu làm chuẩn so sánh (giá trị 2). Các lệnh so sánh được đặt trong dấu ngoặc. Khi giá trị 1 so sánh với giá trị 2 và kết quả phù hợp với dạng so sánh được sử dụng, kết quả là đúng, tín hiệu ra 1 (T); nếu sự so sánh không đúng, kết quả là sai và có tín hiệu ra 0 (F). Ví dụ, sử dụng dạng so sánh nhỏ hơn hoặc bằng, nếu giá trị ở địa chỉ SMB28 nhỏ hơn hoặc bằng 50 (hình 1.24), kết quả là đúng và tín hiệu ra là 1 (T), bít Q0.0 nhận giá 1. Nếu không nhỏ hơn 50, kết quả của phép so sánh này là sai và tín hiệu ra là 0 (F), bít Q0.0 nhận giá 0. Tương tự như vậy cho phép so sánh giá trị ở địa chỉ SM28 và 150.

Hình 1.24. Ví dụ so sánh dữ liệu 1.6. Lệnh Timer

1.6.1. Định nghĩa và phân loại

Timer lμ bộ tạo thời gian trễ giữa tín hiệu vμo vμ tín hiệu ra nên trong điều khiển vẫn thường được gọi lμ khâu trễ.

Timer có baloại:

- Timer tạo thời gian trễ không có nhớ ký hiệu TON (On- Delay Timer).

- Timer tạo thời gian trễ có nhớ ký hiệu TONR (Retentive on – Delay Timer). - Timer duy trì không có nhớ TOF (OF-Delay Timer).

Cả TON - TONR cũng bắt đầu tạo thời gian trễ tín hiệu kể từ thời điểm có sườn lên ở tín hiệu đầu vμo, tức lμ khi tín hiệu đầu vμo chuyển trạng thái logic từ 0 lên 1, được gọi lμ thời điểm Timer được kích vμ không tính khoảng thòi gian khi đầu vμo có giá trị logic 0 vμo thời gian trễ tín hiệu được đặt trước.

Timer kiểu TOF bắt đầu đếm lùi thời gian khi có sườn xuống của tín hiệu đầu vào, tức là khi tín hiệu đầu vào chuyển từ trạng thái logic từ 1 về 0 (từ ON sang OFF). Khi giá trị tức thời của Timer bằng 0, T_bit của nó chuyển trạng thái.

Khi đầu vμo có giá trị logic bằng 0, TON tự động Reset còn TONR thì không.

Timer TON dùng tạo thời gian trễ trong một khoảng thời gian (miền lên thông), còn với TONR thời gian trễ sẽ được tạo ra trong nhiều khoảng thời gian khác nhau.

Cả TON vμ TONR gồm ba loại với ba độ phân giải khác nhau lμ 1ms, 10ms, 100ms. Thời giantrễ tạo ra lμ tích của độ phân giải của bộ Timer đượcchọn vμ giá trị đặt trước cho Timer(xem bảng dưới).

Chus ý: Số liệu trong bảng là của PLC S7 200 của Siemence

1.6.2. Tính chất của Timer

+) Các bộ Timer được điều khiển bởi một cổng vμo vμ giá trị đếm tức thời. Giá

trị đếm tức thời của Timer được nhớ trong thanh ghi 2 byte lμ (T_word) của Timer, xác định khoảng thời gian trễ kể từ khi Timer kích. Giá trị đặt trước của Timer lμ PT.

Giá trị đếm tức thời của thanh ghi T_word thường xuyên được so sánh với giá trị đặt trước của Timer.

+) Mỗi bộ Timer ngoμi thanh ghi 2 byte T_word lưu giá trị đếm tức thời, còn có một bit ký hiệu T_bit chỉ thị trạng thái logic đầu ra. Giá trị logic của bit nμy phụ thuộc vμo kết quả so sánh giữa giá trị đếm tức thời vμ đặt trước.

+) Trong khoảng thời gian tín hiệu đầu vμo có giá trị logic 1, giá trị đếm tức thời trong T_word luôn cập nhập vμ thay đổi tăng dần cho đến khi nó đạt giá trị cực đại. Khi giá trị đếm tức thời (T_word) lớn hơn hay bằng (>=) giá trị đặt trước (PT) thì T_bit có giá trị logic 1.

1.6.3. Cú pháp khai báo sử dụng Timer.

b) Trong STL

Đối với TON, TONR trong STL khai báo sử dụng Timer của S7-200. Lệnh khai báo sử dụng Timer có điều kiện. Tại thời điểm khai báo tín hiệu đầu vμo có giátrị logic của bit đầu tiên trong ngăn xếp.

Chú ý:

Khi dùng Timer kiểu TONR giá trị đếm tức thời lưu lại vμ không bị thay đổi trong khoảng thời gian khi tín hiệu đầu vμo có giá trị logic 0. Giá trị T_bit không được nhớ mμ hoμn toμn phụ thuộc vμo kết quả so sánh giữagiá trị đếm tức thời vμ giá trị đặttrước.

Các Timer được đánh số từ 0 ữ 63 với CPU212 hay từ 0 ữ127 (CPU 214). MộtTimer đặt Txxx trong đó Txxx lμ số hiệu của Timer. Txxx đồng thời lμ địa chỉ hìnhthức T_word, T_ bit của Timer đó. Tuy chúng có cùng địa chỉ hình thức, song T_word, T_bit phân biệt nhờ kiểu lệnh sử dụng với Txxx. Khi dùng lệnh lμm việc với từ, Txxx được hiểu lμ địa chỉ của T_word, ngược lại khi sử dụng lệnh lμm việc với tiếp điểm, Txxx được hiểu lμ địa chỉ T_bit.

Một Timer đang lμm việc có thể được đưavề trạng thái khởi động ban đầu. Công việc đưamột Timer về trạng thái ban đầu gọi lμ Reset Timer đó.

Khi Reset một bộ Timer, T_word vμ T_bit của nó đồng thời được xoá vμ có giá trị bằng 0, nên giá trị đếm tức thời đặt về 0 vμ tín hiệu đầu ta cũng có trạng thái logic bằng 0. Có thể Reset bất cứ bộ Timer nμo của S7-200 bằng lệnh Reset. Chứng tỏ R choT_bit của một Timer. Timer đó sẽ được đưa về trạng thái ban đầu vμ có hai phương pháp Reset một Timer kiểu TON lμ xoá tín hiệu đầu vμo hoặc dùng R.

- Cập nhập Timer có độ phân giải 1ms cho phép PLC cập nhập vμ thay đổi giá trị đếm tức thời T_word mỗi 1ms một lần. Timer có độ phân giải thấp nμy có khả năng điều khiển chính xác một thao tác việc cập nhập T_word hoμn toμn tự động. Bộ Timer1ms không phụ thuộc vμo vòng quét của bộ điều khiển vμ bộ chương trình đang. Giá trị đếm tức thời T_bit của bộ Timer nμy có thể được cập nhập bất cứ thời điểm nμo trongvòng quét vμ cập nhập nhiều lần trong một vòng quét nếu thời gian vòng quét lớn hơn 1ms.

- Thực hiện lệnh Reset với một Timer có độ phân giải 1ms đang ở trạng thái lμm việc tức thời lμ đưaTimer đó về trạng thái ban đầu, giá trị đếm tức thời của Timer được về 0 vμ T-bit nhận giá trị logic bằng 0. (adsbygoogle = window.adsbygoogle || []).push({});

- Cập nhập Timer có độ phân giải 10ms: khi đã được kích việc cập nhập T_word vμ T_bit để thay đổi giá trị đếm tức thời vμ trạng thái logic đầu ra của mộtTimer nμy không phụ thuộc vμo chương trình vμ cũng hoμn toμn tự động, mỗi vòngquét một lần vμ tại đầu vòng quét. Thực hiện lệnh Reset với một Timer đang ở trạng thái lμm việc lμ đưaTimer về ban đầu vμ xoá T_word, T_bit của Timer.

Do việc cập nhập T_word của Timer chỉ đượcthực hiện tự động mỗi vòng quétmột lần nên thời điểm thay đổi giá trị đếm tức thời vμ logic T_bit của Timer có thể bị trôi trong khoảng 10ms.

- Cập nhập Timer có độ phân giải 100ms: đa phần các bộ Timer của S7-200 lμ có độ phân giải 100ms vμ được tính tại đầu vòng quét vμ thời gian để tính sẽ lμ khoảng thời gian đầu vòng quét trước đó.

Việc cập nhập để thay đổi giá trị đếm tức thời của Timer chỉ được tiến hμnh ngay tại thời điểm có lệnh khai báo cho Timer trong chương trình. Nên quá trình cập nhật giá trị đếm tức thời không phải lμ quá trình tự động vμ không nhất thiết phải thực hiện một lần trong mỗi vòng quét ngay cả khi Timer đã được kích. Trong trường hợp lệnh Timer 100ms được khai báo nhiều lần trong một vòng quét thì xảy ra hiện tượng giá trị lưutrữ bị cộng nhiều lần với giá trị đếm tức thời, nên sử dụng lệnh khai báo Timer 100ms chính xác một lần trong một vòng quét.

Hiệu quả cập nhật giátrị tức thời Timer 1ms, 10ms, 100ms do độ phân giải khác nhau được thực hiện tại các thời điểm khác nhau phụ thuộc vμo việc sử dụng các Timer đó.

1.5.4. Ví dụ sử dụng Timer

Khoảng thời gian trễ đặt trước: là = 10* 100 = 1000ms = 1s.

b) KiểuTimer TOF:

Khoảng thời gian trễ đặt trước là: 100*10 = 1000ms = 1s.

Khoảng thời gian đặt trước là: 100*10=1000ms = 1s.

Ví dụ:

Viết chương trình điều khiển một đèn theo chu trình điều khiển sau: Khi nhấn Start, đèn sáng 5s, sau đó đèn tắt 5s vμ lặp lại cho đến khi nhấn Stop.

Bμi lμm:

1.7. Lệnh Counter

1.7.1. Phân loại Counter

Counter lμ bộ đếm thực hiện chức năng đếm sườn xung. Trong PLC các bộ đếm được chia ra lμm ba loại lμ bộ đếm tiến (CTU), bộ đếm lùi (CTD) vμ bộ đếm tiến/lùi (CTUD). Counter dùng để đếm số lượng sản phẩm hoặc các hoạt động có tính chất lặp.

a) Bộ đếm tiến CTU (Counter Up)

Thực hiện đếm sườn xung của tín hiệu logic đầu vμo. Số sườn xung được ghi vμo thanh ghi 2 byte của bộ đếm gọi lμ thanh ghi C_word.

Nội dung của C_word lμ giá trị đếm tức thời của bộ đếm luôn được so sánh với giá trị đặt trước của bộ đếm ký hiệu: PV (Preset Value). Khi giá trị đếm tức thời bằnghoặc lớn hơn giá trị đặt trước nμy thì bộ đếm báo ra ngoμi bằng cách đặt giá trị logic 1 vμo một bit trạng thái của nó gọi lμ C_bit. Nếu giá trị đếm tức thời nhỏ hơn giá trị đặt trước thì C_bit có giá trị bằng 0.

Khác với Timer, CTU có chân nối với tín hiệu điều khiển xoá để thực hiện việc đặt lại chế độ khởi phát ban đầu (Reset) cho bộ đếm (trong LAD) hay được quy định lμ trạng thái logic của bit đầu tiên của ngăn xếp trong STL. Bộ đếm đượcReset khi tín hiệu xóa có mức logic lμ 1 hoặc lệnh Reset thực hiện với C_bit. Khi bộ đếm được Reset cả C_bit, C_word đều nhận giá trị 0.

1.7.2. Cú pháp khai báo sử dụng Counter

b) Bộ đếm tiến/lùi (Counter Up/Down: CTUD)

Thực hiện đếm tiến khi gặp sườn xung của cổng vμo đếm tiến (chân CU) trong LAD hoặc bit thứ 3 của ngăn xếp trong STL vμ đếm lùi khi gặp sườn xung của cổng vμo đếm lùi (chân CD) trong LAD hoặc bit thứ hai của ngăn xếp trong STL.

Bộ đếm CTUD cũng được đưa về trạng thái khởi phát ban đầu bằng hai cách:

+ Khi đầu vμo logic của chân xoá ký hiệu R (Reset) trong LAD hoặc bit thứ nhất của ngăn xếp trong STL có giá trị logic lμ 1.

+ Bằng lệnh Reset với C-bit của bộ đếm.

CTUD có giá trị đếm tức thời bằng giá trị đang đếm vμ lưu trong thanh ghi 2byte C_word. Giá trị đếm tức thời luôn so sánh với giá trị đặt trước PV. Nếu C_word lớn hơn hoặc bằng PV thì C_bit có giá trị logic bằng 1 ngược lại thì C_bit bằng 0.

Ví dụ:

Thí dụ 1: Sử dụng bộ đếm CTUD trong LAD vμ STL:

Thí dụ 2: (adsbygoogle = window.adsbygoogle || []).push({});

1.7.3. Thí dụ sử dụng counter

Viết chương trình điều khiển một đèn theo chu trình điều khiển sau: Khi nhấn Start, Đèn sáng 5s, sau đó đèn tắt 5s vμ lặp lại cho đến khi đủ 5 lần thì tự tắt mμ khôngphải nhấn

Bμi lμm:

Đặt biến hình thức:Start: I0.0 (NO), Stop: I0.1 (NC), Đèn: Q0.0

1.8. Các lệnh di chuyển dữ liệu

Các lệnh di chuyển dữ liệu tuân thủ khả năng truy cập địa chỉ vùng nhớ của PLC. Có các dạng di chuyển dữ liệu sau đây:

- Di chuyển dữ liệukiểubyte(8 bit).

- Di chuyển dữ liệu kiểu word(16 bit).

- Di chuyển dữ liệu kiểu double word(32 bit).

- Di chuyển dữ liệu kiểu real(32 bit).

Trong một số trường hợp, người lập trình sử dụng lệnh di chuyển dữ liệu dữ liệu cho trước vào vùng nhớ nào đó để tiện lưu giữ và sử dụng.

Lệnh xử lý dữ liệu thường gồm lệnh xử lý - dữ liệu, địa chỉ nguồn (S), nơi lấy dữ liệu; và địa chỉ đích (D), nơi chuyển dữ liệu đến. Hình 1.21 minh họa dạng lệnh phổ biến của hãng siemence.

Hình 1.21. Khai báo lệnh di chuyển dữ liệu

Sau đây là ví dụ về các loại lệnh xử lý dữ liệu được dùng với PLC.

Lệnh được sử dụng phổ biến để di chuyển dữ liệu là MOV. Lệnh này sao chép giá trị từ địa chỉ này sang địa chỉ khác. Hình 1.22 minh họa hãng Siemens di chuyển dữ liệu như hai lệnh riêng biệt, tải dữ liệu từ nguồn vào bộ tích lũy, rồi chuyển dữ liệu từ bộ tích lũy đến đích.

Các chuyển giao dữ liệu có thể di chuyển giá trị cài đặt trước đến đồng hồ dính giờ hoặc bộ đếm, thời gian hoặc giá trị đem đến thanh ghi nào đó để lưu trữ, dữ liệu từ ngõ vào đến thanh ghi hoặc từ thanh ghi đến ngõ ra. Hình 1.22 minh họa quá trình di chuyển khối dữ liệu ở địa chỉ VB20 đến địa chỉ VB100 khi bít ngõ vào I2.1 chuyển từ 0 sang 1. ở đây cùng một lúc di chuyển một dãy 4 khối dữ liệu lưu trữ trong 4 byte: VB20, VB21, VB22, VB23 đến dãy 4 byte: V100, VB101, VB102, V103.

Hình 1.22. Khai báo lệnh di chuyển dữ liệu 1.9. Các phép tính số học

1.9.1. Khái niệm và phân loại phép tính số học

Một số PLC được trang bị chỉ để thực hiện các phép toán số học cộng và trừ, một số khác có thể thực hiện bốn phép toán cơ bản cộng, trừ, nhân và chia. Các PLC đặc biệt có thể thực hiện các phép toán số học và các hàm, chẳng hạn hàm mũ. Các phép toán cộng và trừ được sử dụng để thay đổi giá trị dữ liệu được giữ trong các vùng nhớ (thanh ghi) dữ liệu. Ví dụ, để điều chỉnh trị số tín hiệu vào của bộ cảm biến hoặc có thể thu được giá trị nào đó bằng cách trừ hai giá trị của bộ cảm biến hoặc thay đổi các giá trị được xác lập trước của đồng hồ định giờ và bộ đếm. Phép nhân có thể được sử dụng để tăng tín hiệu vào lên nhiều lần trước khi cộng hoặc trừ với tín hiệu khác.

Các PLCđược lập trình để thực hiện các phép tính xác định, sau đó ghi kết quả vào địa chỉ đích theo yêu cầu. Khi lệnh tính toán ởtrên màn hình lập trình, trước tiên cần nhập đích đến, rồi đến biểu thức toán học. Hình 1.25 minh họa các dạng lệnh tính toán số học sau: cộng (ADD), trừ (SUB), nhân (MUL) và chia (DIV). Các phép tính thực hiện với các loại dữ liệu sau: số nguyên 16 bit - Integer (I), số nguyên 32 bit - (DI) và số thực 32 bit (R).

Một số PLC có thể thực hiện phép tính khai căn bậc hai SQRT của số thực 32 bit, kết quả cho số thực 32 bit. Cú pháp như sau:

1.9.2. Khai báo phép tính trong chương trình

b) Phép cộng và trừ số nguyên 32 bit

d) Phép nhân và chia số nguyên 32 bit

1.9.3. Thí dụ về phép tính số học

a) Với dữ liệu là số nguyên 16 bit - integer(hình 1.26):

Hình 1.26. Thí dụ về các phép toán số học 1.10.

1.10 Lập trình PLC

Sự khác nhau chủ yếu giữa PLC và các bộ điều khiển dây cứng (điều khiển bán dẫn hoặc rơ-le) là kỹ thuật đưa chương trình điều khiển vào bộ điều khiển. Trong điều khiển dây

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Bai 1 cau truc va nguyen ly hoat dong cua PLC (Trang 25)