Você está na página 1de 56

GIỚI THIỆU BỘ PLC CỦA SIMATIC S7-200

I. Tổng quát về PLC


1. Giới thiệu PLC
PLC viết tắt của Programmable Logic Controller , là thiết bị
điều khiển lập trình được (khả trình) cho phép thực hiện linh hoạt
các thuật toán điều khiển logic thông qua một ngôn ngữ lập trình.
Người sử dụng có thể lập trình để thực hiện một loạt trình tự các
sự kiện. Các sự kiện này được kích hoạt bởi tác nhân kích thích
(ngõ vào) tác động vào PLC hoặc qua các hoạt động có trễ như
thời gian định thì hay các sự kiện được đếm. Một khi sự kiện được
kích hoạt thật sự, nó bật ON hay OFF thiết bị điều khiển bên ngoài
được gọi là thiết bị vật lý. Một bộ điều khiển lập trình sẽ liên tục
“lặp” trong chương trình do “người sử dụng lập ra” chờ tín hiệu ở
ngõ vào và xuất tín hiệu ở ngõ ra tại các thời điểm đã lập trình.
Để khắc phục những nhược điểm của bộ điều khiển dùng dây
nối ( bộ điều khiển bằng Relay) người ta đã chế tạo ra bộ PLC
nhằm thỏa mãn các yêu cầu sau :
♦ Lập trình dể dàng , ngôn ngữ lập trình dể học .
♦ Gọn nhẹ, dể dàng bảo quản , sửa chữa.
♦ Dung lượng bộ nhớ lớn để có thể chứa được những
chương trình phức tạp .
♦ Hoàn toàn tin cậy trog môi trường công nghiệp .
♦ Giao tiếp được với các thiết bị thông minh khác
như : máy tính , nối mạng , các môi Modul mở rộng.
♦ Giá cả cá thể cạnh tranh được.
Các thiết kế đầu tiên là nhằm thay thế cho các phần cứng
Relay dây nối và các Logic thời gian .Tuy nhiên ,bên cạnh đó việc
đòi hỏi tăng cường dung lượng nhớ và tính dể dàng cho PLC mà
vẫn bảo đảm tốc độ xử lý cũng như giá cả … Chính điều này đã gây
ra sự quan tâm sâu sắc đến việc sử dụng PLC trong công nghiệp .
Các tập lệnh nhanh chóng đi từ các lệnh logic đơn giản đến các
lệnh đếm , định thời , thanh ghi dịch … sau đó là các chức năng
làm toán trên các máy lớùn … Sự phát triển các máy tính dẫn đến
các bộ PLC có dung lượng lớn , số lượng I / O nhiều hơn.
Trong PLC, phần cứng CPU và chương trình là đơn vị cơ bản
cho quá trình điều khiển hoặc xử lý hệ thống. Chức năng mà bộ
điều khiển cần thực hiện sẽ được xác định bởi một chương trình .
Chương trình này được nạp sẵn vào bộ nhớ của PLC, PLC sẽ thực
hiện viêïc điều khiểûn dựa vào chương trình này. Như vậy nếu
muốn thay đổi hay mở rộng chức năng của qui trình công nghệ , ta
chỉ cần thay đổi chương trình bên trong bộ nhớ của PLC . Việc thay
đổi hay mở rộng chức năng sẽ được thực hiện một cách dể dàng
mà không cần một sự can thiệp vật lý nào so với các bộ dây nối
hay Relay .
2. Cấu trúc , nguyên lý hoạt động của PLC
a. Cấu trúc
Tất cả các PLC đều có thành phần chính là :
Một bộ nhớ chương trình RAM bên trong ( có thể mở rộng
thêm một số bộ nhớ ngoài EPROM ).
Một bộ vi xử lý có cổng giao tiếp dùng cho việc ghép nối với
PLC .
Các Modul vào /ra.
Bên cạnh đó, một bộ PLC hoàn chỉnh còn đi kèm thêm môït
đơn vị lập trình bằng tay hay bằng máy tính. Hầu hết các đơn vị
lập trình đơn giản đều có đủ RAM để chứa đựng chương trình dưới
dạng hoàn thiện hay bổ sung . Nếu đơn vị lập trình là đơn vị xách
tay , RAM thường là loại CMOS có pin dự phòng, chỉ khi nào
chương trình đã được kiểm tra và sẳn sàng sử dụng thì nó mới
truyền sang bộ nhớ PLC . Đối với các PLC lớn thường lập trình trên
máy tính nhằm hổ trợ cho việc viết, đọc và kiểm tra chương trình .
Các đơn vị lập trình nối với PLC qua cổng RS232, RS422, RS458, …
b. Nguyên lý hoạt động của PLC
 Đơn vị xử lý trung tâm
CPU điều khiển các hoạt động bên trong PLC. Bộ xử lý sẽ
đọc và kiểm tra chương trình được chứa trong bộ nhớ, sau đó sẽ
thực hiện thứ tự từng lệnh trong chương trình , sẽ đóng hay ngắt
các đầu ra. Các trạng thái ngõ ra ấy được phát tới các thiết bị liên
kết để thực thi. Và toàn bộ các hoạt động thực thi đó đều phụ
thuộc vào chương trình điều khiển được giữ trong bộ nhớ.
 Hệ thống bus
Hệ thống Bus là tuyến dùng để truyền tín hiệu, hệ thống
gồm nhiều đường tín hiệu song song :
Address Bus : Bus địa chỉ dùng để truyền địa chỉ đến các
Modul khác nhau.
Data Bus : Bus dùng để truyền dữ liệu.
Control Bus : Bus điều khiển dùng để truyền các tín hiệu
định thì và điểu khiển đồng bộ các hoạt động trong PLC .
Trong PLC các số liệu được trao đổi giữa bộ vi xử lý và các
modul vào ra thông qua Data Bus. Address Bus và Data Bus gồm 8
đường, ở cùng thời điểm cho phép truyền 8 bit của 1 byte một
cách đồng thời hay song song.
Nếu môït modul đầu vào nhận được địa chỉ của nó trên
Address Bus , nó sẽ chuyển tất cả trạnh thái đầu vào của nó vào
Data Bus. Nếu một địa chỉ byte của 8 đầu ra xuất hiện trên
Address Bus, modul đầu ra tương ứng sẽ nhận được dữ liệu từ
Data bus. Control Bus sẽ chuyển các tín hiệu điều khiển vào theo
dõi chu trình hoạt động của PLC .
Các địa chỉ và số liệu được chuyển lên các Bus tương ứng
trong một thời gian hạn chế.
Hêï thống Bus sẽ làm nhiệm vụ trao đổi thông tin giữa CPU,
bộ nhớ và I/O . Bên cạch đó, CPU được cung cấp một xung Clock có
tần số từ 1÷ 8 MHZ. Xung này quyết định tốc độ hoạt động của PLC
và cung cấp các yếu tố về định thời, đồng hồ của hệ thống.
 Bộ nhớ
PLC thường yêu cầu bộ nhớ trong các trường hợp :
Làm bộ định thời cho các kênh trạng thái I/O.
Làm bộ đệm trạng thái các chức năng trong PLC như định
thời, đếm, ghi các Relay.
Mỗi lệnh của chương trình có một vị trí riêng trong bộ nhớ,
tất cả mọi vị trí trong bộ nhớ đều được đánh số, những số này
chính là địa chỉ trong bộ nhớ .
Địa chỉ của từng ô nhớ sẽ được trỏ đến bởi một bộ đếm địa
chỉ ở bên trong bộ vi xử lý. Bộ vi xử lý sẽ giá trị trong bộ đếm này
lên một trước khi xử lý lệnh tiếp theo . Với một địa chỉ mới , nội
dung của ô nhớ tương ứng sẽ xuất hiện ở đấu ra, quá trình này
được gọi là quá trình đọc .
Bộ nhớ bên trong PLC được tạo bỡi các vi mạch bán dẫn, mỗi
vi mạch này có khả năng chứa 2000 ÷ 16000 dòng lệnh , tùy theo
loại vi mạch. Trong PLC các bộ nhớ như RAM, EPROM đều được sử
dụng .
RAM (Random Access Memory ) có thể nạp chương trình,
thay đổi hay xóa bỏ nội dung bất kỳ lúc nào. Nội dung của RAM sẽ
bị mất nếu nguồn điện nuôi bị mất . Để tránh tình trạng này các
PLC đều được trang bị một pin khô, có khả năng cung cấp năng
lượng dự trữ cho RAM từ vài tháng đến vài năm. Trong thực tế
RAM được dùng để khởi tạo và kiểm tra chương trình. Khuynh
hướng hiện nay dùng CMOSRAM nhờ khả năng tiêu thụ thấp và
tuổi thọ lớn .
EPROM (Electrically Programmable Read Only Memory) là bộ
nhớ mà người sử dụng bình thường chỉ có thể đọc chứ không ghi
nội dung vào được . Nội dung của EPROM không bị mất khi mất
nguồn , nó được gắn sẵn trong máy , đã được nhà sản xuất nạp và
chứa hệ điều hành sẵn. Nếu người sử dụng không muốn mở rộng
bộ nhớ thì chỉ dùng thêm EPROM gắn bên trong PLC . Trên PG
(Programer) có sẵn chổ ghi và xóa EPROM.
Môi trường ghi dữ liệu thứ ba là đĩa cứng hoạc đĩa mềm,
được sử dụng trong máy lập trình . Đĩa cứng hoăïc đĩa mềm có
dung lượng lớn nên thường được dùng để lưu những chương trình
lớn trong một thời gian dài .
Kích thước bộ nhớ :
♦ Các PLC loại nhỏ có thể chứa từ 300 ÷1000 dòng lệnh
tùy vào công nghệ chế tạo .
♦ Các PLC loại lớn có kích thước từ 1K ÷ 16K, có khả năng
chứa từ 2000 ÷16000 dòng lệnh.
Ngoài ra còn cho phép gắn thêm bộ nhớ mở rộng như RAM ,
EPROM.
 Các ngỏ vào ra I / O
