Một bộ A/D được đánh giá dựa vào các thông số như: Số bit chuyển đổi, thời
gian lấy mẫu, tốc độ chuyển đổi, sai số chuyển đổi, tầm điện áp hoặc dòng điện mà bộ
A/D có thể chuyển đổi. Các thông số này thường được cho bởi nhà sản xuất.
Hình 5.1. Tín hiệu số và tín hiệu liên tục
Hình 5.2. Lấy mẫu tín hiệu liên tục65
Đối với PLC thì bộ chuyển đổi A/D thường sử dụng 8 bit, 12 bit, 16 bit. Tùy
theo yêu cầu kỹ thuật, độ chính xác, tính kinh tế mà người lập trình chọn bộ A/D
nào cho phù hợp.
Cấu trúc dữ liệu của bộ A/D trong PLC S7 200.
Module analog trong S7 200 thường sử dụng loại 12 bit. Tín hiệu vào
của module analog ở dạng điện áp hoặc dòng điện, điện áp có thể dương hoặc âm, dữ
liệu chuyển đổi có thể ở dạng đơn cực hoặc lưỡng cực. Tùy thuộc vào dạng chuyển
đổi mà cách sắp xếp các bit dữ liệu cũng có sự khác nhau.
74 trang |
Chia sẻ: linhmy2pp | Ngày: 19/03/2022 | Lượt xem: 213 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Điều khiển lập trình I - Nguyễn Đình Hoàng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
C READ (LRD)
LOGIC POP (LPP)
Lệnh LPS, LRD và LPP là những lệnh thay đổi nội dung bít đầu tiên của ngăn xếp.
Lệnh LPS sao chép nội dung của bít đầu tiên và bít thứ hai trong ngăn xếp, nội dung
ngăn xếp sau đó bị đẩy xuống một bít. Lệnh LRD lấy giá trị của bít thứ hai ghi vào bít
đầu tiên của ngăn xếp, nội dung ngăn xếp đó được kéo lên một bít. Lệnh LPP kéo ngăn
xếp lên một bít.
Sơ đồ minh họa thay đổi ngăn xếp của các lệnh LPS, LRD và LPP
Trước LPS Sau Trước LRD Sau Trước LPP Sau
C0 c0 c0 c1 c0 c1
c1 c0 c1 c1 c1 c2
c2 c1 c2 c2 c2 c3
c3 c2 c3 c3 c3 c4
c4 c3 c4 c4 c4 c5
c5 c4 c5 c5 c5 c6
c6 c5 c6 c6 c6 c7
c7 c6 c7 c7 c7 c8
c8 c7 c8 c8 c8
Hình 3.7. Trạng thái của ngăn xếp trước và sau khi thực hiện lệnh LPS, LRD, LPP
20
ORW, ORD
ANDW, ANDD
XORW, XORD
Lệnh thực hiện các thuật toán logic And, Or và Exclusive Or của đại số Boolean
trên 2 bite hoặc 4 byte (mảng nhiều bít).
Ngoài các lệnh logic làm với tiếp điểm, S7-200 cung cấp thêm những lệnh logic có
khả năng thực hiện các thuật toán logic trên một mảng nhiều tiếp điểm (hay nhiều bít)
như trên 2 byte hoặc 4 byte. Luật tính toán của chúng như sau:
x y x ^ y (And) x v y (Or) x XOR y
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
Cách biểu diễn các lệnh logic này trong LAD và STL được tóm tắt trong bảng sau.
Chúng sử dụng bít nhớ đặc biệt SM 1.0 để thông báo về trạng thái kết quả phép tính
được thực hiện (kết quả bằng 0).
Biểu diễn trong STL
STL Mô tả Toán hạng
Lệnh thực hiện phép logic AND IN1: VW, T, C,
ANDW IN1 IN2 giữa các bít tương ứng của hai từ IW, QW.
IN1 và IN2. Kết quả được ghi lại (word) SMW, AC,
vào IN2 AIW, *VD
*AC, Hằng số.
Lệnh thực hiện phép logic OR
ORW IN1 IN2 giữa các bít tương ứng của hai từ
IN1 và IN2. Kết quả được ghi lại IN2: VW, T, C,
vào IN2 IW, QW
Lệnh thực hiện phép logic XOR (word) W, CA,
XORW IN1 IN2 giữa các bít tương ứng của hai từ AIW, *VD, *AC
IN1 và IN2 . Kết quả được ghi
lại vào IN2
Lệnh thực hiện phép logic AND IN1: VD, ID, QD,
ANDD IN1 IN2 giữa các bít tương ứng của hai từ MD, SMQ.
kép IN1 và IN2. Kết quả được (Dword) AC, HC,
ghi lại vào IN2
21
Lệnh thực hiện phép logic OR *CD,*AC
ORD IN1 IN2 giữa các bít tương ứng của hai từ Hằng số.
kép IN1 và IN2. Kết quả được
ghi lại vào IN2
IN2: VD, ID, QD,
Lệnh thực hiện phép logic XOR MD, SMD
XORD IN1 IN2 giữa các bít tương ứng của hai từ
kép IN1 và IN2. Kết quả được (Dword)AC, *VD,
ghi lại vào IN2 *AC
Biểu diễn trong LAD
LAD Mô tả Toán hạng
WAND W Lệnh thực hiện phép IN1: VW, T, C, IW,
EN tính logic AND theo QW
từng bít của hai từ IN1 (word) SMW, AC,
IN1 và IN2. Kết quả được AIW, VD
IN2 OUT ghi vào từ OUT.
*AC, Hằng số.
IN2: VW, T, C, IW,
Lệnh thực hiện phép QW,
WOR W tính logic OR giữa các
EN bít tương ứng của hai từ (word) SMW, AC,
IN1 và IN2. Kết quả AIW, *VD, *AC,
IN1 Hằng số.
IN2 OUT đư ợ c ghi vào từ OUT.
OUT: VW, T, C, IW,
WXOR W Lệnh thực hiện phép QW, MW,
EN tính logic XOR giữa các (word) SMW, AC,
bít tương ứng của hai từ *VD, *AC
IN1 IN1 và IN2. Kết quả
IN2 OUT đư ợ c ghi vào từ OUT.
Lệnh thực hiện phép IN1: VD, ID, QD,
WAND DW
EN tính logic AND giữa các MD, SMW
bít của hai từ kép IN1 và (Dword) AC, AIW,
IN1 IN2. Kết quả được ghi Hằng số, VD, AC
IN2 OUT vào từ OUT.
22
WOR DW Lệnh thực hiện phép IN2: VD, ID, QD,
EN tính logic OR giữa các MD, SMW
bít của hai từ kép IN1 và (Dword) AC, AIW,
IN1 IN2. Kết quả được ghi Hằng số, *VD, *AC
IN2 OUT vào từ OUT.
OUT: VD, ID, QD,
WXOR DW Lệnh thực hiện phép MD, SMD,
tính logic XOR giữa các
EN (Dword) AC, *VD,
bít của hai từ kép IN1 và
*AC
IN1 IN2. Kết quả được ghi
IN2 OUT vào từ OUT.
- Các lệnh tiếp điểm đặc biệt:
Có thể dùng các lệnh tiếp điểm đặc biệt để phát hiện sự chuyển tiếp trạng thái của
xung (sườn xung) và đảo lại trạng thái của dòng cung cấp (giá trị của đỉnh ngăn xếp).
LAD sử dụng các tiếp điểm đặc biệt để tác động vào dòng cung cấp. Các tiếp điểm đặc
biệt không có toán hạng riêng của chính chúng và vì thế phải đặt chúng vào vị trí phía
trước của cuộn dây hoặc hộp đầu ra. Tiếp điểm chuyển tiếp dương/âm (các lệnh sườn
trước và sườn sau) có nhu cầu về bộ nhớ, nên đối với CPU 214 là 256 lệnh.
Các lệnh tiếp điểm đặc biệt được biểu diễn như sau trong LAD
LAD Mô tả Toán hạng
Tiếp điểm đảo trạng thái của dòng Không có
NOT cung cấp. Nếu dòng cung cấp có tiếp
điểm đảo thì nó bị ngắt mạch, nếu
không có tiếp điểm đảo thì nó thông
mạch.
Tiếp điểm chuyển đổi dương cho phép Không có
dòng cung cấp thông mạch trong một
P
vòng quét khi sườn xung điều khiển
chuyển từ 0 lên 1
N Tiếp điểm chuyển đổi âm cho phép Không có
dòng cung cấp thông mạch trong một
vòng quét khi sườn xung điều khiển
chuyển từ 1 xuống 0.
23
Các lệnh tiếp điểm đặc biệt được biểu diễn như sau trong STL
STL Mô tả Toán hạng
NOT Lệnh đảo giá trị của bít đầu tiên trong ngăn Không có
xếp.
EU Lệnh nhận biết sự chuyển tiếp trạng thái từ 0 Không có
lên 1 trong một vòng quét của đỉnh ngăn
xếp. Khi nhận được sự chuyển tiếp như vậy
đỉnh ngăn xếp sẽ có giá trị bằng 1 trong một
vòng quét.
ED Lệnh nhận biết sự chuyển tiếp trạng thái từ 1 Không có
xuống 0 trong một vòng quét của đỉnh ngăn
xếp. Khi nhận được sự chuyển tiếp như vậy
đỉnh ngăn xếp sẽ có giá trị bằng 1 trong một
vòng quét.
NOT (NOT)
EDGE UP (EU)
EDGE DOWN (ED)
Lệnh NOT, EU và ED thực hiện các thuật toán đặc biệt trên bít đầu tiên của ngăn
xếp. Lệnh NOT đảo giá trị của bít đầu tiên trong ngăn xếp. Lệnh EU khi phát hiện thấy
sườn lên từ 0 đến 1 trong bít đầu tiên của ngăn xếp thì đặt giá trị 1 vào bít đầu tiên của
ngăn xếp trong khoảng thời gian bằng một vòng quét.
Tác động của lệnh vào ngăn xếp như sau:
Trước NOT Sau Trước EU Sau Trước ED Sau
c0 c0 1 c1 C0 1
c1 c1 c1 c1 C1 c1
c2 c2 c2 c2 C2 c2
c3 c3 c3 c3 C3 c3
c4 c4 c4 c4 C4 c4
c5 c5 c5 c5 C5 c5
c6 c6 c6 c6 C6 c6
c7 c7 c7 c7 C7 c7
c8 c8 c8 c8 C8 c8
Hình 3.8. Trạng thái của ngăn xếp trước và sau khi thực hiện lệnh NOT, EU, ED
3.2 Chức năng nhớ RS
SET (S); RESET (R)
24
Lệnh dùng để đóng và ngắt các điểm gián đoạn đã được thiết kế. Trong LAD, logic
điều khiển dòng điện đóng hoặc ngắt các cuộc dây đầu ra. Khi dòng điều khiển đến các
cuộc dây thì các cuộn dây đóng hoặc mở các tiếp điểm (hoặc một dãy các tiếp điểm).
Trong STL, lệnh truyền trạng thái bít đầu của ngăn xếp đến các điểm thiết kế. Nếu
bít này có giá trị =1, các lệnh S và R sẽ đóng ngắt tiếp điểm hoặc một dãy các tiếp
điểm (giới hạn từ 1 đến 255). Nội dung của ngăn xếp không bị thay đổi bởi các lệnh
này.
Mô tả bằng lệnh LAD
LAD Mô tả Toán hạng
S BIT n Đóng một mảng gồm n các S BIT: I, Q, M, SM,
( S ) tiếp điểm kể từ S BIT T, C, V
n(byte): IB, QB, MB,
SMB, VB,AC, Hằng số,
Đóng một mảng gồm n các
*VD, *AC
S BIT n tiếp điểm kể từ S BIT. Nếu S
( R ) BIT lại chỉ vào Timer hoặc
Counter thì lệnh sẽ xóa bít đầu
ra của Timer / Counter đó.
S BIT n Đóng tức thời một mảng S BIT: Q
( SI ) gồm n các tiếp điểm kể từ S
BIT
N(byte): IB, QB, MB,
SMB, VB,AC, Hằng số,
Ngắt tức thời một mảng *VD, *AC
S BIT n gồm n các tiếp điểm kể từ địa
( RI ) chỉ S BIT
STL Mô tả Toán hạng
S S BIT n Ghi giá trị logic vào một S BIT: I, Q, M, SM,
mảng gồm n bít kể từ địa chỉ S T, C, V
BIT (bit)
R R BIT n Xóa một mảng gồm n bít kể
từ địa chỉ S BIT. Nếu S BIT n: IB, QB, MB,
lại chỉ vào Timer hoặc SMB, VB
Counter thì lệnh sẽ xóa bít đầu
(byte) AC, Hằng số,
ra của Timer / Counter.
*VD, *AC
25
SI SI BIT n Ghi tức thời giá trị logic 1 S BIT: Q
vào một mảng gồm n bít kể từ (bit)
địa chỉ S BIT
RI RI BITn Xóa tức thời một mảng n: IB, QB, MB,
gồm n bít kể từ địa chỉ S SMB, VB (byte)
BIT
(byte) AC, Hằng số,
*VD, *AC
3.3 Timer
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 gọi là khâu trễ. Nếu ký hiệu tín hiệu (logic) vào là x (t) và thời gian trễ
được tạo ra bằng Timer là r thì tín hiệu đầu ra của Timer đó sẽ là x (t-r).
S7-200 có 128 Timer (CPU-214) được chia làm 2 loại khác nhau, đó là:
* Timer tạo thời gian trễ không có nhớ (Timer on delay), ký hiệu là TON.
* Timer tạo thời gian trễ có nhớ (Timer on delay retentive), ký hiệu là TONR.
Hai kiểu Timer của S7-200 (TON và TONR) phân biệt với nhau ở phản ứng của nó
đối với trạng thái 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.
Khi đầu vào có giá trị logic bằng 0, TON tự động reset còn TONR thì không tự
reset. Timer TON được dùng để tạo thời gian trễ trong một khoảng thời gian (miền
liên thông), còn với TONR thời gian trễ sẽ được tạo trong nhiều khoảng thời gian khác
nhau.
Timer TON và TONR bao gồm 3 loại với 3 độ phân giải khác nhau, độ phân giải
1ms, 10 ms, 100 ms. Thời gian trễ r được tạo ra chính là tích của độ phân giải của bộ
Timer được chọn và giá trị đặt trước cho Timer. Ví dụ một bộ Timer có độ phân giải
bằng 10 ms và giá trị đặt trước 10 ms thì thời gian trễ sẽ là r = 500 ms
Timer của S7-200 có những tính chất cơ bản sau:
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 (gọi là T-word) của Timer, xác
định khoảng thời gian trễ kể từ khi Timer được kích. Giá trị đặt trước của các bộ
Timer được ký hiệu trong LAD và STL 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 02 byte T-word lưu giá trị đếm tức thời, còn có 1 bít,
ký hiệu bằng T-bít, chỉ trạnh thái logic đầu ra. Giá trị logic của bít này phụ thuộc vào
kết quả so sánh giữa giá trị đếm tức thời với giá trị đặt trước.
Trong khoảng thời gian tín hiệu x (t) có giá trị logic 1, giá trị đếm tức thời trong T-
word luôn được cập nhật 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 lớn hơn hoặc bằng giá trị đặt trước, T-bít có giá trị logic 1.
Các loại Timer của S7-200 (đối với CPU 214) chia theo TON, TONR và độ phân
giải bao gồm:
26
Lệnh Độ phân giải Giá trị cực đại CPU 214
1 ms 32,767s T32T96
TON
10 ms 327,67s T33T36; T97 T100
100 ms 3276,7s T37T63; T101 T127
1 ms 32,767s T0 T64
TONR 10 ms 327,67s T1T4; T65T68
100 ms 3276,7s T5T31; T69T95
Cú pháp khai báo sử dụng Timer trong LAD như sau:
LAD Mô tả Toán hạng
Khai báo Timer số hiệu xx Txx : T32T63
kiểu TON để tạo thời gian trễ T96T127
tính từ khi đầu vào IN được kích.
Nếu như giá trị đếm tức thời lớn
hơn hoặc bằng giá trị đặt trước
PT thì T-bít có giá trị logic bằng
1. Có thể reset Timer kiểu TON
PT: VW, T, C,
bằng lệnh R hoặc bằng giá trị
TON Txx IW,
logic 0 tại đầu vào IN
QW, MW, SMW,
IN 1 ms T32 T96
AC, AIW, VD
10 ms T33T36;
*AC, Hằng số.
PT T97 T100
100 ms T37T63;
T101 T127
Khai báo Timer số hiệu xx Txx : T0 T31
kiểu TONR để tạo thời gian trễ T64 T95
tính từ khi đầu vào IN được kích.
Nếu như giá trị đếm tức thời lớn
TONR _Txx hơn hoặc bằng giá trị đặt trước
PT thì T-bít có giá trị logic bằng PT: VW, T, C,
IN
1. Chỉ có thể reset kiểu TONR IW,
bằng lệnh R cho T-bít
QW, AIW, SMW,
PT 1 ms T0 T64 AC, AIW, VD
10 ms T1 T4 ; *AC, Hằng số.
T65 T68
100 ms T5 T31;
T69 T95
27
Cú pháp khai báo sử dụng Timer trong STL như sau:
TON, TONR khai báo sử dụng Timer của S7-200, lệnh khai báo sử dụng Timer là
lệnh 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 bằng giá trị
logic của bít đầu tiên trong ngăn xếp.
STL Mô tả Toán hạng
Khai báo Timer số hiệu xx kiểu Txx: T32 T63
TON Txx n TON để tạo thời gian trễ tính từ khi T96 T127
bít đầu tiên trong ngăn xếp có giá trị
logic 1. Nếu như giá trị đếm tức thời
lớn hơn hoặc bằng giá trị đặt trước n n (word) : VW, T,
thì T-bít có giá trị logic bằng 1. Có C, IW,QW, MW,
thể reset Timer kiểu TON bằng lệnh SMW
R hoặc bằng giá trị logic 0 tại đầu AC, AIW, VD
vào.
*AC, Hằng số
1 ms T96
10 ms T97 T100
100 ms T101 T127
Khai báo Timer số hiệu xx kiểu Txx :T0 T31
TONR Txx n TONR để tạo thời gian trễ tính từ T64 T95
khi bít đầu tiên trong ngăn xếp có
giá trị logic 1. Nếu như giá trị đếm
tức thời lớn hơn hoặc bằng giá trị n (word) :VW, T,
đặt trước n thì T-bít có giá trị logic C, IW,QW, AIW,
bằng 1. Chỉ có thể reset Timer kiểu SMW,
TONR bằng lệnh R cho T-bít AC, AIW, VD
1 ms T64 *AC, Hằng số
10 ms T65 T68
100 ms T69 T95
Chú ý: Khi sử dụng Timer kiểu TONR, giá trị đếm tức thời được 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ó logic 0. Giá trị của T-bít
không được nhớ mà hoàn toàn phụ thuộc vào kết quả so sánh giữa giá trị đếm tức thời
và giá trị đặt trước.
Các Timer được đánh số từ 0 đến 127 (đối với CPU 214). Một Timer được đặt tên
là Txx, trong đó xx là số hiệu của Timer. Txx đồng thời cũng là địa chỉ hình thức của
T-word và T-bít vẫn được phân biệt với nhau nhờ kiểu lệnh sử dụng với Txx. Khi
dùng lệnh làm việc với từ, Txx đượ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, Txx được hiểu là địa chỉ của T-bít.
Một Timer đang làm việc có thể được đưa lại về trạng thái khởi động ban đầu. Công
việc đưa một Timer về trạng thái ban đầu được gọi là reset Timer đó.
Khi reset một bộ Timer, T-word và T-bít của nó đồng thời được xóa và có giá trị
bằng 0, như vậy giá trị đếm tức thời được đặt về 0 và tín hiệu đầu ra cũng có trạng thái
28
logic bằng 0. Có thể reset bất cứ bộ Timer của S7-200 bằng lệnh R (reset). Điều đó nói
rằng khi dùng lệnh R cho T-bít của một Timer, Timer đó sẽ được đưa về trạng thái ban
đầu và lệnh R cho một Txx vừa xóa T-word vừa xóa T-bít của Timer đó.
Có hai phương pháp để reset một Timer kiểu TON:
Xóa tín hiệu đầu vào.
Dùng lệnh R (reset).
Dùng lệnh R là phương pháp duy nhất để reset các bộ Timer kiểu TONR. Đặt giá trị
0 cho giá trị đếm tức thời của một Timer cũng không thể xóa T-bít của Timer đó. Cũng
như vậy, khi đặt một giá trị logic 0 cho T-bít của một Timer không thể xóa giá trị đếm
tức thời của Timer đó. Cú pháp reset một timer Txx bằng lệnh R là
R Txx K1
Chú ý rằng lệnh R thuộc nhóm lệnh có điều kiện.
X(t) T-Bit
Giá trị đếm tức thời T-word
Giá trị đặt trước
Hình 3.9: Timer của S7-200
- Sử dụng Timer TON
29
- Sử dụng Timer TOF
Đồng hồ thời gian thực
Đồng hồ tời gian thực chỉ có từ CPU 214 trở lên. Để có thể làm việc với đồng
hồ thời gian thực CPU 214 cung cấp hai lệnh đọc và ghi giá trị cho đồng hồ . Những
giá trị đọc được hoặc ghi được với đồng hồ thời gian thực là các giá trị về ngày,
tháng, năm, và các giá trị giờ, phút, giây. Các dữ liệu đọc, ghi với đồng hồ thời gian
thực trong LAD và trong STL có độ dài một byte và phải được mã hóa theo kiểu số
nhị phân BCD .
Byte 0 Năm ( 0 99)
Byte 1 Tháng(0 12)
Byte 2 Ngày (0 31)
Byte 3 Giờ (0 23)
Byte 4 Phút (0 59)
Byte 5 Giây (0 59)
Byte 6 0
Byte 7 ngày trong tuần
30
Các dữ liệu hợp lệ là:
Năm Tháng Ngày Giờ Phút Giây
(yy) (mm) (dd) (hh) (mm) (ss)
0 99 1 12 1 31 0 23 0 59 0 59
Riêng giá trị về ngày trong tuần là một số tương ứng với nội dung của nibble (4
bit) thấp trong byte theo kiểu :
Chủ Thứ Thứ Thứ Thứ Thứ Thứ
nhật hai ba tư năm sáu bảy
1 2 3 4 5 6 7
READ_RTC (LAD)
TODR (STL)
Lệnh đọc nội dung của đồng hồ thời gian thực với bộ đệm 8 byte được chỉ thị trong
lệnh bằng toán hạng T.
SET_RTC (LAD)
TODW (STL )
Lệnh ghi nội của bộ đệm 8 byte được chỉ thị trong lệnh bằng toán hạng T vào
đồng hồ thời gian thực .
Cú pháp sử dụng lệnh đọc, ghi dữ liệu với đồng hồ thời gian thực trong LAD ,
STL:
LAD STL Toán hạng
TODR T
READ RTC
EN
T(byte) : VB , IB ,
QB , MB , SMB ,
T *VD , *AC
TODW
SET RTC T
EN
T
31
Tuyệt đối không sử dụng lệnh TODR và lệnh TODW đồng thời vừa trong
chương trình chính, vừa trong chương trình xử lý ngắt. Khi một lệnh TODR hay
TODW đã được thực hiện, thì khi gọi chương trình xử lý ngắt, các lệnh làn việc với
đồng hồ thời gian thực trong chương trình xử lý ngắt sẽ không được thục hiện nữa.
Bit SM4.5 sẽ có logic 1 trong những trường hợp như vậy.
3.4 Counter
Counter là bộ đếm hiện chức năng đếm sườn xung trong S7-2000. Các bộ đếm của
S7-2000 được chia ra làm 2 loại: bộ đếm tiến (CTU) và bộ đếm tiến/lùi (CTUD).
Bộ đếm tiến CTU đếm số sườn lên của tín hiệu logic đầu vào, tức là đếm số lần thay
đổi trạng thái logic từ 0 lên 1 của tín hiệu. Số sườn xung đếm được, đượ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, gọi 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 được ký hiệu là PV. Khi giá trị đếm tức thời bằng hoặ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
bít đặc biệt của nó, được gọi là C-bít. Trường hợp giá trị đếm tức thời nhỏ hơn giá trị
đặt trước thì C-bít có giá trị logic là 0.
Khác với các bộ Counter, các bộ đếm CTU đều có chân nối với tín hiệu điều khiển
xóa để thực hiện việc đặt lại chế độ khởi phát ban đầu (reset) cho bộ đếm, được ký
hiệu bằng chữ cái R trong LAD hay được qui định là trạng thái logic của bít đầu tiên
của ngăn xếp trong STL. Bộ đếm được reset khi tín hiệu xóa này có mức logic là 1
hoặc khi lệnh R (reset) được thực hiện với C-bít. Khi bộ đếm được reset, cả C-word và
C-bít đều nhận giá trị 0.
CU C-Bit
Giá trị đếm tức thời
C-word
PV
R
Hình 3.10. Bộ đếm CTU của S7-200
Bộ đếm tiến / lùi CTUD đếm tiến khi gặp sườn lên của xung vào cổng đếm, ký hiệu
là CU trong LAD hoặc bít thứ 3 của ngăn xếp trong STL, và đếm lùi khi gặp sườn của
xung vào cổng đếm lùi, được ký hiệu là CD trong LAD hoặc bít thứ 2 của ngăn xếp
trong STL.
Giống như bộ đếm CTU, bộ đếm CTUD cũng được đưa về trạng thái khởi phát ban
đầu bằng 2 cách:
Khi đầu vào logic của chân xóa, ký hiệu bằng R trong LAD hoặc bít thứ nhất của
ngăn xếp trong STL, có giá trị logic là 1 hoặc,
Bằng lệnh R (reset) với C-bít của bộ đếm.
CTUD có giá trị đếm tức thời đúng bằng giá trị đang đếm và được lưu trong
thanh ghi 2 byte C-word của bộ đếm. Giá trị đếm tức thời luôn được so sánh với giá trị
đặt trước PV của bộ đếm. Nếu giá trị đếm tức thời lớn hơn bằng bằng giá trị đặt trước
thì C-bít có giá trị logic bằng 1. Còn các trường hợp khác C-bít có giá trị logic bằng 0.
32
CU C-Bit
PV
Giá trị đếm tức thời
C-word
CD
R
Hình 3.11. Bộ đếm CTUD của S7-200
Bộ đếm tiến CTU có miền giá trị đếm tức thời từ 0 đến 32.767. Bộ đếm tiến/lùi
CTUD có miền giá trị đếm tức thời là 32.767
Các bộ đếm được đánh số từ 0 đến 127 (đối với CPU 214) và ký hiệu bằng Cxx,
trong đó xx là số thứ tự của bộ đếm. Ký hiệu Cxx đồng thời cũng là địa chỉ hình thức
của C-word và của C-bít. Mặc dù dùng địa chỉ hình thức, song C-word và C-bít vẫn
được phân biệt với nhau nhờ kiểu lệnh sử dụng làm việc với từ hay với tiếp điểm (bít).
Lệnh khai báo sử dụng bộ đếm trong LAD như sau:
LAD Mô tả Toán hạng
Khai báo bộ đếm tiến theo Cxx:C0 C47
CTU Cxx sườn lên của CU. Khi giá trị đếm C80 C127
tức thời C-word Cxx lớn hơn
CU hoặc bằng giá trị đặt trước PV,
C-bít (cxx) có giá trị logic bằng PV (word) : VW
PV 1. Bộ đếm được reset khi đầu , T, C, IW, QW,
vào R có giá trị logic bằng 1. Bộ MW, SMW, AC,
đếm ngừng đếm khi C-word Cxx
R AIW, Hằng số,
đạt giá trị cực đại 32.767.
*VD, *AC
Khi báo bộ đếm tiến/lùi, đếm Cxx : C48 C79
CTUD Cxx tiến theo sườn lên của CU và
đếm lùi theo sườn lên của CD.
CU
Khi giá trị đếm tức thời C-word PV
(word):VW,T , C ,
PV Cxx lớn hơn hoặc bằng giá trị
đặt trước PV, C-bít (cxx) có giá IW, QW, MW,
SMW, AC,A IW,
trị logic bằng 1. Bộ đếm ngừng
Hằng số, *VD,
R đếm tiến khi C-word đạt giá trị
cực đại 32.767 và ngừg đếm lùi *AC
khi C-word đạt giá trị cực tiểu
32.767 CTUD reset khi đầu vào
R có giá trị logic bằng 1.
33
Lệnh khai báo sử dụng bộ đếm trong STL như sau:
STL Mô tả Toán hạng
Khai báo bộ đếm tiến theo sườn lên Cxx : C0 C47
cùa CU. Khi giá trị đếm tức thời C- C80 C127
word lớn hơn hoặc bằng giá trị đặt
trước n, C-bít có giá trị logic bằng 1.
CTU Cxx n Bộ đếm được reset khi đầu ngăn xếp n (word):VW , T
có giá trị logic bằng 1. Bộ đếm ngừng , C , IW , QW ,
đếm khi C-word đạt giá trị cực đại MW, SMW, AC,
32.767. AIW, Hằng số.
*VD, *AC
Khai báo bộ đếm tiến/lùi, đếm tiến Cxx: C48 C79
theo sườn lên của CU và đếm lùi theo
sườn lên của CD. Khi giá trị đếm tức
thời C-word, Cxx lớn hơn hoặc bằng n (word) : VW,
CTUD Cxx n giá trị đặt trước n, C-bít có giá trị T, C, IW ,QW,
logic bằng 1, bộ đếm ngừng đếm tiến MW, SMW, AC,
khi C-word đạt giá trị cực đại 32.767 AIW, Hằng số,
và ngừng đếm lùi khi C-word đạt *VD, *AC
được giá trị cực tiểu 32.767 CTUD
reset khi bít đầu của ngăn xếp có giá
trị logic bằng 1.
- Sử dụng bộ đếm CTU
34
- Sử dụng bộ đếm CTD
3.5 Các thí dụ
Ví dụ1 :
Viết chương trình điều khiển mở máy động cơ bằng PLC.
Lập trình LAD
Ghi chú :
I0.0 : Nút nhấn dừng
I0.1 : Nút nhấn mở
Q0.0 : Cuộn dây KĐT
Q0.0 : Tiếp điểm duy trì
Ví dụ 2:
Lập trình logic cho PLC điều khiển động cơ mở máy sao- tam giác.
Chương trình dạng STL
Network 1
//
- Nut an chay dong co: I0.0
- Nut an dung dong co: I0.1
- Tin hieu bao loi qua tai: I0.2
- Dau ra dieu khien Contactor chinh: Q0.0
- Dau ra dieu khien Contactor SAO: Q0.1
35
- Dau ra dieu khien Contactor TAMGIAC: Q0.2
Thoi gian chuyen doi SAO/TAMGIAC: T37
LD SM0.1
R Q0.0, 3 //Reset an toan khi bat dau bat PLC
Network 2
LD I0.0 // Khi an nut chay Dong co
S Q0.0, 2 //Cho chay che do SAO
Network 3
LD Q0.0 //Khi da chay sao
TON T37, 50 //bat dau tinh thoi gian de chuyen tam giac
//gia su thoi gian la 5s
Network 4
LD T37 //khi het thoi gian chay SAO
R Q0.1, 1 //Ngat Contactor chay SAO
S Q0.2, 1 //Dong contactor chay TAMGIAC
Network 5
LD I0.1 //Neu An nut dung dong co
O I0.2 //hoac dong co bi qua tai
R Q0.0, 3 //thi dung ngay dong co lai
Ví dụ 3:
Điều khiển đèn giao thông
Thực hiện điều khiển người và xe qua lại trên các giao lộ.Yêu cầu của hệ thống điều
khiển giao thông là:
+ Đèn đỏ trong 30 giây
+ Đèn vàng trong 5 giây
+ Đèn xanh trong 25 giây
- Phân tích bài toán để xác định số đầu và kiểu loại vào/ra
Bài toán gồm các đầu vào/ra như sau:
Stt Ký hiệu Địa chỉ Kiểu tín hiệu Giải thích
1 Start I0.0 Đầu vào Núm ấn để hệ thống bắt đầu
2 Stop I0.1 Đầu vào Núm ấn dừng hệ thống
3 D1 Q0.0 Đầu ra Đèn đỏ 1
4 X1 Q0.1 Đầu ra Đèn xanh 1
5 V1 Q0.2 Đầu ra Đèn vàng 1
6 D2 Q0.3 Đầu ra Đèn đỏ 2
7 X2 Q0.4 Đầu ra Đèn xanh 2
8 V2 Q0.5 Đầu ra Đèn vàng 2
- Chọn PLC
Với đầu vào ra như trên 4 vào và 2 ra thì chúng ta dùng CPU PLC S7-200 là đủ (CPU 224)
36
- Lưu đồ thuật toán
Bước 1: Kiểm tra núm Start, nếu ấn, cho phép hệ thống vào chế độ làm việc.
và chuyển sang bước 2.
Bước 2: Khởi tạo các thao tác sau:
- Khởi động Timer cho đèn đỏ 1 với thời gian là 30 giây
- Khởi động Timer cho đèn xanh 2 với thời gian là 25 giây
- Bật đầu ra lên 1 cho đèn đỏ 1 và xanh 2
Bước 2: Kiểm tra bít trạng thái của Timer cho đèn xanh 2
- Nếu bít trạng thái bằng 1 thì tắt đèn xanh 2
- Khởi động timer cho đèn vàng 2 với thời gian là 5 giây
- Bật đèn vàng 2 và chuyển sang bước 3
Ngược lại: quay lại bước 2
Bước 3: Kiểm tra bít trạng thái của Timer cho đèn đỏ 1 hoặc vàng 2
- Nếu bít trạng thái bằng 1 thì tắt đỏ 1 và vàng 2
- Khởi động timer cho đèn xanh 1 và đỏ 2 tương ứng với thời gian là 25 và 30 giây
- Bật đèn đỏ 2, xanh 1 và chuyển sang bước 4
Ngược lại: quay lại bước 3
Bước 4: : Kiểm tra bít trạng thái của Timer cho đèn xanh 1
- Nếu bít trạng thái bằng 1 thì tắt đèn xanh 1
- Khởi động timer cho đèn vàng 1 với thời gian là 5 giây
- Bật đèn vàng 1 và chuyển sang bước 5
Ngược lại: quay lại bước 4
Bước 5: Kiểm tra bít trạng thái của Timer cho đèn đỏ 2 hoặc vàng 1
- Nếu bít trạng thái bằng 1 thì tắt đỏ 2 và vàng 1
- Chuyển sang bước 2
Ngược lại: quay lại bước 5
- Viết chương trình (Chương trình ở dạng LAD).
37
38
39
40
Ví dụ 4:
Đếm số xe đậu trong garage
Chương Trình STL
Network 1: Đếm xe ra/vào Ragage
LD I0.1
EU
A I0.0
LD I0.0
EU
A I0.1
LD SM0.1
CTUD C1, 20
Network 2: Báo còn chỗ trống
(đèn xanh)
41
LDN C1
= Q0.1
Network 3: Báo hết chỗ đậu xe
(đèn đỏ)
LD C1
= Q0.0
Câu hỏi ôn tập chương 3:
1. PLC S7-200 các mấy loại Timer cơ bản? Hoạt động của TON,
TOF ?
2. Các bộ đếm CTU, CTD hoạt động như thế nào?
42
Chương 4: CÁC PHÉP TOÁN SỐ CỦA PLC
4.1 Chức năng truyền dẫn
Lệnh truyền nhận: Lệnh truyền ( XMT); Lệnh nhận (RCV)
Dạng lệnh.
TBL : Byte chứa số lượng byte cũng như vị trí byte bắt đầu truyền qua Port giao tiếp
Port : Chỉ Port thực hiện việc truyền nhận dữ liệu
Ví dụ : Muốn truyền chuỗi dữ liệu “TRI” qua Port 0 ta thực hiện các lệnh sau:
Trong đó : 3 là số Byte cần truyên , được đưa vào VB200
‘T’ được đưa vào Byte VB201;
‘R’ được đưa vào Byte VB202
‘I’ được đưa vào Byte VB203
Lệnh truyền được thực hiện bằng lệnh XMT
43
4.2 Chức năng so sánh
Khi lập trình, nếu có các quyết định về điều khiển được thực hiện dựa trên kết quả
của việc so sánh thì có thể sử dụng lệnh so sánh cho byte, từ hay từ kép của S7-200.
LAD sử dụng lệnh so sánh để so sánh các giá trị của byte, từ và từ kép (giá trị thực
hoặc nguyên). Những lệnh so sánh thường là so sánh nhỏ hơn hoặc bằng (<=); so sánh
bằng (=) và so sánh lớn hơn hoặc bằng (> =).
Khi so sánh giá trị của byte thì không cần phải để ý đến dấu của toán hạng. Ngược
lại khi so sánh các từ hoặc từ kép với nhau thì phải để ý đến dấu của toán hạng, ngược
lại khi so sánh các từ hoặc từ kép với nhau thì phải để ý đến dấu của toán hạng là bít
cao nhất trong từ hoặc từ kép.
Biểu diễn các lệnh so sánh trong LAD:
LAD Mô tả Toán hạng
n1 n2 Tiếp điểm đóng khi
= = B
n1 = n2 n1,n2 (byte) : VB ,
n1 n2 IB , QB, MB, SMB ,
= = I B = Byte
AC , Const , *VD*,
I = Integer
n1 AC
n2 D = Double Integer
= = D
R = Real
n1 n2
= = R
Tiếp điểm đóng khi
n1 > n2 n1,n2 (từ): VW, T,
n1 n2
> = B B = Byte C, IW, QW, MW,
SMW,AC, AIW,
I = Integer
n1 n2 Hằng số, *VD, *AC
> = I D = Double Integer
R = Real
n1 n2
> = D
n1 n2
> = R
44
Tiếp điểm đóng khi
n1 n2
< = B n1 < n2 n1, n2(từ kép):VD,
n1 n2 B = Byte ID, QD, MD, SMD,
< = I AC, HC, Hằng số,
I = Integer
*VD, *AC
n1 n2 D = Double Integer
< = D
R = Real
n1 n2
< = R
Trong STL, những lệnh so sánh thực hiện phép so sánh byte, từ và từ kép. Căn cứ
vào kiểu so sánh (=), kết quả của phép so sánh có giá trị bằng 0 (nếu đúng)
hoặc 1 (nếu sai) nên có thề sử dụng kết hợp cùng với các lệnh logic LA, A, O. Để tạo
ra được các phép so sánh mà S7-200 không có lệnh so sánh tương ứng như: so sánh
không bằng nhau (), so sánh nhỏ hơn (>), có thể tạo ra được nhờ dùng kết hợp lệnh
NOT với các lệnh đã có (=, >=, <=). Ví dụ sau mô tả việc thực hiện phép so sánh
không bằng nhau () giữa nội dung của từ VW100 và hằng số 50 bằng cách sử dụng
kết hợp phép so sánh bằng nhau LDW = và lệnh đảo NOT.
LDB =, LDW =
LDD =, LDR =
* Lệnh kiểm tra tính bằng nhau của nội dung 2 byte, từ, từ kép, hoặc số thực. Trong
trường hợp phép so sánh cho kết quả đúng, bít đầu tiên trong ngăn xếp sẽ có giá trị
logic bằng 1.
LDB < = , LDW < =
LDD < =, LDR < =
* Lệnh so sánh nội dung của byte, từ, từ kép hoặc số thực thứ nhất có nhỏ hơn hoặc
bằng nội dung của byte, từ, từ kép hoặc số thực thứ hai hay không. Trong trường hợp
phép so sánh cho kết quả đúng, bít đầu tiên trong ngăn xếp có giá trị logic bằng 1.
LDB > =, LDW > =
LDD > =, LDR > =
* Lệnh so sánh nội dung của byte, từ, từ kép hoặc số thực thứ nhất có lớn hơn hoặc
bằng nội dung của byte, từ, từ kép hoặc số thực thứ hai hay không. Trong trường hợp
phép so sánh cho kết quả đúng, bít đầu tiên trong ngăn xếp có giá trị logic bằng 1.
AB =, AW =
AD =, AR =
* Lệnh kiểm tra tính bằng nhau của nội dung 2 byte, từ, từ kép, hoặc số thực. Trong
trường hợp phép so sánh cho kết quả đúng, sẽ thực hiện phép tính logic And giữa bít
đầu tiên trong ngăn xếp với giá trị logic.
AB < =, AW < =
AD < =, AR < =
45
Lệnh so sánh nội dung của byte, từ, từ kép hoặc số thực thứ nhất có nhỏ hơn hoặc
bằng nội dung của byte, từ, từ kép hoặc số thực thứ hai hay không. Trong trường hợp
phép so sánh cho kết quả đúng, sẽ thực hiện phép tính logic AND giữa bít đầu tiên
trong ngăn xếp với giá trị logic 1
Biểu diển lệnh so sánh trong STL:
STL Mô tả Toán hạng
LDB = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
n1 , n2 (byte):VB, IB,
giữa giá trị logic 1 với nội QB, MB, SMB, AC,
AB = n1 n2
dung đỉnh ngăn xếp khi nội hằng số, *VD , *AC
dung 2 byte n1 và n2 thỏa
OB = n1 n2 mãn n1 = n2
LDB > = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
AB > = n n
1 2 dung đỉnh ngăn xếp khi nội
dung 2 byte n1 và n2 thỏa mãn
OB > = n1 n2 n1 > = n2
LDB < = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
AB < = n n
1 2 dung đỉnh ngăn xếp khi nội
dung 2 byte n1 và n2 thỏa mãn
OB < = n1 n2 n1 < = n2
LDW = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
n1 ,n2 (từ):VW, T, C,
giữa giá trị logic 1 với nội QW, MW, SMW, AC,
AW = n1 n2
dung đỉnh ngăn xếp khi nội AIW , hằng số, *VD ,
dung 2 từ n1 và n2 thỏa mãn - *AC
OW = n1 n2 n1 = n2
LDW > = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
AW > = n n
1 2 dung đỉnh ngăn xếp khi nội
dung 2 từ n1 và n2 thỏa mãn -
OW > = n1 n2 n1 > = n2
LDW < = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
46
AW < = n1 n2 dung đỉnh ngăn xếp khi nội
dung 2 từ n1 và n2 thỏa mãn -
n1 < = n2
OW < = n1 n2
LDD = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
n1 , n2 (từ kép) :VD,
giữa giá trị logic 1 với nội ID, QD, MD, SMD,
AD = n1 n2
dung đỉnh ngăn xếp khi nội AC, HC , hằng số, *VD
dung 2 từ kép n1 và n2 thỏa , *AC
OD = n1 n2 mãn n1 = n2
LDD > = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
AD > = n n
1 2 dung đỉnh ngăn xếp khi nội
dung 2 từ kép n1 và n2 thỏa
OD > = n1 n2 mãn n1 > = n2
LDD < = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
AD < = n n
1 2 dung đỉnh ngăn xếp khi nội
dung 2 từ kép n1 và n2 thỏa
OD < = n1 n2 mãn n1 < = n2
LDR = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
n1 ,n2 (từ kép):VD,
giữa giá trị logic 1 với nội ID, QD, MD, SMD,
AR = n1 n2
dung đỉnh ngăn xếp nếu hai AC, HC , hằng số, *VD
số thực n1 và n2 (4 byte) thỏa , *AC
OR = n1 n2 mãn n1 = n2
LDR > = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
AR > = n n
1 2 dung đỉnh ngăn xếp nếu hai
số thực n1 và n2 (4 byte )
OR > = n1 n2 thỏa mãn n1 > = n2
LDR < = n1 n2 Lệnh thực hiện phép tính
logic Load , And hoặc Or
giữa giá trị logic 1 với nội
AR < = n n
1 2 dung đỉnh ngăn xếp nếu hai
số thực n1 và n2 (4 byte) thỏa
OR < = n1 n2 mãn n1 < = n2
47
4.3 Chức năng dịch chuyển
Lệnh MOV_B
Là lệnh sao chép nội dung của byte IN sang byte OUT.
Cú pháp dùng lệnh MOV_B trong LAD hay MOVB trong STL như sau:
LAD STL
MOVB IN OUT
MOV B
EN
IN OUT
Lệnh MOV_W
Là lệnh sao chép nội dung của từ đơn IN sang từ đơn OUT.
Cú pháp dùng lệnh MOVW trong STL hay MOV_W trong LAD như sau:
LAD STL
MOVW IN OUT
MOV W
EN
IN OUT
Lệnh MOV_DW
Là lệnh sao chép nội dung của từ kép IN sang từ kép OUT.
Cú pháp dùng lệnh MOVD trong STL hay MOV_DW trong LAD như sau:
LAD STL
MOVD IN OUT
MOV DW
EN
IN OUT
Lệnh MOV_R
Là lệnh sao chép một số thực từ IN (4 byte) sang OUT (4 byte).
Cú pháp dùng lệnh MOV_R trong LAD hay MOVR trong STL:
48
LAD STL
MOVR IN OUT
MOV R
EN
IN OUT
Lệnh SWAP
Là lệnh trao đổi nội dung của Byte thấp và Byte cao trong nội dung từ đơn IN
Cú pháp dùng lệnh SWAP trong LAD hay trong STL như sau:
LAD STL
SWAP IN
SWAP
EN
IN OUT
Lệnh SHR_R
Là lệnh dịch chuyển các bít của từ đơn IN sang phải N vị trí, trong đó N được gọi là
số đếm lần dịch chuyển. Tại mỗi lần dịch chuyển, giá trị logic 0 được đưa vào bít cao
(bít thứ 15) và giá trị logic của bít thấp (bít 0) được chuyển vào bít báo tràn SM1.1.
Trong LAD kết quả được ghi vào OUT, còn trong STL kết quả vẫn nằm trong IN.
Cú pháp của lệnh như sau:
LAD STL
SHR W SRW IN N
EN
IN OUT
N
49
Lệnh SHL_W
Là lệnh dịch chuyển các bít của từ đơn IN sang trái n vị trí, trong đó N được gọi
là số đếm lần dịch chuyển. Tại mỗi lần dịch chuyển, giá trị logic 0 được đưa vào bít
thấp (bít 0) và giá trị logic của bít cao (bít thứ 15) được chuyển vào bít báo tràn
SM1.1. Trong LAD kết quả được ghi vào từ OUT, còn trong STL kết quả vẫn nằm
trong IN.
Cú pháp dùng lệnh này như sau:
LAD STL
SHL W
EN SLW IN N
IN OUT
N
Lệnh SHR_DW
Là lệnh dịch chuyển các bít của từ kép IN sang phải N vị trí với N là số đếm lần
dịch chuyển. Tại mỗi lần dịch chuyển, giá trị logic 0 được đưa vào bít cao (bít thứ 31)
và giá trị của bít thấp (bít 0) được chuyển vào bít báo tràn SM1.1. Trong LAD kết quả
được ghi vào từ kép OUT, còn trong STL kết quả vẫn nằm trong IN.
Cú pháp dùng lệnh dịch chuyển này như sau:
LAD STL
SHR DW
EN SRD IN N
IN OUT
N
Lệnh SHL_DW
Là lệnh dịch chuyển các bít của từ kép IN sang trái N vị trí, trong N được gọi là
số đếm lần dịch chuyển. Tại mỗi lần dịch chuyển, giá trị logic 0 được đưa vào bít thấp
(bit 0) và giá trị logic của bít cao (bít 31) được chuyển vào bít báo tràn SM1.1
Trong LAD kết quả được ghi vào từ kép OUT.
Trong STL kết quả vẫn nằm trong IN.
Cú pháp của lệnh này như sau:
50
LAD STL
SHL DW
EN SLD IN N
IN OUT
N
Lệnh ROR_W
Là lệnh quay các bít của từ đơn IN sang phải N lần, với N được gọi là số đếm lần
quay. Tại mỗi lần quay, giá trị logic của bít thấp (bít 0) được chuyển vào bít báo tràn
SM1.1 vừa được ghi lại vào bít cao (bít 15) của từ IN.
Trong LAD kết quả được ghi vào từ OUT.
Trong STL kết quả vẫn nằm trong IN.
Cú pháp của lệnh này như sau:
LAD STL
ROR W
EN RRW IN N
IN OUT
N
Lệnh ROR_DW
Là lệnh quay các bít của từ kép IN sang phải N lần, trong đó N được gọi là số lần
quay. Tại mỗi lần quay, giá trị logic của bít thấp (bít 0) vừa được chuyển vào bít báo
tràn SM1.1 vừa được chuyển vào bít cao (bít 31) của từ kép IN. Trong LAD kết quả
được ghi vào từ OUT. Còn trong STL kết quả vẫn nằm trong IN.
Cú pháp dùng lệnh này như sau:
LAD STL
ROR DW
EN RRD IN N
IN OUT
N
51
Lệnh ROL-W
Là lệnh quay các bít của từ đơn IN sang trái N lần với N là số đếm lần quay. Tại
mỗi lần quay, giá trị logic của bít cao (bít 15) vừa được chuyển vào bít báo tràn SM1.1
vừa được ghi lại vào bít thấp của từ IN.
Trong LAD kết quả được ghi vào từ OUT.
Trong STL kết quả vẫn nằm trong IN
Cú pháp dùng lệnh này như sau:
LAD STL
ROL W
EN RLW IN N
IN OUT
N
Lệnh ROL-DW
Là lệnh quay các bít của từ kép IN sang trái N lần, trong đó N được gọi là số
đếm lần quay. Tại mỗi lần quay, giá trị logic của bít cao (bít 31) vừa được chuyển vào
bít báo tràn SM1.1 vừa được ghi lại vào bít thấp (bít 0) của từ kép IN.
Trong LAD kết quả được ghi vào từ OUT.
Trong STL kết quả vẫn nằm trong IN
Cú pháp dùng lệnh này như sau:
LAD STL
ROL DW
EN RLD IN N
IN OUT
N
4.4 Chức năng biến đổi
Hàm SEG
Hàm SEG chuyển đổi số nguyên hệ cơ số Hexa trong khoảng 0 - F sang thành giá
trị bit tương ứng của thanh ghi 7 nét .
Hàm SEG lập giá trị các bit của thanh ghi 7 nét tương ứng với nội dung của 4 bit
thấp của byte đấu vào IN. Kết quả được ghi vào byte đầu ra OUT.
52
Sơ đồ các bit của thanh ghi 7 nét
Số Thanh ghi 7 nét
nguyên - g f e d c b a
0 0 0 1 1 1 1 1 1 a
1 0 0 0 0 0 1 1 0
f b
2 0 1 0 1 1 0 1 1 g
c
3 0 1 0 0 1 1 1 1 e
4 0 1 1 0 0 1 1 0 d
5 0 1 1 0 1 1 0 1
6 0 1 1 1 1 1 1 0
7 0 0 0 0 0 1 1 1
8 0 1 1 1 1 1 1 1
9 0 1 1 0 0 1 1 1
A 0 1 1 1 0 1 1 1
B 0 1 1 1 1 1 0 0
C 0 0 1 1 1 0 0 1
D 0 1 0 1 1 1 1 0
E 0 1 1 1 1 0 0 1
F 0 1 1 1 0 0 0 1
LAD STL Toán hạng
IN (Byte) :VB, IB, QB,
SEG ENCO IN OUT MB, SMB, AC, *VD, *AC,
EN hằng số
IN OUT
OUT(byte): VB, IB, QB,
MB, SMB, AC, *VD, *AC
53
Lệnh chuyển đổi mã BCD sang số nguyên
Dạng LAD :
Dạng STL : BCD_I VW0
Ý nghĩa.
Lệnh này thực hiện phép biến đổi một số dạng mã BCD 16 bit chứa trong word
có địa chỉ ở ngõ vào IN sang số nguyên dạng nhị phân 16 bit chứa trong word
có địa chỉ ở ngõ ra OUT, địa chỉ ngõ ra có thể giống ngõ vào, thường nằm trong
các vùng sau :
IN: VW, T, C, IW, QW, MW, SMW, AC, AIW, const
OUT: VW, T, C, IW, QW, MW, SMW, AC.
4.5 Chức năng toán học (cộng, trừ, nhân, chia)
Lệnh cộng (ADD)
Lệnh ADD_I
Là lệnh thực hiện phép cộng các số nguyên 16-bít IN1 và IN2.
Trong LAD kết quả là một số nguyên 16-bít được ghi vào OUT, tức là:
IN1 + IN2 = OUT.
Còn trong STL, kết quả cũng là một giá trị 16-bít nhưng được ghi vào IN2, tức là
IN1 + IN2 = IN2.
Lệnh ADD_DI
Là lệnh thực hiện phép cộng các số nguyên 32-bít IN1 và IN2
Trong LAD, kết quả là một số nguyên 32-bít được ghi vào OUT, tức là:
IN1 + IN2 = OUT.
Còn trong STL, kết quả cũng là một giá trị 32-bít nhưng được ghi vào IN2, tức là
IN1 + IN2 = IN2.
Lệnh ADD_R
Là lệnh thực hiện phép cộng các số thực 32-bít IN1 và IN2.
Trong LAD, kết quả là một số thực 32-bít được ghi vào OUT, tức là:
IN1 + IN2 = OUT.
Còn trong STL, kết quả cũng là một giá trị thực 32-bít nhưng được ghi vào IN2, tức
là IN1 + IN2 = IN2.
Lệnh trừ (SUB)
Lệnh SUB_I
Là lệnh thực hiện phép trừ các số nguyên 16-bít IN1 và IN2
54
Trong LAD kết quả là một số nguyên 16-bít và được ghi vào OUT, tức là:
IN1 - IN2 = OUT.
Còn trong STL, kết quả là một giá trị 16-bít nhưng được ghi lại vào IN2, tức là IN1-
IN2 = IN2.
Lệnh SUB-DI
Là lệnh thực hiện phép trừ các số nguyên 32-bít IN1 và IN2
Trong LAD kết quả là một số nguyên 32-bít được ghi vào IN2, tức là:
IN1 - IN2 = IN2.
Còn trong STL, kết quả là một giá trị 32-bít nhưng được ghi lại vào IN2, tức là IN1-
IN2 = IN2.
Lệnh SUB_R
Là lệnh thực hiện phép trừ các số thực 32-bít IN1 và IN2
Trong LAD kết quả là một số thực 32-bít được ghi vào OUT, tức là:
IN1 - IN2 = OUT.
Trong STL, kết quả là một giá trị 32-bít nhưng được ghi lại vào IN2, tức là IN1-
IN2 = IN2.
Cú pháp dùng lệnh cộng và trừ trong LAD và STL như sau:
LAD STL
+ I IN1
ADD I
IN2
EN
IN1
IN2 OUT
- I IN1
SUB I IN2
EN
IN1
IN2 OUT
55
+ D IN1 IN2
ADD DI
EN
IN1
IN2 OUT
- D IN1 IN2
SUB DI
EN
IN1
IN2 OUT
+ R IN1 IN2
ADD R
EN
IN1
IN2 OUT
- R IN1 IN2
SUB R
EN
IN1
IN2 OUT
Lệnh nhân (MUL)
Lệnh MUL
Trong LAD: Lệnh thực hiện phép nhân 2 số nguyên 16-bít IN1 và IN2 và cho ra kết
quả 32-bít chứa trong từ kép OUT (4 byte).
Trong STL: Lệnh thực hiện phép nhân giữa 2 số nguyên 16-bít n1 và số nguyên
chứa trong từ thấp (từ 0 đến bít 15) của toán hạng 32-bít n2 (4 byte). Kết quả 32-bít
được ghi vào n2.
Lệnh MUL_R
Trong LAD: lệnh thực hiện phép nhân hai số thực 32-bít IN1 và IN2 và cho ra kết
quả 32-bít chứa trong từ kép OUT (4 byte).
Trong STL: Lệnh thực hiện phép nhân giữa số thực 32-bít được ghi vào IN2.
56
Cú pháp dùng lệnh trong LAD và STL như sau:
LAD STL
MUL n1 n2
MUL
EN
IN1
IN2 OUT
*R IN 1 IN2
MUL R
EN
IN1
IN2 OUT
Lệnh chia (DIV)
Trong LAD: Lệnh thực hiện phép chia số nguyên 16-bít IN1 cho số nguyên 16-bít
IN2. Kết quả 32-bít chứa trong từ kép OUT gồm thương số ghi trong mảng 16-bít từ
bít 0 đến bít15 (từ thấp) và phần dư cũng 16-bít ghi trong mảng từ bít-16 đến bít-31 (từ
cao).
Trong STL: Lệnh thực hiện phép chia số nguyên 16-bít n1 cho số nguyên, số
nguyên 16-bít nằm trong từ thấp từ bít 0 đến bít 15 của toán hạng 32-bít n2. Kết quả
32-bít được ghi lại vào n2 bao gồm thương số ghi trong mảng 16-bít từ bít 0 đến bít 15
(từ thấp) và phần dư ghi trong mảng 16-bít từ bít-16 đến bít-31 (từ cao).
Lệnh DIV_R
Trong LAD: lệnh thực hiện phép chia số thực 32-bít IN1 cho số thực 32-bít IN2 và
cho ra kết quả 32-bít chứa trong từ kép OUT.
Trong STL, lệnh thực hiện phép chia số thực 32-bít IN1 cho số thực 32-bít IN2, kết
quả 32-bít được ghi lại vào IN2.
57
Cú pháp dùng lệnh chia hai số trong LAD và STL như sau:
LAD STL
DIV n1 n2
DIV
EN
IN1
IN2 OUT
/R n1 n2
DIV R
EN
IN1
IN2 OUT
Các lệnh cộng trừ một đơn vị
Lệnh INC_B
Là lệnh cộng số nguyên 1 vào nội dung của byte đầu vào.
Trong LAD: Kết quả được ghi vào OUT, tức là: IN1 + 1 = OUT.
Trong STL: Kết quả được ghi vào IN.
Cú pháp dùng lệnh INCW trong LAD và trong STL như sau:
LAD STL
INCW IN
INC B
EN
IN OUT
Lệnh INC_W
Lệnh cộng số nguyên 1 vào nội dung từ đơn In.
Trong LAD: Kết quả được ghi vào OUT.
Trong STL: Kết quả được ghi lại vào IN.
58
Cú pháp dùng lệnh INCW trong LAD và trong STL như sau:
LAD STL
INCW IN
INC W
EN
IN OUT
Lệnh INC_DW (DOUBLE WORD)
Là lệnh cộng số nguyên 1 vào nội dung từ kép IN
Trong LAD: Kết quả được ghi vào OUT, tức là: IN + 1 = OUT
Trong STL: Kết quả được ghi vào IN, tức là: IN + 1 = IN
Cú pháp dùng lệnh INCD trong LAD và trong STL như sau:
LAD STL
INCD IN
INC DW
EN
IN OUT
Lệnh DEC_B
Là lệnh bớt nội dung của byte đầu vào đi 1 đơn vị.
Trong LAD: Kết quả được ghi vào OUT, tức là: IN - 1 = OUT
Trong STL: Kết quả được ghi vào IN, tức là: IN - 1 = IN
Cú pháp dùng lệnh DECW trong STL và DEC_W trong LAD như sau:
LAD STL
DECB IN
DEC B
EN
IN OUT
Lệnh DEC_W
Là lệnh bớt nội dung IN đi 1 đơn vị.
Trong LAD: Kết quả được ghi vào OUT, tức là: IN - 1 = OUT
59
Trong STL: Kết quả được ghi vào IN, tức là: IN - 1 = IN
Cú pháp dùng lệnh DECW trong STL và DEC_W trong LAD như sau:
LAD STL
DECW IN
INC W
EN
IN OUT
Lệnh DEC_DW
Là lệnh giảm nội dung từ kép IN đi 1 đơn vị.
Trong LAD: Kết quả được ghi vào OUT, tức là: IN - 1 = OUT
Trong STL: Kết quả được ghi vào IN, tức là: IN - 1 = I
Cú pháp dùng lệnh DECDW trong STL hay DEC_DW trong LAD như sau:
LAD STL
DECD IN
INC DW
EN
IN OUT
4.6 Chức năng số
Lệnh lấy căn bậc 2 (SQRT)
Là một lệnh thực hiện lấy căn bậc hai của số thực 32-bít IN. Kết quả cũng là một số
32-bít được ghi vào từ kép OUT.
Cú pháp dùng lệnh lấy căn bậc hai của một số thực như sau:
LAD STL
SQRT IN OUT
SQRT
EN
IN OUT
60
Hàm lượng giác
Dạng lệnh
4.7 Các thí dụ
Ví dụ 1:
Viết chương trình điều khiển 8 động cơ từ D0 đến D7 theo yêu cầu sau:
Nhấn Nút START động cơ D0 chạy
Nhấn nút NEXT thì động đang chạy dừng và động cơ bên phải chạy
Nhấn nút BACK thì động cơ đang chạy dừng và động cơ bên trái chạy
Nhấn STOP thì động cơ đang chạy dừng
61
Ví dụ 2:
Chương trình kiểm tra chất lượng sản phẩm
Có 4 trạm kiểm tra: Dán nhãn, chai mẻ, có nước và đóng nút.
Có 2 cảm biến phát hiện chai ra và vào
Nếu chai nào không thoả 1 trong 4 điều khiện thì sau khi qua 4 trạm sẽ bị loại bằng
van khí nén.
62
Ngõ vào:
I0.0: Start I0.3: CB trạm 1
I0.1: Stop I0.4: CB trạm 2
I0.2: CB chai vaøo I0.5: CB trạm 3
I0.7: CB chai ra I0.6: CB trạm 4
Ngõ ra:
Q0.0 Băng chuyền
Q0.1 Van khí nén
M0.3 M0.2 M0.1 M0.0
Thanh ghi chứa trạng thái trạm 1
M1.2 M1.1 M1.0
Thanh ghi chứa trạng thái trạm 2
M2.1 M2.0
Thanh ghi chứa trạng thái trạm 3
M3.0
Thanh ghi chứa trạng thái trạm 4
Chương trình LAD
63
Chương 5: XỬ LÝ TÍN HIỆU ANALOG
5.1 Tín hiệu analog
Khác với tín hiệu số, ngõ vào và ngõ ra chỉ có hai trạng thái là ON hoặc OFF
(mức 1 hoặc 0), tín hiệu analog có biên độ liên tục theo thời gian.
Hình 5.1. Tín hiệu số và tín hiệu liên tục
Phần lớn những hiện tượng xảy ra trong thực tế đều ở dạng analog. Các
cảm biến ngõ có tín hiệu ra dạng analog như: Cảm biến nhiệt độ, cảm biến áp suất,
cảm biến dòng chảy, cảm biến mức.. Những cơ cấu chấp hành có tín hiệu
điều khiển dạng analog: Vale tuyến tính, biến tần.....
5.2 Biểu diễn giá trị analog
Đối với ngõ vào của PLC hay máy tính, tín hiệu analog không được đọc liên tục
mà sẽ được lấy mẫu vào những khoảng thời gian nhất định. Sau đó tín hiệu
analog được chuyển đổi sang tín hiệu số nhờ bộ A/D. Trong một khoảng thời gian
nhất định, nếu số mẫu lấy càng nhiều thì độ chính xác càng tăng. Tuy nhiên mỗi bộ
A/D chỉ có thể thu thập được một số mẫu nhất định trong một giây. Đối với PLC thì
tần số lấy mẫu có thể đạt 20hZ.
Hình 5.2. Lấy mẫu tín hiệu liên tục
Một bộ A/D được đánh giá dựa vào các thông số như: Số bit chuyển đổi, thời
gian lấy mẫu, tốc độ chuyển đổi, sai số chuyển đổi, tầm điện áp hoặc dòng điện mà bộ
A/D có thể chuyển đổi. Các thông số này thường được cho bởi nhà sản xuất.
64
Đối với PLC thì bộ chuyển đổi A/D thường sử dụng 8 bit, 12 bit, 16 bit. Tùy
theo yêu cầu kỹ thuật, độ chính xác, tính kinh tế mà người lập trình chọn bộ A/D
nào cho phù hợp.
Cấu trúc dữ liệu của bộ A/D trong PLC S7 200.
Module analog trong S7 200 thường sử dụng loại 12 bit. Tín hiệu vào
của module analog ở dạng điện áp hoặc dòng điện, điện áp có thể dương hoặc âm, dữ
liệu chuyển đổi có thể ở dạng đơn cực hoặc lưỡng cực. Tùy thuộc vào dạng chuyển
đổi mà cách sắp xếp các bit dữ liệu cũng có sự khác nhau.
Hình 5.3. Cách định dạng các bit dữ liệu trong modul analog của S7-200
5.3 Kết nối các cảm biến và tải
Một số module analog của S7 200
- Module analog EM231
- Các thông số kỹ thuật:
- Cách kết nối ngõ vào của modul EM 231.
65
- Swith chọn giá trị và độ phân giải.
Lưu ý:
Dòng điện ngõ vào: 0 đến 20mA.
Độ phân giải: 5uA hay từ 1,25mV đến 2,5mV.
Giá trị số ngõ vào: -32000 đến 32000(lưỡng cực) hay từ 0 đến 32000(đơn cực).
- Module analog EM235
- Các thông số kỹ thuật:
66
- Cách kết nối ngõ vào, ra của modul EM 231.
- Swith chọn giá trị và độ phân giải.
67
5.4 Đọc và chuẩn hoá giá trị đo
Module analog thường có nhiều tầm đo khác nhau, tín hiệu ngõ vào có thể là
dòng điện hoặc điện áp. Việc chuyển đổi từ tầm đo này sang tầm đo khác thì kết quả
chuyển đổi thường có những sai số nhất định do cấu trúc của mạch chuyển đổi. Do
vậy thông thường khi sử dụng module analog, người lập trình cần phải hiệu chỉnh
trước khi sử dụng để kết quả chuyển đổi được chính xác hơn. Dưới đây trình bày
việc hiệu chỉnh cho ngõ vào là điện áp, tầm đo 10V, ngõ vào chuyển đổi là
AIW0.
- Cấp điện cho module analog hoạt động khoảng 10 phút.
- Chọn điện áp vào là 10V ( độ phân giải 2,5mV)
- Chỉnh biến trở tại ngõ vào AIW0 để ngõ vào đạt giá trị 0V.
- Dùng chương trình đọc giá trị analog vào và quan sát giá trị. Nếu chưa bằng không
thì hiệu chỉnh độ lợi (Gain) để đạt giá trị = 0.
- Chỉnh biến trở tại ngõ vào AIW0 để ngõ vào đạt giá trị 10V.
- Dùng chương trình đọc giá trị analog vào và quan sát giá trị. Nếu chưa bằng
32000 thì hiệu chỉnh độ lợi (Gain) để đạt giá trị = 32000.
5.5 Hiển thị giá trị đo
Tuỳ thuộc tín hiệu analog nối với ngõ vào nào của các modul analog mà giá trị
chuyển đổi sẽ được lưu vào địa chỉ tương ứng.
Ví dụ: Kênh A: AIW0
Kênh B: AIW2
Kênh C: AIW4
Kênh D: AIW6
68
Đọc tín hiệu Analog:
Để đọc tín hiệu analog ta cần xác định tín hiệu analog là loại gì (0-10V, 4-20mA, cách
đấu 2 dây, 4 dây) .
Bước kế tiếp là phải chọn đúng loại tín hiệu trên phần cứng ( Chọn loại tín hiệu trên
Modul đọc kênh analog) và chọn cấu hình phần cứng phù hợp
Xác định tín hiệu đơn cực hay lưỡng cực
Xác định địa chỉ cho từng kênh analog ( vd: PIW 256)
Sử dụng hàm SCALE ( với S7-300) như sau :
Trước khi thực thi:
IN- MW=22
HI_LIM- MD20=100.0
LO_LIM- MD30=0.0
OUT- MD40=0.0
BIPOLAR – I2.0= TRUE
Sau khi thực thi:
OUT- MD40=50.03978
Hàm SCALE sẽ thực hiện việc cân chỉnh tín hiệu ở IN kết quả lưu trữ ở OUT
OUT = (Float(IN)-K1)/(K2-K1)*(HI_LIM – LO_LIM)+ LO_LIM
Tín hiệu BIPOLAR K1= - 27648 , K2= +27648
Tín hiệu UNBIPOLAR K1= 0 , K2= +27648
RET_VAL trả về lỗi nếu hàm SCALE có vấn đề.
Câu hỏi ôn tập chương 5:
1. Chuẩn hoá giá trị đo modul analog có ý nghĩa gì ?
2. Các địa chỉ vùng nhớ nào dùng lưu trữ các giá trị analog?
69
Tài liệu tham khảo
[1]. Nguyễn Doãn Phước, Phan Xuân Minh- Tự động hoá với Simatic S7-200 – NXB
Nông Nghiệp Hà nội – 2002.
[2]. S7-200 Progammable Controller System Manual – Siemens.
[3]. Tài liệu thực hành PLC S7-200 - Trung Tâm Việt Đức.
[4]. Tài liệu trực tuyến: www.siemens.com.
70
Các file đính kèm theo tài liệu này:
- bai_giang_dieu_khien_lap_trinh_i_nguyen_dinh_hoang.pdf