i. Giao diện điều khiển và giám sát trạm Lưu kho sản phẩm
1.3.5. Phép toán trong S7-
• Phép toán AND
Phép toán AND được sử dụng khi có yêu cầu điều khiển là trạng thái của hai hay nhiều tín hiệu đồng thời xảy ra thì sẽ thực hiện một nhiệm vụ điều khiển nào đó.
Hình 2.36: Phép toán AND được biểu diễn ở 3 dạng ngôn ngữ
• Phép toán OR
Phép toán OR sẽ được sử dụng khi trạng thái của một trong hai bit (hoặc nhiều) tín hiệu thỏa mãn điều kiện của yêu cầu điều khiển thì sẽ được thực hiện một nhiệm vụ điều khiển nào đó.
Hình 2.37: Phép toán OR
• Phép toán XOR
Phép toán XOR được sử dụng khi có hai tín hiệu mà nếu chúng có cùng trạng thái thì ngõ ra sẽ xuống mức 0 còn nếu hai tín hiệu này khác trạng thái thì ngõ ra sẽ lên mức 1.
Hình 2.38: Phép toán XOR
• TIMER: TON, TOF, TONR
Các thông số chính: IN: BOOL
PT: INT, là giá trị đặt cho TIMER (VW, IW, QW, MW, SW, SMW, LW, AIW, T, C, AC, CONST, *VD, *LD, *AC).
Txxx: là số hiệu TIMER.
Trong S7 – 200 có tất cả là 256 TIMER, kí hiệu từ T0 – T255. Các số hiệu TIMER trong S7 – 200 như sau:
TIMER Type Resolution Maximum Value TIMER Number
1 ms 32.767 s T0, T64
TON, TOF 100 ms 3276.7 s T37 – T63, T101 – T255
• TON:
Hình 2.39: Phép toán TON ở ba dạng ngôn ngử
Khi ngõ vào I0.0 = 1 T37 được kích, nếu sau 100×100ms = 10s mà I0.0 vẫn dữ trạng thái thì Bit T37 sẽ lên 1 (khi đó Q0.0 = 1). Nếu I0.0 =1 không đủ thời gian 10s thì Bit T37 sẽ không lên 1.
•
Hình 2.41: Phép toán TOF ở 3 dạng ngôn ngữ
Khi ngõ vào I0.0 = 1 thì bit T33 = 1 (ngõ ra Q0.0 = 1 ). Khi I0.0 = 0, thời gian T33 bắt đầu tính, đủ thời gian 1s = 100×10ms thì bit T33 = 0 (Q0.0 =0).
Nếu I0.0 = 0 trong khoảng thời gian chưa đủ 1s đã lên 1 lại thì bit T33 vẫn giữ nguyên trạng thái.
Hình 2.42: Giản đồ thời gian của TOF
• TONR:
Hình 2.43: Phép toán TONR
Ngõ vòa I0.0 có tác dụng kích thời gian cho TONR, khi I0.0 = 1 thời gian TONR đủ tính, khi I0.0 = 0 thời gian không bị Reset về 0. Khi đủ thời gian Bit sẽ lên 1.
Thời gian TONR bị Reset khi có tín hiệu Reset Timer (tín hiệu từ I0.1)
• CTU:
Cxxx: là số hiệu COUTER (0 – 255)
CU: Kích đếm lên BOOL R: Reset BOOL PV: Giá trị đặt cho COUNTER INT
PV: VW, IW, QW, MW, SMW, LW, AIW, AC, T, C, CONSTANT, *VD, *AC, *LD, SW.
Hình 2.45: Phép toán COUNTER viết ở 3 dạng ngôn ngữ
Mỗi lần có một sườn cạnh lên ở chân CU, giá trị bộ đếm (1 WORD) được tăng lên 1. Khi giá trih hiện tại lớn hơn hoặc bằng giá trị đặt PV, ngõ ra sẽ được bật lên ON. Khi chân Reset được kích (sườn lên) giá trị hiện tại bộ đếm và ngõ ra được trả về 0. Bộ đếm ngừng đếm kkhi giá trị bộ đếm đạt đến trị tối đa là 32767 (216 – 1 ).
Hình 2.46: Giản đồ xung của CTU
• CTD:
Cxxx: là số hiệu COUTER (0 – 255)
CD: Kích đếm xuống BOOL LD: Load BOOL PV: Giá trị đặt cho COUNTER INT
PV: VW, IW, QW, MW, SMW, LW, AIW, AC, T, C, CONSTANT, *VD, *AC, *LD, SW.
Mỗi lần có một sườn cạnh lên ở chân CD, giá trị bộ đếm (1 WORD) được giảm xuống 1. Khi giá trị hiện tại của bộ đếm bằng 0, ngõ ra được bật lên ON và bộ đếm sẽ ngưng đếm.
Hình 2.48: Giản đồ thời gian của CTD
• CTUD:
Cxxx: là số hiệu COUTER (0 – 255) CU: Kích đếm lên
CD: Kích đếm xuống BOOL R: Reset BOOL PV: Giá trị đặt cho COUNTER INT
PV: VW, IW, QW, MW, SMW, LW, AIW, AC, T, C, CONSTANT, *VD, *AC, *LD, SW.
Hình 2.49: Phép toán CTUD
Mỗi lần có một sườn cạnh lên ở chân CU, giá trị bộ đếm (1 Word) được tăng lên “1”. Mỗi lần có một sườn cạnh lên ở chân CD, giá trị bộ đếm được giảm xuống 1. Khi giá trị hiện tại lớn hơn hoặc bằng giá trị đặt PV, ngõ ra sẽ được bật l ên ON. Khi chân R được kích (sườn lên) giá trị bộ đếm và ngõ Out được trả về 0. Giá trị cao nhất của bộ đếm là 32767 và thấp nhất là – 32767.
Hình 2.50: Giản đồ thời gian của CTUD
• Phép toán cộng trừ:
• Cộng, trừ hai số nguyên 16 BIT :
ADD_I: Cộng hai số nguyên 16 BIT SUB_I: Trừ hai số nguyên 16 BIT
OUT: VW, IW, MW, QW, SW, SMWW, T, C, AC, *VD, *LD, *AC, INT
Khi ngõ vào cho phép lên 1 chương trình sẽ thực hiện việc cộng hay trừ hai số nguyên 16 BIT ở IN1, IN2 tương
ứng, kết quả đưa vào OUT. Tương tự, ta có
ADD_DI: Cộng hai số nguyên 32 BIT SUB_DI: Trừ hai số nguyên 32 BIT ADD_R: Cộng hai số thực
SUB_R: Trừ hai số thực
• Nhân ,chia hai số nguyên 16 BIT: MUL_I: Nhân hai số nguyên 16 BIT DIV_I: Chia hai số nguyên 16 BIT
EN: Ngõ vào cho phép IN1 * IN2 = OUT (IN1 / IN2 = OUT, nếu kết quả có dư thì phần dư sẽ được bỏ).
IN1, IN2: VW, IW, MW, QW, SW, SMWW, T, C, AC, LW, AIW, CONSTAN, *VD, *LD, *AC, INT
OUT: VW, IW, MW, QW, SW, SMWW, T, C, AC, *VD, *LD, *AC, INT
Khi ngõ vào cho phép lên 1 chương trình sẽ thực hiện việc nhân hay chia hai số nguyên 16 BIT ở IN1, IN2 tương ứng, kết quả đưa vào OUT.
Trường hợp chia: Vì OUT là số nguyên nên phần dư của phép chia sẽ bị bỏ.
Trường hợp nhân: Nếu phép nhân bị tràn bộ nhớ thì OUT sẽ chứa phần BYTE thấp.
Tương tự, ta có
MUL_DI: Nhân hai số nguyên 32 BIT DIV_DI: Chia hai số nguyên 32 BIT MUL_R: Nhân hai số thực
DIV_R: Chia hai số thực • Phép tăng giảm:
• Tăng, giảm BYTE: INC_B: Tăng BYTE
DEC_B: Giảm BYTE
EN: Ngõ vào cho phép IN1 + 1 = OUT (IN1 – 1 = OUT).
IN1: VB, IB, MB, QB, SB, SMB, T, C, AC, LB, CONSTAN, *VD, *LD, *AC, BYTE
OUT: VB, IB, MB, QB, SB, SMB, *VD, *LD, *AC, AC, Các hàm tương tự:
INC_W: Tăng WORD DEC_W: Giảm WORD INC_DW: Tăng DWORD DEC_DW: Giảm DWORD • Phép toán so sánh:
• So sánh bằng: Khi IN1 = IN2 thì ngõ ra tích cực
IN1, IN2: VB, IB, MB, QB, SB, SMB, T, C, AC, LB, CONSTAN, *VD, *LD, *AC, BYTE
OUT: V, I, M, Q, S, SM, T, C, L, BOOL Tương tự, ta có các hàm so sánh như sau: So sánh khác: <>
So sánh lớn hơn hoặc bằng: >= So sánh nhỏ hơn hoặc bằng: <= So sánh lớn hơn: >
So sánh nhỏ hơn: <
Cũng tương tự hàm so sánh cho BYTE, ta có các phép so sánh cho số INT, DINT, REAL. Khi thực hiện các hàm so sánh thì IN1, IN2 phải