Các đường tín hiệu từ bộ cảm biến được nối vào các modul
( các đầu vào của PLC ) , các cơ cấu chấp hành được nối với các
modul ra ( các đầu ra của PLC ) .
Hầu hết các PLC có điện áp hoạt động bên trong là 5V , tín
hiêïu xử lý là 12/24VDC hoặc 100/240VAC.
Mỗi đơn vị I / O có duy nhất một địa chỉ, các hiển thị trạng
thái của các kênh I / O được cung cấp bỡi các đèn LED trên PLC ,
điều này làm cho việc kiểm tra hoạt động nhập xuất trở nên dể
dàng và đơn giản .
Bộ xử lý đọc và xác định các trạng thái đầu vào (ON,OFF) để
thực hiện việc đóng hay ngắt mạch ở đầu ra .
3. Các hoạt động xử lý bên trong PLC
a. Xử lý chương trình
Khi một chương trình đã được nạp vào bộ nhớ của PLC , các
lệnh sẽ được trong một vùng địa chỉ riêng lẻ trong bộ nhớ .
PLC có bộ đếm địa chỉ ở bên trong vi xử lý, vì vậy chương
trình ở bên trong bộ nhớ sẽ được bộ vi xử lý thực hiện một cách
tuần tự từng lệnh một, từ đầu cho đến cuối chương trình . Mỗi lần
thực hiện chương trình từ đầu đến cuối được gọi là một chu kỳ
thực hiện. Thời gian thực hiện một chu kỳ tùy thuộc vào tốc độ xử
lý của PLC và độ lớn của chương trình. Một chu lỳ thực hiện bao
gồm ba giai đoạn nối tiếp nhau :
♦ Đầu tiên, bộ xử lý đọc trạng thái của tất cả đầu vào.
Phần chương trình phục vụ công việc này có sẵn trong PLC
và được gọi là hệ điều hành .
♦ Tiếp theo, bộ xử lý sẽ đọc và xử lý tuần tự lệnh một
trong chương trình. Trong ghi đọc và xử lý các lệnh, bộ vi
xử lý sẽ đọc tín hiệu các đầu vào, thực hiện các phép toán
logic và kết quả sau đó sẽ xác định trạng thái của các đầu
ra.
♦ Cuối cùng, bộ vi xử lý sẽ gán các trạng thái mới cho các
đầu ra tại các modul đầu ra.
b. Xử lý xuất nhập
Gồm hai phương pháp khác nhau dùng cho việc xử lý I / O
trong PLC :
 Cập nhật liên tục
Điều nay đòi hỏi CPU quét các lệnh ngỏ vào (mà chúng xuất
hiện trong chương trình ), khoảng thời gian Delay được xây dựng
bên trong để chắc chắn rằng chỉ có những tín hiệu hợp lý mới được
đọc vào trong bộ nhớ vi xử lý. Các lệnh ngỏ ra được lấùy trực tiếp
tới các thiết bị. Theo hoạt động logic của chương trình , khi lệnh
OUT được thực hiện thì các ngỏ ra cài lại vào đơn vị I / O, vì thế
nên chúng vẫn giữ được trạng thái cho tới khi lần cập nhật kế tiếp.
 Chục ảnh quá trình xuất nhập
Hầu hết các PLC loại lơn có thể có vài trăm I / O, vì thế CPU
chỉ có thể xử lý một lệnh ở một thời điểm . Trong suốt quá trình
thực thi, trạng thái mỗi ngõ nhập phải được xét đến riêng lẻ nhằm
dò tìm các tác động của nó trong chương trình. Do chúng ta yêu
cầu relay 3ms cho mỗi ngõ vào, nên tổng thời gian cho hệ thống
lấy mẫu liên tục trở nên rất dài và tăng theo số ngõ vào.
Để làm tăng tốc độ thực thi chương trình, các ngõ I / O được
cập nhật tới một vùng đặc biệt trong chương trình. Ở đây, vùng
RAM đặc biệt này được dùng như một bộ đệm lưu trạng thái các
logic điều khiển và các đơn vị I / O. Mỗi ngõ vào ra đều có một địa
chỉ I / O RAM này. Suốt quá trình copy tất cả các trạng thái vào
trong I / O RAM. Quá trình này xảy ra ở một chu kỳ chương trình
(từ Start đến End ).
Thời gian cập nhật tất cả các ngõ vào ra phụ thuộc vào tổng
số I/O được copy tiêu biểu là vài ms. Thời gian thực thi chương
trình phụ thuộc vào chiều dài chương trình điều khiển tương ứng
mỗi lệnh mất khoảng từ 1÷ 10 µ s.
II. PLC SIMATIC S7-200 CPU 214
1. Cấu trúc phần cứng của CPU 214
S7-200 là thiết bị điều khiển logic khả trình loại nhỏ của Hãng
SIEMNS (CHLB Đức) có cấu trúc theo kiểu Modul và có các modul
mở rộng. Các modul này được sử dụng cho nhiều ứng dụng lập
trình khác nhau. Thành phần cơ bản của S7-200 là khối vi xử lý
CPU-214.
♦ CPU-214 bao gồm 14 ngõ vào và 10 ngõ ra, có khả năng
thêm 7 modul mở rộng.
♦ 2.048 từ đơn (4 Kbyte) thuộc miền nhớ đọc / ghi non-
volatile để lưu chương trình (vùng nhớ có giao diện với
EEPROM).
♦ 2.048 từ đơn (4 Kbyte) thuộc kiểu đọc ghi để lưu dữ
liệu, trong đó 512 từ đầu thuộc miền non-volatile.
♦ Tổng số ngõ vào / ra cực đại là 64 ngõ vào và 64 ngõ ra.
♦ 128 Timer chia làm 3 loại theo độ phân giải khác nhau:
4 Timer 1ms, 16 Timer 10ms và 108 Timer 100ms.
♦ 128 bộ đếm chia làm 2 loại: chỉ đếm tiến và vừa đếm
tiến vừa đếm lùi.
♦ 688 bít nhớ đặc biệt dùng để thông báo trạng thái và
đặt chế độ làm việc.
♦ Các chế độ xử lý ngắt gồm: ngắt truyền thông, ngắt
theo sườn lên hoặc xuống, ngắt thời gian, ngắt của bộ đếm
tốc độ cao và ngắt truyền xung.
♦ 3 bộ đếm tốc độ cao với nhịp 2Khz và 7 Khz.
♦ 2 bộ phát xung nhanh cho dãy xung kiểu PTO hoặc kiểu
PWM.
♦ 2 bộ điều chỉnh tương tự
♦ Toàn bộ vùng nhớ không bị mất dữ liệu trong khoảng
thời gian 190 giờ kể từ khi PLC bị mất nguồn cung cấp.
Các đèn báo trên S7-200 CPU214
♦ SF (đèn đỏ): Đèn đỏ SF báo hiệu hệ thống bị hỏng.
♦ RUN (đèn xanh): Đèn xanh RUN chỉ định PLC đang
ở chế độ làm việc và thực hiện chương trình được nạp vào
trong máy.
♦ STOP (đèn vàng): Đèn vàng STOP chỉ định rằng
PLC đang ở chế độ dừng chương trình và đang thực hiện lại.
 Cổng vào ra
♦ Ix.x (đèn xanh): Đèn xanh ở cổng vào báo hiệu
trạng thái tức thời của cổng Ix.x. Đèn này báo hiệu trạng thái
của tín hiệu theo giá trị Logic của công tắc.
♦ Qx.x (đèn xanh): Đèn xanh ở cổng ra báo hiệu
trạng thái tức thời của cổng Qx.x. Đèn này báo hiệu trạng
thái của tín hiệu theo giá trị logic của cổng.

 Chế độ làm việc


PLC có 3 chế độ làm việc:
♦ RUN: cho phép PLC thực hiện chương trình từng bộ
nhớ, PLC sẽ chuyển từ RUN sang STOP nếu trong máy có sự
cố hoặc trong chương trình gặp lệnh STOP.
♦ STOP: Cưởng bức PLC dừng chương trình đang
chạy và chuyển sang chế độ STOP.
♦ TERM: Cho phép máy lập trình tự quyết định chế
độ hoạt động cho PLC hoặc RUN hoặc STOP.
 Cổng truyền thông
