5. BỐ CỤC ĐỒ ÁN
2.2.3. Hàm chức năng – FUNCTION
Functions (FCs) là các khối mã không cần bộ nhớ. Dữ liệu của các biến tạm thời bị mất sau khi FC đƣợc xử lý. Các khối dữ liệu toàn cầu có thể đƣợc sử dụng để lƣu trữ dữ liệu FC.
Functions có thể đƣợc sử dụng với mục đích: - Trả lại giá trị cho hàm chức năng đƣợc gọi.
- Thực hiện công nghệ chức năng, ví dụ: Điều khiển riêng với các hoạt động nhị phân.
- Ngoài ra, FC có thể đƣợc gọi nhiều lần tại các thời điểm khác nhau trong một chƣơng trình. Điều này tạo điều kiện cho lập trình chức năng lập đi lặp lại phức tạp.
FB (function block): Đối với mỗi lần gọi, FB cần một khu vực nhớ. Khi một FB đƣợc gọi, một Data Block (DB) đƣợc gán với instance DB. Dữ liệu trong Instance DB sau đó truy cập vào các biến của FB. Các khu vực bộ nhớ khác nhau đã đƣợc gán cho một FB nếu nó đƣợc gọi ra nhiều lần.
DB (data block): DB thƣờng để cung cấp bộ nhớ cho các biến dữ liệu . Có hai loại của khối dữ liệu DB: Global DBs nơi mà tất cả các OB, FB và FC có thể đọc đƣợc dữ liệu lƣu trữ, hoặc có thể tự mình ghi dữ liệu vào DB, và instance DB đƣợc gán cho một FB nhất định.
26 2.3. TẬP LỆNH LẬP TRÌNH 2.3.1. Bit logic Bảng 2. 3. Tập lệnh Bit logic Tên Hình ảnh Chức năng Tiếp điểm thƣờng hở
Tiếp điểm thƣờng hở sẽ đóng khi giá trị địa chỉ IN bằng 1 Toán hạng IN: I, Q, M, L, D
Tiếp điểm thƣờng
đóng
Tiếp điểm thƣờng đóng sẽ hở khi giá trị địa chỉ IN bằng 1 Toán hạng IN: I, Q, M, L, D
Lệnh OUT
Giá trị của bit địa chỉ là OUT sẽ bằng 1 khi đầu vào của lệnh này bằng 1 và ngƣợc lại
Toán hạng OUT: Q, M, L, D
Lệnh OUT đảo
Giá trị của bit có địa chỉ là OUT sẽ bằng 1 khi đầu vào của lệnh này bằng 0 và ngƣợc lại.
Toán hạng OUT: Q, M, L, D
Lệnh Set
Giá trị của bit có địa chỉ là OUT bằng 1 khi đầu vào bằng 1. Khi đầu vào bằng 0 thì bit vẫn không đổi.
Toán hạng OUT: Q, M, L, D
Lệnh Reset
Giá trị của bit có địa chỉ là OUT bằng 0 khi đầu vào này bằng 1. Khi đầu vào bằng 0 thì các bit này vẫn không đổi.
Toán hạng OUT: Q, M, L, D
Lệnh Set nhiều bit
Giá trị của các bit có địa chỉ đầu tiên là OUT sẽ bằng 1 khi đầu vào bằng 1. Khi đầu vào bằng 0 thì các bit này vẫn không đổi. Trong đó số bit là giá trị của n, n là hằng số.
Toán hạng OUT: Q, M, L, D
Lệnh Reset nhiều bit
Giá trị của các bit có địa chỉ đầu tiên là OUT sẽ bằng 0 khi đầu vào của lệnh này bằng 1.Khi đầu vào bằng 0 thì các bit
này vẫn không đổi. Trong đó số bit là giá trị của n Toán hạng OUT: Q, M, L, D
27
2.3.2. Sử dụng bộ Timer
Sử dụng lệnh Timer để tạo một chƣơng trình trễ định thời. Số lƣợng của Timer phụ thuộc vào ngƣời sử dụng và số lƣợng vùng nhớ của CPU. Mỗi timer sử dụng 16 byte IEC_Timer dữ liệu kiểu cấu trúc DB. TIA Portal tự động tạo khối DB khi lấy khối Timer [1].
Kích thƣớc và tầm của kiểu dữ liệu Time là 32 bit, lƣu trữ nhƣ là dữ liệu Dint : T#-14d_20h_31m_23s_648ms đến T#24d_20h_31m_23s_647ms hay là - 2.147.483.648 ms đến 2.147.483.647 ms. Bảng 2. 4. Các tập lệnh Timer Tên Hình ảnh Chức năng Timer tạo xung - TP
Thay đổi PT, IN không ảnh hƣởng khi Timer đang chạy. Khi đầu vào IN “TRUE” vào timer sẽ tạo ra một xung có
độ rộng bằng thời gian đặt PT. Timer trễ sƣờn lên có nhớ - Timer TONR
Thay đổi PT không ảnh hƣởng khi Timer đang vận hành, chỉ ảnh hƣởng khi timer đếm lại.
Khi ngõ vào IN “FALSE” khi vận hành thì timer sẽ dừng nhƣng không đặt lại bộ định thì. Khi chân IN “TRUE” trở
lại thì Timer bắt đầu tính thời gian đã đặt PT. Timer trễ
sƣờn xuống có nhớ - TON
Thay đổi PT không ảnh hƣởng khi Timer đang vận hành, chỉ ảnh hƣởng khi timer đếm lại.
Khi ngõ vào IN chuyển sang “FALSE” khi vận hành thì timer sẽ dừng sau thời gian đặt. Khi chân IN “TRUE” trở
lại thì Timer hoạt động trở lại. Timer có
nhớ On Delay - TONR
Thay đổi PT không có ảnh hƣởng trong khi bộ định thì vận hành, nhƣng có ảnh hƣởng khi định thì khôi phục lại. Thay đổi IN sang “FALSE”, trong khi bộ định thì vận hành, sẽ dừng bộ định thì nhƣng không đặt lại bộ định thì. Thay đổi IN trở
lại sang “TRUE” sẽ làm bộ định thì bắt đầu tính toán thời gian từ giá trị thời gian đƣợc tích lũy.
28
2.3.3. Sử dụng bộ Counter
Lệnh Counter đƣợc dùng để đếm các sự kiện ở ngoài hay các sự kiện quá trình ở trong PLC. Mỗi Counter sử dụng cấu trúc lƣu trữ của khối dữ liệu DB để làm dữ liệu của Counter. TIA Portal tự động tạo khối DB khi lấy lệnh.
Tầm giá trị đếm phụ thuộc vào kiểu dữ liệu mà chúng ta chọn lựa. Nếu giá trị đếm là một số Interger không dấu, có thể đếm xuống tới 0 hoặc đếm lên tới tầm giới hạn. Nếu giá trị đếm là một số interder có dấu, có thể đếm tới giá trị âm giới hạn hoặc đếm lên tới một số dƣơng giới hạn.
Bảng 2. 5. Các lệnh Counter
Tên Hình ảnh Chức năng Counter
đếm lên - CTU
Giá trị bộ đếm CV đƣợc tăng lên 1 khi tín hiệu ngõ vào CU chuyên từ 0 lên 1. Ngõ ra Q đƣợc tác động lên 1 khi CV>=PV. Nếu trạng thái R = Reset đƣợc tác động thì bộ
đếm CV = 0. Counter
đếm xuống –
CTD
Giá trị bộ đếm đƣợc giảm 1 khi tín hiệu ngõ vào CD chuyển từ 0 lên 1. Ngõ ra Q đƣợc tác động lên 1 khi CV <=0. Nếu trạng thái LOAD đƣợc tác động thì CV = PV.
Counter đếm lên xuống – CTUD
Giá trị bộ đếm CV đƣợc tăng lên 1 khi tín hiệu ngõ vào CU chuyển từ 0 lên 1. Ngõ ra QU đƣợc tác động lên 1 khi
CV >=PV. Nếu trạng thái R = Reset đƣợc tác động thì bộ đếm CV = 0.
Giá trị bộ đếm CV đƣợc giảm 1 khi tín hiệu ngõ vào CD chuyển từ 0 lên 1. Ngõ ra QD đƣợc tác động lên 1 khi CV
29 2.3.4. So sánh Bảng 2. 6. Các lệnh so sánh Tên Hình ảnh Chức năng Lệnh so sánh
Lệnh so sánh dùng để so sánh hai giá trị IN1 và IN2 bao gồm IN1 = IN2, IN1 >= IN2, IN1 <= IN2, IN1 < IN2, IN1
> IN2 hoặc IN1 <> IN2
So sánh 2 kiểu dữ liệu giống nhau, nếu lệnh so sánh thỏa thì ngõ ra sẽ là mức 1 = TRUE và ngƣợc lại
Kiểu dữ liệu so sánh là: SInt, Int, Dint, USInt, UDInt, Real, LReal, String, Char, Time, DTL, Constant.
Lệnh trong khoảng In
– range
Tham số: MIN, VAL, MAX
Kiểu dữ liệu so sánh : SInt, Int, Dint, USInt, UInt, UDInt, Real, LReal, Constant. So sánh 2 kiểu dữ liệu giống nhau, nếu MIN<=VAL<=MAX thỏa thì lên mức cao và ngƣợc lại. Lệnh
ngoài khoảng out-of-
range
Tham số: MIN, VAL, MAX
Kiểu dữ liệu so sánh: SInt, Int, Dint, USInt, UInt, UDInt, Real, LReal, Constant
So sánh 2 kiểu dữ liệu giống nhau, nếu so sánh MIN > VAL hoặc MAX < VAL thỏa thì tác động mức cao và ngƣợc lại.
2.3.5. Toán học Bảng 2. 7. Các lệnh toán học Tên Hình ảnh Chức năng Lệnh tính toán
Thực hiện phép toán từ các giá trị ngõ vào IN1, IN2, IN(n) theo công thức OUT=…(+,-,*,/) rồi xuất kết
quả ra ngõ ra OUT.
Các thông số ngõ vào phải cùng định dạng. Lệnh cộng ADD: OUT = IN1 + IN2
Lệnh trừ SUB: OUT = IN1 – IN2 Lệnh nhân MUL: OUT = IN1*IN2
30 Lệnh cộng, trừ, nhân, chia
Tham số IN1, IN2 phải cùng kiểu dữ liệu: SInt, Int, Dint, USInt, UInt, UDInt, Real, LReal, Constant Tham số OUT có kiểu dữ liệu: SInt, Int, Dint, USInt,
UInt, UDInt, Real, LReal.
Tham số ENO = 1 nếu không có lỗi xảy ra trong quá trình thực thi. Ngƣợc lại ENO = 0 khi có lỗi, một số
lỗi xảy ra khi thực hiện lệnh này:
2.3.6. Di chuyển MOVE
Bảng 2. 8. Các lệnh di chuyển MOVE
Tên Hình ảnh Chức năng
Lệnh MOVE
Lệnh Move di chuyển nội dung ngõ vào IN đến ngõ ra OUT mà không làm thay đổi giá trị ngõ IN
Tham số: EN: cho phép ngõ vào ENO: cho phép ngõ ra IN: nguồn giá trị đến OUT1: Nơi chuyển đến
Lệnh Move_BLK sao chép các nội dung của một vùng nhớ IN đến một bộ nhớ xác định khác. Số lƣợng các giá trị đƣợc sao chép đƣợc quy định trong COUNT. Hoạt động sao chép
theo hƣớng tăng dần các địa chỉ Tham số:
EN: cho phép ngõ vào ENO: cho phép ngõ ra IN: nguồn giá trị đến COUNT: số giá trị sao chép
31
2.3.7. Các lệnh định tỷ lệ và chuẩn hóa
Hình 2. 28. Lệnh định tỷ lệ
Lệnh SCALE_X định tỷ lệ của thông số số thực đƣợc chuẩn hóa VALUE, với (0,0 <= VALUE <= 1,0) thành kiểu dữ liệu và phạm vi giá trị đƣợc xác định bởi các thông số MIN và MAX: OUT = VALUE (MAX – MIN) + MIN.
Đối với lệnh SCALE_X, các thông số MIN, MAX và OUT phải là kiểu dữ liệu giống nhau.
Lệnh NORM_X làm chuẩn hóa thông số VALUE bên trong phạm vi giá trị đƣợc xác định bởi các thông số MIN và MAX: OUT = (VALUE – MIN) / (MAX – MIN) với (0,0 <= OUT <= 1,0).
Đối với lệnh NORM_X, các thông số MIN, VALUE và MAX phải là kiểu dữ liệu giống nhau.
Ta nhấp vào phía dƣới tên hộp và chọn một kiểu dữ liệu từ trình đơn thả xuống. Bảng 2. 9. Bảng dữ liệu nhập hàm SCALE_X và NORM_X.
Thông số Kiểu dữ liệu Miêu tả
MIN SInt, Int, DInt, USInt, UInt, UDInt, Real Giá trị cực tiểu ngõ vào của phạm vi
VALUE
SCALE_X: Real
NORM_X: SInt, Int, DInt, USInt, UInt, UDInt, Real
Giá trị ngõ vào để định tỷ lệ hay chuẩn hóa MAX SInt, Int, DInt, USInt, UInt, UDInt, Real Giá trị cực đại ngõ vào của
phạm vi OUT
SCALE_X: Real
NORM_X: SInt, Int, DInt, USInt, UInt, UDInt, Real
Giá trị ngõ ra đã đƣợc định tỷ lệ hay đƣợc chuẩn hóa
32
2.3.8. Các lệnh đếm thời gian
Ta sử dụng các lệnh đếm thời gian để thiết lập và đọc đồng hồ hệ thống PLC. Kiểu dữ liệu DTL đƣợc sử dụng để mang lại các giá trị ngày và giờ.
Bảng 2. 10. Kiểu dữ liệu DTL
Cấu trúc DTL Kích thƣớc Phạm vi hợp lệ
Năm: UInt 16 bit 1970 đến 2554
Tháng: USInt 8 bit 1 đến 12
Ngày: USInt 8 bit 1 đến 31
Ngày trong tuần: USInt 8 bit 1 = Chủ nhật đến 7 = Thứ bảy
Giờ: USInt 8 bit 0 đến 23
Phút: USInt 8 bit 0 đến 59
Giây: USInt 8 bit 0 đến 59
Nano giây: UDInt 32 bit 0 đến 999.999.999
Lệnh WR_SYS_T (Write System Time) thiết lập đồng hồ thời gian trong ngày của PLC với một giá trị DTL tại thông số IN. Giá trị thời gian này không gồm múi giờ địa phƣơng hay độ dịch chỉnh thời gia tiết kiệm ánh sáng ngày.
Hình 2. 29. Lệnh Write System Time
Bảng 2. 11. Thông số của lệnh Write System Time
Thông số Kiểu thông số Kiểu dữ liệu Miêu tả
IN IN DTL
Thời gian trong ngày để thiết lập trong đồng hồ hệ thống PLC
33
Lệnh RD_SYS_T (Read System Time) đọc thời gian hệ thống hiện thời từ PLC. Giá trị này không bao gồm múi giờ địa phƣơng hay độ dịch chỉnh thời gian tiết kiệm ánh sáng ngày.
Hình 2. 30. Lệnh Read System Time. Bảng 2. 12. Thông số của lệnh Read System Time
Thông số Kiểu thông số Kiểu dữ liệu Miêu tả
RET_VAL OUT Int Mã điều kiện thực thi
OUT OUT DTL Thời gian hệ thống PLC hiện thời