S7-200 sử dụng cổng truyền thông nối tiếp RS485 với phích
nối 9 chân để phục vụ cho việc ghép nối với thiết bị lập trình
hoặc với các trạm PLC khác. Tốc độ truyền cho máy lập trình kiểu
PPI là 9600 baud. Tốc độ truyền cung cấp của PLC theo kiểu tự do
là 300 ÷ 38.400 baud.
Để ghép nối S7-200 với máy lập trình PG702 hoặc các loại
máy lập trình thuộc họ PG7xx 1 có thể dùng một cáp nối thẳng MPI.
Cáp đó đi kèm với máy lập trình.
Ghép nối S7-200 với máy tính PC qua cổng RS232 cần có cáp
nối PC / PPI với bộ chuyển đổi RS232 / RS485.
Chân Giải thích

Ñaát
1
24 VDC
2

·····
5 4 3 2 1 Truyeàn vaø nhaän döõ lieäu
3
Khoâng söû duïng
4
Ñaát
5
····
9 8 7 6 5 VDC (ñieän trôû trong
6
100Ω)
7
24 VDC (120 mA toái ña)
8
Truyeàn vaø nhaän döõ lieäu
2. Cấu trúc bộ nhớ 9
Khoâng söû duïng
Boä nhôù S7-200 ñöôïc chia thaønh 4 vuøng vôùi 1 tuï
coù nhieäm vuï duy trì döõ lieäu trong moät khoaûng thôøi
gian nhaát ñònh khi maát nguoàn. Boä nhôù S7-200 coù tính
naêng ñoäng cao, ñoïc, ghi ñöôïc trong toaøn vuøng, loaïi
tröø caùc bit nhôù ñaëc bieät SM (Special memory) chæ coù
theå truy nhaäp ñeå ñoï

EEPROM MIỀN NHỚ NGOÀI

Chương trình Chương Chương


trình trình
Tuï Tham số Tham số Tham số
Dữ liệu Dữ liệu Dữ liệu
Vùng đối
tượng


Vùng chương trình
Là nguồn nhờ được sử dụng để lưu giữ các lệnh chương
trình. Vùng này thuộc kiểu non-volatile đọc / ghi được.

Vùng tham số
Là miền lưu giữ các tham số như: từ khóa, địa chỉ trạm, …
cũng giống như vùng chương trình, thuộc kiểu non-volatile đọc /
ghi được.
♦ Vùng dữ liệu
Là miền nhớ động được sử dụng để cất giữ các dữ liệu của
chương trình. Nó có thể được truy cập theo từng bít, từng byte,
từng từ đơn (W-Word) hoặc theo từ kép (DW_ Double Word),
vùng dữ liệu được chia thành những miền nhớ nhỏ với các công
dụng khác nhau. Chúng được ký hiệu bằng chữ cái đầu theo từ
tiếng Anh, đặc trưng cho công dụng riêng của chúng như sau:
V : Variable Memory.
I : Input image register.
O : Output image regiter.
M : Internal Memory bits.
SM : Special Memory bits.
Tất cả các miền này đều có thể truy nhập theo từng bít,
từng byte, từng từ (word) hoặc từ kép (double word).
♦ Vùng đối tượng
Bao gồm các thanh ghi Timer, bộ đếm tốc độ cao, bộ đệm
vào ra, thanh ghi AC. Vùng này không thuộc kiểu Non-Volatile
nhưng đọc / ghi được .
3. Mở rộng cổng vào ra
CPU 214 cho phép mở rộng nhiều nhất 7 Modul. Các modul
mở rộng tương tự và có thể mở rộng cổng vào của PLC bằng cách
ghép nối thêm vào nó các modul mở rộng về phía bên phải của
CPU, làm thành một móc xích . Địa chỉ của các vị trí của các modul
được xác định cùng kiểu . Ví dụ như một modul cổng ra không thể
gán địa chỉ của một modul cổng vào, cũng như một modul tương
tự không thể có địa chỉ như một modul số và ngược lại .
Các modul mở rộng số hay tương tự đều chiếm chổ trong bộ
đệm, tương tự với số đầu vào/ra của modul .

Sau đây là địa chỉ của một số modul mở rộng trên CPU214
Modul Modul Modul Modu Modul
CPU214 0 1 2 3 4
4vào/4 8 vào 3vào/1 8 ra 3vào/1
a a a
Analo
g
I0.0 I2.0 I3.0 AIW 0 Q3.0 AIW8
Q0.0 I2.1 I3.1 AIW 2 Q3.1 AIW12
I0.1 I2.2 I3.2 AIW 4 Q3.2 AQW 4
Q0.1
I2.3 I3.3 Q3.3
I0.2
Q2.0 I3.4 Q3.4
Q0.2
Q2.1 I3.5 AQW 0 Q3.5
I0.3
Q0.3 Q2.2 I3.6 Q3.6
I0.4 Q2.3 I3.7 Q3.7
Q0.4
I0.5
Q0.5
I0.6
Q0.6
I0.7
Q0.7
I1.0
Q1.0
I1.1
Q1.1
I1.2
I1.3
I1.4
I1.5

4. Cấu trúc chương trình của S7-200


Có thể được lập trình cho PLC S7-200 bằng cách sử dụng một
trong các phần mềm :
Step 7 – Micro / Dos
Step 7 – Micro / Win
Những phần mềm này đều có thể cài đặt được trên các máy
lập trình họ
PG 7xx và các máy tính cá nhân.
Các chương trình cho S7-200 phải có cấu trúc bao gồm chương
trình chính (main program) và sau đó đến các chương trình con và
các chương trình xử lý ngắt.
Chương trình chính được kết thúc bằng lệnh kết thúc chương
trình (MEND).
Chương trình con là một bộ phận của chương trình, các
chương trình phải được viết sau lệnh kết thúc chương trình đó là
lệnh MEND.
Các chương trình xử lý ngắt cũng là một bộ phận của chương
trình. Nếu cần sử dụng phải viết sau lệnh kết thúc chương trình
chính (MEND).
Các chương trình được nhóm lại thành một nhóm ngay sau
chương trình chính, sau đó đến các chương trình xử lý ngắt. Cũng
có thể do trộn lẫn các chương trình con và chương trình xử lý ngắt
ở sau chương trình chính
Main program
MEND Thực hiện trong vòng quét

SBRO Chương trình con thứ Thực hiện khi chương trình chính
nhất gọi
RET
SBRn Chương trình thứ n+1
RET

INT 0 Chương trình xử lý ngắt


thứ nhất
RET I
INT n Chương trình xử lý ngắt
thứ n+1
REThiện
5. Thực I chương trình của S7-200
PLC thực hiện chương trình theo chu kỳ lặp. Mỗi vòng lặp
được gọi là vòng quét (scan). Mỗi vòng quét được bắt đầu bằng
giai đoạn đọc các dữ liệu từ các cổng vào vùng bộ đệm ảo, tiếp
theo là giai đoạn thực hiện chương trình. Trong từng vòng quét,
chương trình được thực hiện bằng lệnh đầu tiên và kết thúc tại
lệnh kết thúc MEND. Sau giai đoạn thực hiện chương trình là giai
đoạn truyền thông nội bộ và kiểm lỗi. Vòng quét được kết thúc
bằng giai đoạn chuyển các nội dung của bộ đệm ảo tới các cổng
ra.

4. Chuyển dữ liệu từ bộ 1. Nhập dữ liệu từ


đệm ảora ngoại vi ngoại vi vào
.

3. Truyền thông và 2.Thực hiện


tựNhư
kiểmvậy tại thời điểm thực hiện lệnh vào
tra lỗi / ra trình
chương thông thường
lệnh không làm việc trực tiếp cổng vào ra mà chỉ thông qua bộ
đệm ảo của cổng trong vùng nhớ tham số. Việc truyền thông giữa
bộ đệm ảo với ngoại vi trong các giai đoạn (1) và (4) do CPU quản
lý. Khi gặp lệnh vào / ra ngay lập tức hệ thống sẽ cho dừng mọi
công việc khác, ngay cả chương trình xử lý ngắt để thực hiện lệnh
này trực tiếp với cổng vào và ra.
Nếu sử dụng các chế độ ngắt chương trình tương ứng với từng
tín hiệu ngắt được soạn thảo và cài đặt như một bộ phận của
chương trình. Chương trình xử lý ngắt chỉ được thực hiện trong
vòng quét khi xuất hiện tín hiệu báo ngắt và có thể xảy ra ở bất cứ
điểm nào trong vòng quét.
6. Các toán hạng lập trình cơ bản
Có 6 phần tử lập trình cơ bản, mỗi phần tử có công dụng riêng.
Để dễ dàng xác định thì mỗi phần tử được gán cho mộ ký tự:
♦ I : Dùng để chỉ ngõ vào vật lý nối trực tiếp
vào PLC.
♦ Q : Dùng để chỉ ngõ ra vật lý nối trực tiếp từ PLC.
♦ T : Dùng để xác định phần tử định thời có trong PLC.
♦ C : Dùng để xác định phần tử đếm có trong PLC.
♦ M và S : Dùng như các cờ hoạt động như bên trong PLC.
Tất cả các phần tử (toán hạng) trên có hai trạng thái ON hoặc
OFF (1 hoặc 0).
Cuộn dây có thể được dùng để điều khiển trực tiếp ngõ ra từ
PLC (như phần tử Q) hoặc có thể điều khiển bộ định thì, bộ đếm
hoặc cờ (như phần tử M, S). Mỗi cuộc dây được gắn với các công
tắc. Các công tắc này có thể là thường mở hoặc thường đóng.
Các ngõ vào vật lý nối đến bộ điều khiển lập trình (phần tử I)
không có cuộn dây để lập trình. Các phần tử này chỉ có thể dùng ở
dạng các công tắc mà thôi (loại thường đóng và thường mở).
III. NGÔN NGỮ LẬP TRÌNH CỦA S7-200 CPU 214
1. Phương pháp lập trình
S7-200 biểu diễn một mạch logic cứng bằng một dãy các
lệnh lập trình. Chương trình bao gồm một dãy các tập lệnh. S7-
200 thực hiện chương trình bắt đầu từ lệnh lập trình đầu tiên và
kết thúc ở lập trình cuối trong một vòng quét (scan).
Một vòng quét (scan cyele) được bắt đầu bằng một việc đọc
trạng thái của đầu vào, và sau đó thực hiện chương trình. Vòng
quét kết thúc bằng việc thay đổi trạng thái đầu ra. Trước khi bắt
đầu một vòng quét tiếp theo S7-200 thực thi các nhiệm vụ bên
trong và nhiệm vụ truyền thông. Chu trình thực hiện chương trình
là chu trình lặp.
Cách lập trình cho S7-200 nói riêng và cho các PLC nói chung
dựa trên hai phương pháp cơ bản. Phương pháp hình thang
(Ladder, viết tắt là LAD) và phương pháp liệt kê lệnh (Statement
list, viết tắt là STL).
Nếu có một chương trình viết dưới dạng LAD, thiết bị lập trình
sẽ tự dộng tạo ra một chương trình theo dạng STL tương ứng.
Ngược lại không phải mọi chương trình viết dưới dạng STL đều có
thể chuyển sang được dạng LAD.
 Phương pháp hình thang (LAD): LAD là một ngôn ngữ lập trình
bằng đồ họa, những thành phần cơ bản dùng trong LAD tương
ứng với các thành phần của bảng điều khiển bằng rơ le. Trong
chương trình LAD, các phần tử cơ bản dùng để biểu diễn lệnh
logic như sau:
♦ Tiếp điểm: Là biểu tượng (Symbol) mô tả các tiếp
điểm của rơ le
Tiếp điểm thường mở

Tiếp điểm thương đóng


♦ Cuộn dây (coil): Là biểu tượng ( ) mô tả rơ le được
mắc theo chiều dòng điện cung cấp cho rơ le.
♦ Hộp (Box): Là biểu tượng mô tả các hàm khác nhau, nó
làm việc khi có dòng điện chạy đến hộp. Những dạng hàm
thường được biểu diễn bằng hộp là các bộ thời gian (Timer),
bộ đếm (counter) và các hàm toán học. Cuộn dây và các hộp
phải mắc đúng chiều dòng điện.
Mạng LAD: Là đường nối các phần tử thành một mạch hoàn
thiện, đi từ đường nguồn bên trái sang đường nguồn bên phải.
Đường nguồn bên trái là dây pha, đường nguồn bên phải là dây
trung hòa và cũng là đường trở về nguồn cung cấp (thường không
được thể hiện khi dùng chương trình tiện dụng STEPT MICRO / DOS
hoặc STEPT – MICRO/WIN. Dòng điện chạy từ trái qua tiếp điểm
đến đóng các cuộn dây hoặc các hộp trở về bên phải nguồn.
 Phương pháp liệt kê lệnh (STL): Là phương pháp thể hiện
chương trình dưới dạng tập hợp các câu lệnh. Mỗi câu lệnh
trong chương trình, kể cả những lệnh hình thức biểu diễn một
chức năng của PLC.
2. Các toán hạng và giới hạn cho phép của CPU 214

Phương pháp truy Giới hạn cho phép của các


nhập toán hạng
Truy nhập bit (địa chỉ V (0.0 ÷ 4095.7)
byte, chỉ số bit)
I (0.0 ÷ 7.7)
Q (0.0 ÷ 7.7)
M (0.0 ÷ 31.7)
SM (0.0 ÷ 85.7)
T (0 ÷ 127)
C (0 ÷ 127)
Truy nhập bit VB (0 ÷ 4.095)
IB (0 ÷ 7)
MB (0 ÷ 31).
SMB (0 ÷ 85)
AC (0 ÷ 3)
Hằng số
Truy nhập từ đơn VW (0 ÷ 4094)
T (0 ÷ 127)
C (0 ÷ 127)
IW (0 ÷ 6)
QW (0 ÷ 6)
MW (0 ÷ 30)
SMW (0 ÷ 84)
AC (0 ÷ 3)
AIW (0 ÷ 30)
AQW (0 ÷ 30)
Hằng số
Truy nhập từ kép VD (0 ÷ 4092)
ID (0 ÷ 4)
QD (0 ÷ 4)
MD (0 ÷ 28)
SMD (0 ÷ 82)
AC (0 ÷ 3)
HC (0 ÷ 2)
Hằng số.

3. Một số lệnh cơ bản dùng trong lập trình


3.1. Các lệnh vào ra
* Load (LD): Lệnh LD nạp giá trị logic của một tiếp điểm vào
trong bít đầu tiên của ngăn xếp (xem hình a), các giá trị cũ còn lại
trong ngăn xếp bị đẩy lùi xuống một bít.
• Load Not (LDN): Lệnh LDN nạp giá trị logic nghịch đảo của
một tiếp điểm vào trong bít đầu tiên của ngăn xếp (xem hình
b), các giá trị còn lại trong ngằn xếp bị đẩy lùi xuống một bít.
Trước LD Sau
c0 M
c1 c0
c2 c1
c3 c2
c4 c3

Bò ñaåy ra khoûi ngaên xeáp


c5 c4
c6 c5
c7 c6
c8 c7
Hình a: Trạng thái của ngăn xếp trước và sau khi thực hiện lệnh
LD
Trước LDN Sau
c0 ∼m
c1 c0
c2 c1
c3 c2
c4 c3
c5 c4
c6 c5
c7 c6
c8 c7
Bị đẩy ra khỏi ngăn xếp
Hình b: Trạng thái của ngăn xếp trước và sau khi thực hiện lệnh
LDN.
Các dạng khác nhau của lệnh LD, LDN cho LAD như sau:
LAD Mô tả Toán hạng
LD Tiếp điểm thường n: I, Q, M, SM, T,
n mở sẽ được đóng C, V
nếu n = 1. (bit)
LDN n Tiếp điểm thường
đóng sẽ mở khi n =
1.

LDI n Tiếp điểm thường n: I


mở sẽ đóng tức
thời khi n = 1
LDNI n Tiếp điểm thường
đóng sẽ mở tức thời
khi n = 1

Các dạng khác nhau của lệnh LD, LDN cho STL như sau:
Lệnh Mô tả Toán hạng
LD n Lệnh nạp giá trị n (bít): I, Q, M,
logic của điểm n SM, T, C, V
vào bít đầu tiên
trong ngăn xếp.
LDN n Lệnh nạp giá trị
logic nghịch đảo
của điểm n vào bít
đầu tiên trong ngăn
xếp.
LDI n Lệnh nạp tức thời n: I
giá trị logic của
điểm n vào bít đầu
tiên trong ngăn
xếp.
LDNI Lệnh nạp tức thời
n giá trị logic nghịch
đảo của điểm n vào
bít đầu tiên trong
ngăn xếp.

OUTPUT (=)
Lệnh sao chép nội dung của bít đầu tiên trong ngăn xếp vào bít
được chỉ định trong lệnh. Nội dung của ngăn xếp không bị thay
đổi.
Mô tả lệnh bằng LAD như sau:
LAD Mô tả Toán hạng
n Cuộn dây đầu ra ở n: I, Q, M, SM, T,
( ) trạng thái kích thích C, V
khi có dòng điều (bít)
khiển đi qua.
n Cuộn dây đầu ra n: Q
( ) được kích thích tức (bít)
( ) thời khi có dòng điều
khiển đi qua.
Mô tả bằng lệnh STL như sau:
STL Mô tả Toán hạng
Lệnh = sao chép giá n: I, Q, M, SM,
= n trị của đỉnh ngăn xếp T, C, V
tới tiếp điểm n được (bít)
chỉ dẫn trong lệnh.
Lệnh = I (immediate) n: Q
= In sao chép tức thời giá (bít)
trị của đỉnh stack tới
tiếp điểm n được chỉ
dẫn trong lệnh.

3.2. Các lệnh ghi / xóa giá trị cho tiếp điểm
SET (S) ; RESET (R):
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
Đóng một mảng gồm S BIT: I, Q, M,
S BIT n n các tiếp điểm kể từ S SM, T, C, V
(S) BIT n(byte): IB, QB,
MB, SMB, VB,AC,
Hằng số, *VD, *AC
Đóng một mảng gồm
S BIT n n các tiếp điểm kể từ S
(R) BIT. Nếu S 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 S BIT: Q
( SI ) mảng gồm n các tiếp
điểm kể từ S BIT
N(byte): IB, QB,
MB, SMB, VB,AC,
Ngắt tức thời một Hằng số, *VD, *AC
S BIT n mảng gồm n các tiếp
( RI ) điểm kể từ địa chỉ S
BIT

STL Mô tả Toán hạng


S S BIT n Ghi giá trị logic vào S BIT: I, Q, M,
một mảng gồm n bít kể SM, T, C, V
từ địa chỉ S BIT (bit)
R S BIT n Xóa một mảng gồm n
bít kể từ địa chỉ S BIT. n: IB, QB, MB,
Nếu S BIT lại chỉ vào SMB, VB
Timer hoặc Counter thì
(byte) AC, Hằng
lệnh sẽ xóa bít đầu ra
số, *VD, *AC
của Timer / Counter.
SI S BIT Ghi tức thời giá trị S BIT: Q
n logic 1 vào một mảng (bit)
gồm n bít kể từ địa chỉ
S BIT
n: IB, QB, MB,
RI S BIT Xóa tức thời một SMB, VB (byte)
n mảng gồm n bít kể từ
(byte) AC, Hằng
địa chỉ S BIT
số, *VD, *AC

3.3. Các lệnh logic đại số (BOOLEAN)


Các lệnh tiếp điểm đại số Boolean cho phép tạo lập được các
mạch logic (không có nhớ). Trong LAD các lệnh này được biểu diễn
thông qua cấu trúc mạch, mắc nối tiếp hay song song các tiếp
điểm thường đóng và các tiếp điểm thường mở. STL có thể sử
dụng các lệnh A (And) và O (Or) cho các hàm hở hoặc các lệnh AN
(And Not), ON (Or Not) cho các hàm kín.
Giá trị của ngăn xếp thay đổi phụ thuộc vào từng lệnh.
Lệnh Mô tả Toán hạng
Lệnh thực hiện toán tử ^ n: I, Q, M, SM, T,
O n (A) và V (O) giữa giá trị logic C, V
của tiếp điểm n và giá trị bít (bit)
A n đầu tiên trong ngằn xếp.
Kết quả được ghi lại bít đầu
trong ngăn xếp.
Lệnh thực hiện toán tử ^
AN n (A) và V (O) giữa giá trị logic
nghịch đảo của tiếp điểm n
ON n và giá trị bít đầu tiên trong
ngằn xếp. Kết quả được ghi
lại bít đầu trong ngăn xếp.
Lệnh thực hiện tức thời n: 1
AI n toán tử ^ (A) và V (O) giữa (bit)
giá trị logic của tiếp điểm n
OI n và giá trị bít đầu tiên trong
ngằn xếp. Kết quả được ghi
lại bít đầu trong ngăn xếp.
Lệnh thực hiện tức thời
ANI n toán tử ^ (A) và V (O) giữa
giá trị logic nghịch đảo của
ONI n tiếp điểm n và giá trị bít đầu
tiên trong ngằn xếp. Kết
quả được ghi lại bít đầu
trong ngăn xếp.

Ngoài những lệnh làm việc trực tiếp với tiếp điểm, S7-200 còn
có 5 lệnh đặc biệt biểu diễn các phép tính của đại số Boolean cho
các bit trong ngăn xếp, được gọi là các lệnh stack logic. Đó là các
lệnh ALD (And load), OLD (Or load), LPS (Logic push), LRD (Logic
read) và LPP (Logic pop). Lệnh stack logic được dùng để tổ hợp,
sao chụp hoặc xóa các mệnh đề logic. LAD không có bộ đếm dành
cho lệnh stack logic. STL sử dụng các lệnh stack logic để thực hiện
phương trình tổng thể có nhiều biểu thức con.
Bảng sao tóm tắt cú pháp gọi các lệnh stack logic trong STL.
Lệnh Mô tả Toán
hạng
ALD Lệnh tổ hợp giá trị của bít đầu tiên Không
và thứ hai của ngăn xếp bằng phép có
tính logic. Kết quả ghi lại vào bít đầu
tiên. Giá trị còn lại của ngăn xếp được
kéo lên một bít.
OLD Lệnh tổ hợp giá trị của bít đầu tiên Không
và thứ hai của ngăn xếp bằng phép có
tính logic V. Kết quả ghi lại vào bít
đầu . Giá trị còn lại của ngăn xếp
được kéo lên một bít.
LPS Lệnh logic Push (LPS) sao chụp giá Không
trị của bít đầu tiên vào bít thứ hai có
trong ngăn xếp. Giá trị còn lại bị đẩy
xuống một bít. Bít cuối cùng bị đẩy ra
khỏi ngăn xếp.
LRD Lệnh sao chép giá trị của bít thứ hai Không
vào bít đầu tiên trong ngăn xếp. Các có
giá trị còn lại của ngăn xếp giữ
nguyên vị trí.
LPP Lệnh kéo ngăn xếp lên một bít. Giá Không
trị của bít sau được chuyển cho bít có
trước.

AND (A)
OR (O)
Lệnh A và O phối hợp giá trị logic của một tiếp điểm n với giá
trị bít đầu tiên của ngăn xếp. Kết quả phép tính được đặt lại vào
bít đầu tiên trong ngăn xếp. Giá trị của các bít còn lại trong ngăn
xếp không bị thay đổi.
Luật tính toán của các phép tính logic And và Or như sau:

x y x x v
^ y y (Or)
(And)
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1

Tác động của lệnh AND và OR vào ngăn xếp như sau
Trước A Sau m= c0 ^ c1
c0 m
c1 C1
c2 C2
c3 C3
c4 C4
c5 C5
c6 C6
c7 C7
c8 C8

Trước O Sau m= c0 v c1
c0 m
c1 C1
c2 C2
c3 C3
c4 C4
c5 C5
c6 C6
c7 C7
c8 C8

AND LOAD (ALD)


OR LOAD (OLD):
Lệnh ALD và lệnh OLD thực hiện phép tính logic And và
Or giữa hai bít đầu tiên của ngăn xếp. Kết quả của phép logic
này sẽ được ghi lại vào bít đầu trong ngăn xếp. Nội dung còn
lại của ngăn xếp được kéo lên một bít.

Tác động của lệnh ALD và OLD vào ngăn xếp như sau:
Trước ALD Sau m= c0^ c1
c0 m
c1 c2
c2 c3
c3 c4
c4 c5
c5 c6
c6 c7
c7 c8
c8

Trước OLD Sau m= c0 v c1


c0 m
c1 c2
c2 c3
c3 c4
c4 c5
c5 c6
c6 c7
c7 c8
c8

LOGIC PUSH (LPS)


LOGIC 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

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 hoặc ít
điểm).
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 x v y x
(And) (Or) 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 IN1: VW, T,
ANDW IN1 logic AND giữa các bít C, IW, QW.
IN2 tương ứng của hai từ IN1 (word) SMW,
và IN2. Kết quả được ghi AC, AIW, *VD
lại vào IN2
*AC, Hằng
Lệnh thực hiện phép số.
ORW IN1 logic OR giữa các bít
IN2 tương ứng của hai từ IN1
IN2: VW, T,
và IN2. Kết quả được ghi
C, IW, QW
lại vào IN2
(word) W,
Lệnh thực hiện phép CA, AIW, *VD,
XORW IN1 logic XOR giữa các bít *AC
IN2 tương ứng của hai từ IN1
và IN2 . Kết quả được ghi
lại vào IN2
Lệnh thực hiện phép IN1: VD, ID,
ANDD IN1 logic AND giữa các bít QD, MD, SMQ.
IN2 tương ứng của hai từ kép (Dword) AC,
IN1 và IN2. Kết quả được HC, *CD,*AC
ghi lại vào IN2
Hằng số.
Lệnh thực hiện phép
ORD IN1 logic OR giữa các bít
IN2: VD, ID,
IN2 tương ứng của hai từ kép
QD, MD, SMD
IN1 và IN2. Kết quả được
ghi lại vào IN2 (Dword)AC,
*VD, *AC
Lệnh thực hiện phép
XORD IN1 logic XOR giữa các bít
IN2 tương ứng của hai từ kép
IN1 và IN2. Kết quả được
ghi lại vào IN2

Biểu diễn trong LAD


LAD Mô tả Toán hạng
Lệnh thực hiện IN1: VW, T, C,
WAND W phép tính logic IW, QW
EN AND theo từng bít (word) SMW,
của hai từ IN1 và AC, AIW, VD
IN1 IN2. Kết quả được
IN2 OUT *AC, Hằng số.
ghi vào từ OUT.
Lệnh thực hiện IN2: VW, T, C,
WOR W phép tính logic OR IW, QW,
EN giữa các bít tương (word) SMW,
ứng của hai từ IN1 AC, AIW, *VD,
IN1 và IN2. Kết quả *AC, Hằng số.
IN2 OUT được ghi vào từ
OUT.
OUT: VW, T, C,
IW, QW, MW,
Lệnh thực hiện (word) SMW,
WXOR W phép tính logic AC, *VD, *AC
EN XOR giữa các bít
tương ứng của hai
IN1
từ IN1 và IN2. Kết
IN2 OUT
quả được ghi vào
từ OUT.

Lệnh thực hiện IN1: VD, ID,


WAND DW phép tính logic QD, MD, SMW
EN
AND giữa các bít (Dword) AC,
của hai từ kép IN1 AIW, Hằng số,
IN1
và IN2. Kết quả VD, AC
IN2 OUT
được ghi vào từ
OUT.
IN2: VD, ID,
QD, MD, SMW
Lệnh thực hiện (Dword) AC,
WOR DW
EN phép tính logic OR AIW, Hằng số,
giữa các bít của *VD, *AC
IN1 hai từ kép IN1 và
IN2 OUT IN2. Kết quả được
ghi vào từ OUT. OUT: VD, ID,
QD, MD, SMD,
(Dword) AC,
Lệnh thực hiện *VD, *AC
WXOR DW
phép tính logic
EN
XOR giữa các bít
của hai từ kép IN1
IN1
và IN2. Kết quả
IN2 OUT
được ghi vào từ
OUT.

3.4.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 Không
của dòng cung cấp. Nếu dòng có
NOT
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 Không
cho phép dòng cung cấp có
thông mạch trong một vòng
P quét khi sườn xung điều khiển
chuyển từ 0 lên 1
Tiếp điểm chuyển đổi âm Không
N cho phép dòng cung cấp có
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.

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 Không
trong ngăn xếp. có
EU Lệnh nhận biết sự chuyển tiếp Không
trạng thái từ 0 lên 1 trong một có
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 Không
trạng thái từ 1 xuống 0 trong một có
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 ∼ 1 c1 C0 1
c0
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

3.5. Các lệnh 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) :
n1 n2 B = Byte VB , IB , QB, MB,
==I SMB , AC ,
I = Integer Const , *VD*, AC
n1 n2 D = Double Integer
==D R = Real

n1 n2
==R
==B Tiếp điểm đóng khi
N1 > n2 n1,n2 (từ):
n1 n2 VW, T, C, IW,
>=B B = Byte
QW, MW,
==B I = Integer SMW,AC, AIW,
n1 n2 D = Double Integer
>=I Hằng số, *VD,
R = Real *AC

n1 n2
>=D
==B
n1 n2
>=R
==B Tiếp điểm đóng khi
n1 n2 N1 < n2 n1, n2(từ
<=B kép):VD, ID, QD,
B = Byte
==B MD, SMD, AC,
I = Integer
n1 n2 HC, Hằng số,
<=I D = Double Integer *VD, *AC
R = Real
n1 n2
<=D
==B
n1 n2
<=R
Trong STL, những lệnh so sánh thực hiện phép so sánh byte, từ
= =cứ
và từ kép. Căn B 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 gogic 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ừ V>W100 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 < =
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 , n1 , n2 (byte):VB,
AB = n1 n2 And hoặc Or giữa giá IB, QB, MB, SMB,
trị logic 1 với nội AC, hằng số, *VD ,
dung đỉnh ngăn xếp *AC
OB = n1 n2 khi nội dung 2 byte n1
và n2 thỏa mãn n1 = n2
LDB > = n1 - Lệnh thực hiện
n2 phép tính logic Load ,
And hoặc Or giữa giá
AB > = n1 trị logic 1 với nội
n2 dung đỉnh ngăn xếp
khi nội dung 2 byte n1
OB > = n1 và n2 thỏa mãn n1 > =
n2 n2

LDB < = n1 - Lệnh thực hiện


n2 phép tính logic Load ,
And hoặc Or giữa giá
AB < = n1 trị logic 1 với nội
n2 dung đỉnh ngăn xếp
khi nội dung 2 byte n1
OB < = n1 và n2 thỏa mãn n1 < =
n2 n2

LDW = n1 n2 Lệnh thực hiện


phép tính logic Load , n1 ,n2 (từ):VW, T,
AW = n1 -
And hoặc Or giữa giá C, QW, MW, SMW,
n2 trị logic 1 với nội AC, AIW , hằng số,
dung đỉnh ngăn xếp *VD , *AC
OW = n1 - khi nội dung 2 từ n1 và
n2 n2 thỏa mãn n1 = n2

LDW > = n1 Lệnh thực hiện


n2 phép tính logic Load ,
And hoặc Or giữa giá
trị logic 1 với nội
AW > = n1 dung đỉnh ngăn xếp
n2 khi nội dung 2 từ n1 và
n2 thỏa mãn n1 > = n2
OW > = n1
n2
LDW < = n1 Lệnh thực hiện
n2 phép tính logic Load ,
And hoặc Or giữa giá
trị logic 1 với nội
AW < = n1 dung đỉnh ngăn xếp
n2 khi nội dung 2 từ n1 và
n2 thỏa mãn n1 < = n2
OW < = n1
n2
LDD = n1 - Lệnh thực hiện
n2 phép tính logic Load , n1 , n2 (từ kép)
And hoặc Or giữa giá :VD, ID, QD, MD,
trị logic 1 với nội SMD, AC, HC ,
AD = n1 -
dung đỉnh ngăn xếp hằng số, *VD , *AC
n2 khi nội dung 2 từ kép
n1 và n2 thỏa mãn n1 =
OD = n1 - n2
n2
LDD > = n1 Lệnh thực hiện
n2 phép tính logic Load ,
And hoặc Or giữa giá
trị logic 1 với nội
AD > = n1 dung đỉnh ngăn xếp
n2 khi nội dung 2 từ kép
n1 và n2 thỏa mãn n1 >
OD > = n1 = n2
n2
LDD < = n1 Lệnh thực hiện
n2 phép tính logic Load ,
And hoặc Or giữa giá
trị logic 1 với nội
AD < = n1 dung đỉnh ngăn xếp
n2 khi nội dung 2 từ kép
n1 và n2 thỏa mãn n1 <
OD < = n1 = n2
n2
LDR = n1 n2 Lệnh thực hiện
phép tính logic Load , n1 ,n2 (từ
And hoặc Or giữa giá kép):VD, ID, QD,
AR = n1 -
trị logic 1 với nội MD, SMD, AC, HC ,
n2 dung đỉnh ngăn xếp hằng số, *VD , *AC
nếu hai số thực n1 và
OR = n1 - n2 (4 byte) thỏa mãn
n2 n1 = n2

LDR > = n1 Lệnh thực hiện


n2 phép tính logic Load ,
And hoặc Or giữa giá
trị logic 1 với nội
AR > = n1 dung đỉnh ngăn xếp
n2 nếu hai số thực n1 và
n2 (4 byte ) thỏa mãn
OR > = n1 n1 > = n2
n2
LDR < = n1 Lệnh thực hiện
n2 phép tính logic Load ,
And hoặc Or giữa giá
trị logic 1 với nội
AR < = n1 dung đỉnh ngăn xếp
n2 nếu hai số thực n1 và
n2 (4 byte) thỏa mãn
OR < = n1 n1 < = n2
n2

3.6. Lệnh nhảy chương trình con:


Các lệnh của chương trình, nếu không có những lệnh điều khiển
riêng, sẽ được thực hiện theo thứ tự từ trên xuống dưới trong một
vòng quét. Lệnh điều khiển chương trình cho phép thay đổi thứ tự
thực hiện lệnh. Chúng cho phép chuyển thứ tự thực hiện, đáng lẽ
ra là lệnh tiếp theo, tới một lệnh bất cứ nào khác của chương
trình, trong đó nơi điều khiển chuyển đến phải được đánh dấu
trước bằng một nhãn, chỉ, đích. Thuộc nhóm lệnh điều khiển
chương trình gồm: lệnh nhảy, lệnh gọi chương trình con, nhãn chỉ
đích, hay gọi đơn giản là nhãn, phải được đánh dấu trước khi thực
hiện lệnh nhảy hay lệnh gọi chương trình con.
Việc đặt nhãn cho lệnh nhảy phải nằm trong chương trình. Nhãn
của chương trình con, hoặc của chương trình xử lý ngắt được khai
báo ở đầu chương trình. Không thể dùng lệnh nhảy JMP để chuyển
điều khiển từ chương trình chính vào một nhãn bất kỳ trong
chương trình con hoặc trong chương trình xử lý ngắt. Tương tự
như vậy cũng không thể từ một chương trình con hay chương trình
xử lý ngắt nhảy vào bất cứ một nhãn nào nằm ngoài các chương
trình đó.
Lệnh gọi chương trình con là lệnh chuyển điều khiển đến chương
trình con. Khi chương trình con thực hiện xong các phép tính của
mình thì việc điều khiển lại được chuyển trở về lệnh tiếp theo
trong chương trình chính nằm ngay sau lệnh gọi chương trình con.
Từ một chương trình con có thể gọi được một chương trình con
khác trong nó, có thể gọi như vậy nhiều nhất là 8 lần trong S7-
200. Nói chung (trong một chương trình con có lệnh gọi đến chính
nó) về nguyên tắc không bị cấm song phải để ý đến giới hạn trên.
Nếu lệnh nhảy hay lệnh gọi chương trình con được thực hiện thì
đỉnh ngăn xếp luôn có giá trị logic 1. Bởi vậy trong chương trình
con các lệnh có điều kiện được thực hiện như các lệnh không điều
kiện. Sau các lệnh LBL (đặt nhãn) và SBR, lệnh LD trong STL sẽ bị
vô hiệu hóa.
Khi một chương trình con được gọi, toàn bộ nội dung của ngăn
xếp sẽ được cất đi, đỉnh của ngăn xếp nhận giá trị logic mới là 1,
các bít khác của ngăn xếp nhận giá trị logic 0 và điều khiển được
chuyển đến chương trình con đã được gọi. Khi thực hiện xong
chương trình con và trước khi điều khiển được chuyển trở lại
chương trình đã gọi nó, nội dung ngăn xếp đã được cất giữ trước
đó sẽ được chuyển trở lại ngăn xếp.
Nội dung của thanh ghi AC không được cất giữ khi gọi chương
trình con, nhưng khi một chương trình xử lý ngắt được gọi, nội
dung của thanh ghi AC sẽ được cất giữ trước khi thực hiện chương
trình xử lý ngắt và nạp lại khi chương trình xử lý ngắt đã được thực
hiện xong. Bởi vậy chương trình xử lý ngắt có thể tự do sử dụng
bốn thanh ghi AC của S7-200.
JMP.CALL
LBL.SBR
Lệnh nhảy JMP và lệnh gọi chương trình con SBR cho phép
chuyển điều khiển từ vị trí này đến vị trí khác trong chương trình.
Cú pháp của lệnh nhảy và lệnh gọi chương trình con trong LAD và
STL đều có toán hạng là nhãn chỉ đích (nơi nhảy đến, nơi chứa
chương trình con).
Lệnh nhảy, lệnh gọi chương trình con, lệnh khai báo nhãn và
lệnh thoát khỏi chương trình con được biểu diễn trong LAD và
trong STL như sau:

LAD STL Mô tả Toán hạng


Lệnh nhảy thực n: 0 ÷ 255
n JMP Kn hiện việc chuyển
( JMP ) điều khiển đến
nhãn n trong một
chương trình.
LBL Kn Lệnh khai báo
nhãn n trong một
LBL:n chương trình.
Lệnh gọi chương
CALL trình con, thực n: 0 ÷ 255
n Kn hiện phép chuyển
( CALL ) điều khiển đến
chương trình con
có nhãn là n.
SBR Kn Lệnh gán nhãn n
SBR: n cho một chương
trình con.
Lệnh trở về
CRET chương trình đã
n gọi chương trình
( CRET ) con có điều kiện
(bít đầu tiên của Không có
ngăn xếp có giá trị
logic bằng 1).

n Lệnh trở về
( RET ) RET chương trình đã
gọi chương trình
con không điều
kiện.

3.7. Các lệnh can thiệp vào thời gian vòng quét:
Lệnh MEND, END, STOP, NOP, WDR.
Các lệnh này được dùng để kết thúc chương trình đang thực
hiện, và kéo dài trong khoảng thời của một vòng quét.
Trong LAD và STL chương trình chính phải được kết bằng lệnh
kết thúc không điều kiện MEND. Có thể sử dụng lệnh kết thúc có
điều kiện END trước lệnh kết thúc không điều kiện.
Lệnh STOP kết thúc chương trình, nó chuyển điều khiển chương
trình đến chế độ STOP. Nếu gặp lệnh STOP trong chương trình
chính hoặc trong chương trình con thì chương trình đang thực hiện
sẽ được kết thúc ngay lập tức. Lệnh sỗng NOT không có tác dụng
gì trong việc thực hiện chương trình. Lệnh NOT này phải được đặt
trong chương trình chính, hoặc chương trình ngắt, hoặc chương
trình con.
Lệnh WDR sẽ khởi động lại đồng hồ quan sát (watchdog Timer)
và chương trình tiếp tục được thực hiện trong vòng quét ở chế độ
quan sát.
Sử dụng lệnh MEND, END, STOP và WDR trong LAD và STL như
sau:
LAD STL Mô tả
( EN END Lệnh kết thúc chương trình
D) chính hiện hành có điều kiện.
( MEN Lệnh kết thúc không điều
D) MEN kiện dùng để kết thúc một
D chương trình hiện hành.

( STOP ) Lệnh STOP kết thúc chương


STOP trình hiện hành và chuyển sang
chế độ STOP.
( WDR ) WDR Lệnh WDR khởi tạo lại đồng
hồ quan sát.
Lệnh NOT không có hiệu lực
( NOT ) NOT trong chương trình hiện hành.
Toán hạng n là một số nằm
trong khoảng 0÷ 25

3.8. Các lệnh điều khiển 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:
Lệnh Độ phân Giá trị cực CPU 214
giải đại
1 ms 32,767s T32÷ T96
TON 10 ms 327,67s T33÷ T36; T97÷
T100
100 ms 3276,7s T37÷ T63; T101÷
T127
1 ms 32,767s T0 ÷ T64
TONR 10 ms 327,67s T1÷ T4; T65÷ T68
100 ms 3276,7s T5÷ T31; T69÷ T95

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 Txx :
xx kiểu TON để tạo thời T32÷ T63
gian trễ tính từ khi đầu
T96÷ T
vào IN được kích. Nếu
127
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
bằng lệnh R hoặc bằng PT: VW, T, C,
giá trị logic 0 tại đầu vào IW,
TON Txx QW, MW,
IN
SMW,
IN 1 ms T32 ÷ T96
AC, AIW, VD
10 ms T33÷ T36;
*AC, Hằng số.
PT T97÷ T100
100 ms
T37÷ T63;
T101÷ T127
Khai báo Timer số hiệu Txx : T0 ÷ T31
xx kiểu TONR để tạo thời T64
gian trễ tính từ khi đầu
÷ T95
vào IN được kích. Nếu
TONR _Txx như giá trị đếm tức thời
lớn hơn hoặc bằng giá trị
IN đặt trước PT thì T-bít có PT: VW, T, C,
giá trị logic bằng 1. Chỉ IW,
có thể reset kiểu TONR
bằng lệnh R cho T-bít QW, AIW,
PT SMW, AC, AIW,
1 ms T0 ÷ T64 VD
10 ms T1 ÷ T4 ; *AC, Hằng số.
T65 ÷ T68
100 ms
T5 ÷ T31;
T69 ÷ T95
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 Txx: T32 ÷ T63
TON Txx kiểu TON để tạo thời gian T96
n trễ tính từ khi bít đầu tiên
÷ T127
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 n (word) : VW,
giá trị đặt trước n thì T-bít T, C, IW,QW,
có giá trị logic bằng 1. Có MW, SMW
thể reset Timer kiểu TON AC, AIW, VD
bằng lệnh R hoặc bằng giá
trị logic 0 tại đầu 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 Txx :T0 ÷ T31
TONR Txx kiểu TONR để tạo thời gian
T64 ÷ T95
n trễ tính từ khi bít đầu tiên
trong ngăn xếp có giá trị
logic 1. Nếu như giá trị đếm n (word) :VW,
tức thời lớn hơn hoặc bằng T, C, IW,QW,
giá trị đặt trước n thì T-bít
có giá trị logic bằng 1. Chỉ AIW, SMW,
có thể reset Timer kiểu AC, AIW, VD
TONR bằng lệnh R cho T-bít
*AC, Hằng số
1 ms T64
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 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.
Hình 7 a: Timer của S7-200

X(t) T-Bit

Giaù trò ñeám töùc T-word


thôøi
Giaù trò ñaët
tröôùc
3.9. Các lệnh điều khiển 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.
Hình 8 a: Bộ đếm CTU của S7-200

CU C-Bit
Giá trị đếm tức
thời C-word
PV
R
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.
Hình 8 b: Bộ đếm CTUD của S7-200

CU C-Bit
Giá trị đếm tức
PV
thời C-word
CD
Bộ đếm tiến CTU có miền giá trị đếm tức R 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 Cxx:C0 ÷ C47
theo sườn lên của CU. C80
CTU Cxx Khi giá trị đếm tức thời
÷ C127
C-word Cxx lớn hơn hoặc
CU bằng giá trị đặt trước PV,
C-bít (cxx) có giá trị logic PV (word) :
PV bằng 1. Bộ đếm được VW , T, C, IW,
reset khi đầu vào R có QW, MW,
giá trị logic bằng 1. Bộ SMW, AC,
R đếm ngừng đếm khi C- AIW, Hằng
word Cxx đạt giá trị cực số,
đại 32.767.
*VD, *AC
Khi báo bộ đếm Cxx : C48
CTUD Cxx tiến/lùi, đếm tiến theo ÷ C79
sườn lên của CU và đếm
CU lùi theo sườn lên của CD.
Khi giá trị đếm tức thời PV
C-word Cxx lớn hơn hoặc (word):VW,T ,
PV C , IW, QW,
bằng giá trị đặt trước PV,
C-bít (cxx) có giá trị logic MW, SMW,
bằng 1. Bộ đếm ngừng AC,A IW, Hằng
R số, *VD, *AC
đếm tiến khi C-word đạt
giá trị cực đại 32.767 và
ngừg đếm lùi 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.
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 Cxx : C0
sườn lên cùa CU. Khi giá trị ÷ C47
đếm tức thời C-word lớn hơn C80
hoặc bằng giá trị đặt trước n,
CTU Cxx C-bít có giá trị logic bằng 1. ÷ C127
n Bộ đếm được reset khi đầu
ngăn xếp có giá trị logic bằng n (word):VW
1. Bộ đếm ngừng đếm khi C- , T , C , IW ,
word đạt giá trị cực đại QW , MW,
32.767. SMW, AC, AIW,
Hằng số.
*VD, *AC
Khai báo bộ đếm tiến/lùi, Cxx: C48 ÷
đếm tiến theo sườn lên của C79
CU và đếm lùi theo sườn lên
của CD. Khi giá trị đếm tức
CTUD Cxx thời C-word, Cxx lớn hơn n (word) :
n hoặc bằng giá trị đặt trước n, VW, T, C,
C-bít có giá trị logic bằng 1, IW ,QW, MW,
bộ đếm ngừng đếm tiến khi SMW, AC,
C-word đạt giá trị cực đại AIW, Hằng số,
32.767 và ngừng đếm lùi khi *VD, *AC
C-word đạt đượ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.

3.10. Các lệnh số học


a. 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.
b. 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
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

+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
c. 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.
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

d. 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.

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

DIV R /R n1 n2

EN

IN1
IN2 OUT

e. 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
3.11. Các lệnh cộng trừ một đơn vị
a. 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

b. 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.
Cú pháp dùng lệnh INCW trong LAD và trong STL như sau:
LAD STL
INCW IN
INC W
EN

IN OUT

c. 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

d. 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

e. 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
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

f. 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

3.12. Các lệnh dịch chuyển nội dung ô nhớ


Các lệnh dịch chuyển nội dung ô nhớ thực hiện việc di
chuyển hoặc sao chép số liệu từ vùng này sang vùng khác trong
bộ nhớ.
Trong LAD hay trong STL lệnh dịch chuyển thực hiện việc di
chuyển hay sao chép nội dung của một byte, một từ đơn, một từ
kép hoặc một giá trị thực từ vùng này sang vùng khác trong bộ
nhớ.
a. 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

b. 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

c. 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

d. 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:
LAD STL
MOVR IN OUT
MOV R
EN

IN OUT

e. 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

3.13. Các lệnh dịch chuyển thanh ghi


Các lệnh dịch chuyển thanh ghi được chia làm hai nhóm:
• Nhóm các lệnh làm việc với thanh ghi có độ dài bằng một từ
đơn (16-bít) hay một từ kép (32-bít).
• Nhóm các lệnh làm việc với thanh ghi có độ dài tùy ý mà được
định nghĩa trong lệnh.
Nhóm lệnh với thanh ghi có độ dài 16 hoặc 32 bít.
Lệnh dịch chuyển thuộc nhóm này cho phép dịch chuyển và
quay các bít trong các từ đơn và trong các từ kép.
Số lần dịch chuyển các bít của từ đơn hay từ kép được chỉ thị
bằng một toán hạng trong được gọi là số lần đếm đẩy.
Số lần quay các bít của từ đơn hay từ kép cũng được chỉ thị bằng
một toán hạng trong lệnh, được gọi là số lần đếm quay.
Khi sử dụng các lệnh dịch chuyển các bít của từ đơn hay từ kép
cần chú ý:
Sẽ không thực hiện việc dịch chuyển nếu như số đếm lần đẩy
bằng 0.
Nếu số lần đẩy có giá trị lớn hơn 0, bít nhớ tràn SM1.1 có giá trị
logic của bít cuối cùng được đẩy ra.
Nếu số đếm lần đẩy lớn hơn hoặc bằng 16 (từ đơn), lớn hơn hoặc
bằng 32 (từ kép) khi dịch chuyển thì lệnh sẽ chỉ thực hiện với số
đếm lần đẩy lớn nhất là 16 hoặc 32.
Lệnh SRW (đẩy các bít từ đơn sang phải) và SDR (đẩy các bít từ
kép sang phải) sẽ chuyển giá trị 0 vào bít cao nhất của từ hoặc từ
kép tại mỗi lần đẩy. Sau khi thực hiện lệnh, bít SM1.1 sẽ có giá trị
ủa bít thứ N-1 của từ đơn hoặc từ kép với N là số lần đẩy.
Lệnh SLW (đẩy các bít từ đơn sang trái) và SRD (đẩy các bít từ
kép sang trái) sẽ chuyển giá trị logic 0 vào bít thấp nhất của từ
hoặc từ kép tại mỗi lần đẩy. Sau khi thực hiện lệnh, bít SM1.1 sẽ
có giá trị của bít thứ 16-N đối với từ đơn hoặc 32-N đối với từ kép,
trong đó N là số lần đẩy.
Bít báo kết quả 0 (bít SM1.0) sẽ có giá trị logic bằng 1 nếu như
sau khi thực hiện lệnh đẩy nội dung của từ đơn hay từ kép bằng 0.
Khi sử dụng lệnh quay các bít của từ đơn hay từ kép cần chú ý:
Lệnh quay thực hiện phép đẩy vòng tròn sang trái hay phải các
bít của một từ đơn hoặc của một từ kép. Tại mỗi lần quay, giá trị
logic của bít bị đẩy ra khỏi đầu này cũng là giá trị logic được đưa
vào đầu kia của từ hay của từ kép.
Lệnh quay sẽ không thực hiện nếu như số đếm lần quay có giá
trị là 0 hay bằng bội số của 16 (với từ đơn) hoặc 32 (với từ kép).
Đối với các giá trị khác của số đếm lần quay lớn hơn 16 (đối với
từ đơn) hoặc 32 (đối với từ kép), lệnh sẽ thực hiện với số đếm lần
quay mới bằng phần dư của số đếm lần quay cũ chia cho 16 hoặc
chia cho 32.
Khi thực hiện lệnh quay sang phải RRW (với từ đơn) hay RRD
(với từ kép), tại mỗi lần quay giá trị thấp nhất trong từ hoặc từ
kép được ghi vào bít báo tràn SM1.1. Sau khi lệnh được thực hiện
xong bít SM1.1 sẽ có giá trị logic bít 16-N của từ đơn hoặc 32-N
của từ kép, trong đó N là số đếm lần quay.
Khi thực hiện lệnh quay sang trái RLW (với từ đơn) hay RLD (với
từ kép) tại mỗi lần quay, giá trị logic của bít cao nhất trong từ
hoặc từ kép được ghi vào bít báo tràn SM1.1. Sau khi lệnh được
thực hiện xon bít SM1.1 sẽ có giá trị logic bít thứ N-1 trong từ đơn
hoặc từ kép, trong đó N là số đếm lần quay (mới).
Bít báo kết quả 0 (bít SM1.0) sẽ có giá trị logic 1 nếu từ hay từ
kép được quay có giá trị bằng 0.
a. 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

b. 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 SLW IN N
EN

IN OUT
N

c. 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 SRD IN N
EN

IN OUT
N

d. 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:
LAD STL

SHL DW SLD IN N
EN

IN OUT
N
e. 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 RRW IN N
EN

IN OUT
N

f. 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 RRD IN N
EN

IN OUT
N

g. 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 RLW IN N
EN

IN OUT
N

h. 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
RLD IN N
EN

IN OUT
N

3.14. Hàm đổi dữ liệu tương ứng thanh ghi 7 nét


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 cào
byte đầu ra OUT
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 a
1 1
1 0 0 0 0 0 1 f b
1 0 g

2 0 1 0 1 1 0 e c
1 1
d
3 0 1 0 0 1 1
1 1
4 0 1 1 0 0 1
1 0
5 0 1 1 0 1 1
0 1
6 0 1 1 1 1 1
1
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,
SEG ENCO IN QB, MB, SMB, AC,
EN OUT *VD, *AC, hằng số

IN OUT OUT(byte): VB, IB,


QB, MB, SMB, AC,
*VD, *AC

3.15 Đồng hồ thời gian thực


Đồng hồ tời gian thực chỉ có ở CPU 214 . Để 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ánh , năm , và các
giá trị giờ , phúc , 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úc (0 ÷ 59)
Byte 5 Giây (0 ÷ 59)
Byte 6 0
Byte 7 0 ngày
trong tuần

Các dữ liệu hợp lệ là:


Nă Thán Ngày Giờ Phút Giây
m g (dd) (hh) (mm) (ss)
(yy) (mm)
0 ÷ 1 ÷ 1 ÷ 0 ÷ 0 ÷ 0 ÷
99 12 31 23 59 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 máy ứ tư năm ứ sáu ứ bảy
biến
áp
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
READ T
RTC
EN T(byte) : VB ,
IB , QB , MB ,
SMB , *VD , *AC
T

TODW
SET T
RTC
EN

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 nhuững trường hợp như vậy.

Você também pode gostar