Slide PLC
Slide PLC
• Micro Automation
– Module Logic Logo
– S7-200
– TD200, TP070
• Controller
– S7 – 300
– S7 – 400
– C7
• Simatic PG
• Simatic Software
Micro Automation
• Logo
• S7-200
• Tp070, TD 200
Logo
Các loại:
LOGO! 24 C0 (Điện áp cấp 24V, đầu ra Trasitor, không có Clock trong).
LOGO! 12/24RC (Điện áp cấp 12/24V, đầu ra Relay ,có Clock trong).
LOGO! 24RC (Điện áp cấp 24V, đầu ra Relay ,có Clock trong).
CP 340 CP 341
Control System (C7)
SIMATIC PG
(Programming Divice)
Field PG Power PG
Simatic Software
Standard Tools
• Step 7
• Step 7 professional
• Step 7 Micro/WIN
Engineering Tools
• S7 SCL
• S7-GRAPH
• S7-HiGraph
Chương 1: Giới thiệu tổng quan về
PLC S7-200
1.1. Ôn tập kỹ thuật số
1.2. Giới thiệu PLC S7-200
1.1. Ôn tập kỹ thuật số
• Các khái niệm về số: Bit, byte, word, double word,
int, real.
• Các phép toán logic: AND, OR, XOR, NOT.
• Các dạng tín hiệu:
– Các dạng tín hiệu số: là các tín hiệu thuộc dạng hàm
boolean, chỉ có 2 trị là 0 và 1. (VD: 0 tương ứng với 0V
và 1 tương ứng với 24V)
– Tín hiệu tương tự: từ 0-10V hoặc 0-24mA …
– Các tín hiệu khác: gồm các tín hiệu giao tiếp với máy
tính, các thiết bị ngoại vi bằng các giao thức khác nhau
như RS232, RS485, Modbus….
1.2. Giới thiệu PLC S7-200
• PLC là gì? Là một thiết bị cho phép lập trình linh hoạt
các thuật toán thông qua một ngôn ngữ lập trình nào đó
để thay thế cho việc thực hiện nó thông qua các mạch số.
Cấu trúc cơ bản của PLC:
CPU: thực hiện chương trình và chứa dữ liệu cho điều khiển các quá
trình tự động.
Nguồn cấp điện (Power supply)
Các đầu vào/ra hệ thống (Inputs/Outputs)
Các cổng truyền thông (Communications Port)
Các đèn trạng thái (Status light )
Sơ đồ cấu trúc của CPU PLC
Cấu trúc bộ nhớ của CPU S7-200
Tụ
EEPROM
RAM (memory cartridge)
Bộ nhớ PLC
• Gồm 3 vùng chính:
– Vùng chứa chương trình ứng dụng: chia thành 3 miền
• OB1(organisation block): chứa chương trình tổ chức, chương
trình chính.
• Subroutine: chứa chương trình con được tổ chức thành hàm
và có biến hình thức để trao đổi dữ liệu. Chương trình được
thực hiện khi có lệnh gọi trong OB1.
• Interrupt: được tổ chức thành hàm và có khả năng trao đổi
dữ liệu với bất kỳ 1 khối dữ liệu nào khác. Chương trình này
sẽ được thực hiện khi sự kiện ngắt xảy ra.
– Vùng chứa tham số của hệ điều hành: I, Q, M, T, C.
– Vùng chứa các khối dữ liệu:
• DB(Data Block): miền chứa dữ liệu được tổ chức thành khối.
• L(Local Data Block): miền dữ liệu địa phương, được các khối
chương trình ứng dụng tổ chức và sử dụng cho các biến tức
thời và trao đổi dữ liệu của biến hình thức với những khối
chương trình gọi nó.
Yêu cầu tối thiểu về mặt thiết bị cho hệ thống PLC S7-200
Hình 1-1: Các thành phần cơ bản của hệ thống PLC S7-200
Hết Bài 1
Bài 2
Chương 1: (tt)
Chương 2:
1.3. Các điểm đặc trưng của họ S7-200
( CPU212, CPU214, CPU 215, CPU 216.)
Đặc điểm CPU212 CPU 214 CPU 215 CPU 216
Kích cỡ vật lý
Bộ nhớ
I/O (Inputs/Outputs)
I/O cục bộ 8DI/6DQ 14DI/10DQ 14DI/10DQ 24DI/16DQ
Modul mở rộng (max) 2 7 7 7
Thanh nghi I/O ảo 64DI/64DQ 64DI/64DQ 64DI/64DQ 64DI/64DQ
Tranzito
Triac
Relay
1- Relay Output card - Nguồn chung
Relay Output card - Nguồn khác nhau
VD: Relay Output card
Chú thích: khi transitor mở thì chiều dòng điện đi là chiều mũi tên
Dạng Sourcing (PNP)
Chú thích: khi transitor mở thì chiều dòng điện đi là chiều mũi tên
3- Triac Output card
Module đầu vào
• Tín hiệu ra từ các loại cảm biến: số và tương tự.
– Cảm biến tiệm cận (Proximity Senso): cảm biến điện cảm,
điện dung, quang …. Tín hiệu là logic
– Khóa chuyển mạch (Switchs): đóng mở cơ khí. Tín hiệu
logic.
– Potentiometer: đo vị trí góc dùng điện trở. Tín hiệu liên tục.
– LVDT(Linear variable differential Transformer): tín hiệu
liên tục.
• Nguồn cấp • Dải điện áp đầu vào
– Có 2 loại: • 12-24 Vdc
• DC • 24 Vac
• AC
Sơ đồ mạch điện của đầu vào của PLC
b. Tín hiệu đầu ra của cảm biến
• Gồm 2 loại:
– PNP (Sourcing)
– NPN (Sinking)
Sơ đồ mạch đầu ra của sensor
PNP/Sourcing sensor
V+
PNP sensor kết nối với
NPN Input card(PLC)
V-
Note:
+ Sensor off -> Output
+ Sensor on -> Output
NPN sensor kết nối với PNP Input card
PLC
Chú ý: nếu không biết địa chỉ PLC thì kích chọn vào mục Search a
đó double click vào phần “Double – Click to refresh” chương trình
2.2. Cài đặt phần mềm STEP7- Micro/WIN
Hết bài 2
Bài 3
Chương 3: Cơ sở chung trong lập trình
PLC
• 3.1. Phần tử tự động cơ bản liên quan đến lập
trình trên PLC.
• 3.2. Các bước thiết kế hệ thống PLC
• 3.3. Nguyên tắc hoạt động của chương trình
• 3.4. Khái niệm ngôn ngữ lập trình trên PLC
• 3.5. Cấu trúc chương trình
• 3.6. Vòng quét của CPU
3.1. Phần tử tự động cơ bản
– Khi truy nhập theo byte, tăng giá trị con trỏ lên
1
– Khi truy nhập theo Word, tăng giá trị con trỏ
lên 2
– Khi truy nhập theo Double Word, tăng giá trị
con trỏ lên 4
• Kết luận:
– Con trỏ không chứa dữ liệu mà chỉ chứa địa chỉ
của ô nhớ chứa dữ liệu.
– Kích thước không phụ thuộc vào kiểu dữ liệu mà
luôn có kích thước không đổi là Double Word
HẾT BÀI 4
Bài 5
Chương 5 – Giới thiệu tập lệnh cơ bản
trong S7 200
• Operands: không có
Ví dụ1:
Ví dụ 2:
5.3. Các lệnh đầu ra
• Output
• Output Immediate
• Set, Reset
• Set, Reset Immediate
• No Operation
Output
• Operands:
n : I, Q, M, SM, T,
C,V, S
Output Immediate
• Operands: n: Q
Set, Reset
• Operands:
S_bit: I,Q, M, SM, T,
C, V, S
N: IB, QB, MB, SMB,
VB, AC, Constant,
*VD, *AC, SB.
Set, Reset Immediate
• Operands:
S_bit: Q
N: IB, QB, MB, SMB,
VB, AC, Constant,
*VD, *AC, SB.
No Operation
• Operands:
N: 0 đến 255
Ví dụ 1:
Ví dụ 2: so sánh lệnh output & set
Nhóm lệnh về bit
Tiếp điểm thường mở
Coil, ngõ ra
Đảo trạng thái bit
Set bit
Reset bit
• So sánh byte
• So sánh Word và Double Word
• So sánh số thực (Real)
Compare
Instructions
So sánh byte
2/ Söû duïng caùc taäp leänh veà Bit ñeå thöïc hieän vieäc khôûi ñoäng tuaàn töï 4 ñoäng cô theo thöù töï sau: +
Nhaán Start1 : ñoäng cô 1 khôûi ñoäng. Nhấn Stop1: ñoäng cô 1 taét.
+ Khi ñoäng cô 1 khoâng ñuû taûi, nhaán Start2 ñoäng cô 2 seõ hoaït ñoäng, nhaán Stop2 ñoäng cô 2 seõ taét (
khi ñaõ dö taûi…)
+Töông töï cho ñoäng cô 3 vaø 4 ( seõ ñöôïc khôûi ñoäng khi taûi töông öùng khoâng ñuû)
Trong quaù trình hoaït ñoäng gaëp söï coá ta coù theå nhaán nuùt Emergency ñeå döøng toaøn boä heä thoáng.
3/ Phaùt hieän chieàu di chuyeån cuûa vaät: Ñeå phaùt hieän chieàu di chuyeån cuûa vaät, ta phaûi söû duïng 2
Sensor keá tieáp nhau: Sensor1 vaø Sensor2. Tröôøng hôïp vaät di chuyeån theo chieàu thuaän : Sensor1 taùc ñoäng
roài ñeán Sensor2. Chieàu ngöôïc thì Sensor taùc ñoäng theo thöù töï ngöôïc laïi .
Gôïi yù : Baøi taäp coù theå söû duïng leänh P,N,Set,Reset Bit
Bài 6
5.5. Các lệnh điều khiển Timer, Counter
• Timer: Bộ tạo thời gian trễ có nhớ và không có
nhớ (On-Delay Timer/ Retentive On-Delay
Timer), có ký hiệu TON và TONR.
• Counter: Bộ đếm tiến và bộ vừa đếm tiến vừa
đếm lùi (Count up counter, Count up/Down
Counter), Ký hiệu CTU, CTUD.
5.5.1.Timer: Chế độ hoạt động
On-Delay Timer/ Retentive On-
Delay Timer
• Operands:
-Txxx: TON, TONR (có 256 timer)
- PT: VW, T, C, IW,QW,
MW, SMW, AC, AIW,
Constant, *VD,
*AC, SW
Địa chỉ và độ phân giải
Địa chỉ và độ phân giải (CPU 22x)
5.5.2. Counter
• Operands:
- Cxxx: 0 đến 255
- PV: VW, T, C, IW,
QW, MW, SMW,
AC, AIW, Constant,
*VD, *AC, SW
Chế độ hoạt động của các Counter
Bài tập
1/ Ñieàu khieån Ñeøn xanh, ñoû taïi ngaõ tö:
Xanh A : Trong 15s
Vaøng A : Trong 3s
Xanh B : Trong 25s
Vaøng B : Trong 4s
Ta coù theå môû roäng baøi toaùn cho ñieàu khieån coù theâm ñöôøng daønh cho
ngöôøi ñi boä.
Hết bài 6
Bài 7
• Operands:
– IN1, IN2:
VW, T, C, IW, QW, MW, SMW,
AC,AIW, Constant,*VD, *AC, SW
– OUT:
VW, T, C, IW, QW, MW, SMW, AC,
*VD, *AC, SW
• LAD:
IN1 + IN2 = OUT
IN1 - IN2 = OUT
• STL:
IN1 + OUT = OUT
OUT - IN1 = OUT
Cộng trừ số nguyên (32 bit)
• Operands:
– IN1, IN2:
VD, ID, QD, MD, SMD,
AC,HC, Constant,*VD,
*AC, SD
– OUT:
VD, ID, QD, MD, SMD,
AC,*VD, *AC, SD
• LAD:
IN1 + IN2 = OUT
IN1 - IN2 = OUT
• STL:
IN1 + OUT = OUT
OUT - IN1 = OUT
Cộng trừ số thực
• Operands:
– IN1, IN2:
VD, ID, QD, MD, SMD,
AC,Constant,*VD, *AC,
SD
– OUT:
VD, ID, QD, MD, SMD,
AC,*VD, *AC, SD
• LAD:
IN1 + IN2 = OUT
IN1 - IN2 = OUT
• STL:
IN1 + OUT = OUT
OUT - IN1 = OUT
Nhân chia số nguyên
• Operands:
– IN1, IN2:
VW, T, C, IW, QW, MW, SMW, AC,AIW,
Constant,*VD, *AC, SW
– OUT:
VD, ID, QD, MD, SMD, AC,*VD,
*AC, SD
• LAD:
IN1 * IN2 = OUT
IN1 / N2 = OUT
• STL:
IN1 * OUT = OUT
OUT / IN1 = OUT
Nhân chia số thực
• Operands:
– IN1, IN2:
VD, ID, QD, MD, SMD,
AC,Constant,*VD, *AC, SD
– OUT:
VD, ID, QD, MD, SMD, AC,*VD,
*AC, SD
• LAD:
IN1 * IN2 = OUT
IN1 / N2 = OUT
• STL:
IN1 * OUT = OUT
OUT / IN1 = OUT
Lấy căn
Operands:
IN: VD, ID, QD, MD, SMD,
AC,Constant,*VD, *AC, SD
+ JBM, LBL
+ For/Next
JBM, LBL
• Operands:
n: 0 tới 255
Ví dụ
For/Next
• Operands:
– INDEX (Lưu số lần thực hiện): VW, T,
C, IW, QW, MW, SMW, AC,*VD,
*AC, SW
– INITIAL (giá trị bắt đầu): VW, T, C,
IW, QW, MW, SMW, AC,AIW,
Constant, *VD, *AC, SW
– FINAL (giá trị kết thúc): VW, T, C,
IW, QW, MW, SMW, AC, AIW,
Constant, *VD, *AC, SW
Ví dụ
5.8. Các lệnh Move, Fill
• Các lệnh dịch chuyển nội dung ô nhớ:
– Move Byte
– Move Word
– Move Double Word
– Move Real
– Swap Byte
• Các lệnh làm việc với mảng
– Block Move Byte
– Block Move Word
– Memory Fill
Move Byte
• Operands:
– IN: VB, IB, QB, MB,
SMB, AC, Constant,
*VD, *AC, SB
– OUT: VB, IB, QB, MB,
SMB, AC, *VD, *AC,SB
Swap Byte
• Dùng để trao đổi nội
dung của byte thấp và
byte cao trong từ đơn
(byte)
• Operands:
– IN: VW, T, C, IW,
QW, MW, SMW,
AC,*VD, *AC, SW
Ví dụ: MOVE và SWAP
Block Move Byte
• Operands:
– IN, OUT: VB,
IB, QB, MB,
SMB, *VD,
*AC, SB
– N: VB, IB, QB,
MB, SMB, AC,
Constant,
*VD, *AC, SB
Ví dụ:
Memory Fill
• Operands:
– IN: VW, T, C, IW, QW, MW,
SMW, AIW,Constant, *VD,
*AC, SW
– OUT: VW, T, C, IW, QW, MW,
SMW, AQW,*VD, *AC, SW
– N: VB, IB, QB, MB, SMB, AC,
Constant,*VD, *AC, SB
Ví dụ
5.9. Các lệnh tác động tới ngăn xếp
• Trước khi một chương trình ngắt được gọi: thì cần phải thiết lập mối quan hệ
giữa một đoạn chương trình (mà muốn thực hiện ngắt) với các sự kiện ngắt.
• Sử dụng câu lệnh (ATCH) để thực hiện liên kết sự kiện ngắt (được xác định
bởi số sự kiện ngắt)và các đoạn chương trình cần thực hiện ngắt (được xác
định bởi số chương trình ngắt.
• Có thể thiết lập liên kết cho nhiều sự kiện ngắt tới một chương trình ngắt
nhưng không thể thực hiện liên kết cho một sự kiện ngắt với nhiều chương
trình ngắt
• Lệnh DTCH (Detach Interrupt)
Detach Interrupt:
Dùng để làm mất tích cực của từng sự kiện ngắt r
biệt bằng cách phá bỏ mối liên kết giữa đoạn chươ
trình ngắt với sự kiện ngắt đó, sử dụng DTCH tro
chương trình ngắt.
INTERRUPT 6
Sinh viên tự nghiên cứu phần HSC và
PTO/PMW
Bài 10
6.2. Bộ đếm tốc độ cao (HSC)
• 1 - Bộ đếm tốc độ cao là gì?
• 2 - Các đầu vào của HSC
• 3 - Các chế độ hoạt động của HSC
• 4 - Byte điều khiển
• 5 - Thiết lập CV và PV
• 6 - Byte trạng thái
• 7 - Các ngắt trong HSC
• 8-Thực hiện một số chế độ hoạt động của HSC
1- Bộ đếm tốc độ cao là gì?
• HSC là gì? Là bộ đếm tốc độ cao, được sử dụng để đếm các sự kiện
xảy ra với tần số cao (chu kỳ xuất hiện lớn hơn chu kỳ quét của
CPU) mà các bộ đếm thường trong CPU không thực hiện được.
• Tần số đếm của HSC phụ thuộc vào loại CPU.
Vùng nhớ đặc biệt để lập trình cho HSC
• Câu lệnh trong HSC:
– High-Speed Counter
Definition (HDEF)
– Câu lệnh High – Speed
Counter (HSC)
HSC: 0 to 5
MODE: 0 (HSC0)
0 tới 11 (HSC1 or 2)
N: 0 tới 2
Hoạt động của bộ đếm HSC
• Bộ giải mã cung cấp xung clock và reset cho bộ đếm HSC.
• Đầu ra của HSC tích cực trong khoảng thời gian mà giá trị CV nhỏ
hơn hoặc bằng với giá trị PV.
• Khi CV=PV thì HSC sẽ thực hiện một ngắt đồng thời lúc đó lệnh
reset counter cũng thực hiện và giá trị mới PV được cập nhật.
• Khi sự kiện ngắt bị reset thì giá trị PV và trạng thái đầu ra đầu tiên lại
được lặp lại.
• Vì các sự kiện ngắt xảy ra chậm hơn rất nhiều so với tốc độ đếm của
counter do đó mỗi một sự kiện ngắt nên được thực hiện trong một
chương trình ngắt riêng biệt.
Các bước khởi tạo bộ đếm HSC
– Nạp giá trị cho byte điều khiển
– Gán bộ đếm với Mode tương ứng (dùng lệnh HDEF)
– Khởi tạo giá trị hiện thời (CV)
– Nạp giá trị đặt trước (PV)
– Gán chương trình ngắt với các sự kiện ngắt (lệnh ATCH
– nếu sử dụng ngắt)
– Cho phép ngắt
– Chọn bộ đếm thực hiện (Lệnh HSC)
Chú ý:
- Toàn bộ các bước trên đều được thực hiện trong một chương trì
HSC.
- Việc khởi tạo này chỉ thực hiện một lần, khi nào cần thay đổi giá
2- Các đầu vào của HSC
3- Các chế độ hoạt động của HSC
• Mode 0, 1, 2: dùng đếm một pha với hướng đếm được xác định
bởi bit nội.
• Mode 3, 4, 5: dùng đếm một pha với hướng đếm được xác định
bởi bit ngoại, tức là có thể chọn từ đầu vào Input.
• Mode 6,7,8: dùng đếm 2 pha với 2 xung vào, một xung đếm tăng
một xung đếm giảm.
• Mode 9,10, 11: dùng để đếm 2 xung A/B của Encoder, có 2
dạng:
– Dạng 1: đếm tăng 1 khi có xung A/B quay theo chiều thuận, đếm giảm 1
khi có xung A/B quay theo chiều nghịch.
– Dạng 2: đếm tăng 4 khi có xung A/B quay theo chiều thuận, đếm giảm 4
khi có xung A/B quay theo chiều nghịch.
• Mode 12: chỉ áp dụng với HSC0 & HSC3. HSC0 dùng để đếm
xung phát ra từ Q0.0 & HSC3 đếm xung từ Q0.1 (phát ra ở chế
độ phát xung nhanh mà ko cần đấu nối phần cứng).
4 - Byte điều khiển (Control Byte)
Chọn kiểu reset, start và tần số đếm cho HSC
Hoạt động của đầu vào reset & start
Chế độ 1X
Chế độ 4X
Vai trò của Byte điều khiển
Chú ý: Các giá trị mới của CV và PV chỉ thực sự được cập nhật ch
khi lệnh HSC được thực hiện
Đọc giá trị hiện thời (CV) của HSC
6 - Byte trạng thái (Status Byte)
Mô tả:
+ Hướng đếm
+ Khi giá trị hiện tại bằng giá trị đặt
7 – Các ngắt trong HSC
• HSC0: gọi ngắt khi CV=PV
• HSC1 và HSC2 gọi ngắt khi 1 trong 3 trường
hợp xảy ra:
– khi CV=PV
– khi đầu vào Reset tích cực
– khi chiều đếm của bộ đếm thay đổi
8 – Thực hiện một số chế độ hoạt động của
HSC
• 1- Khởi tạo hoạt động của HSC (ở các chế độ 0,
1 hoặc 2)
• 2- Thay đổi chiều đếm của HSC ở các chế độ
đó
• 3- Thay đổi giá trị CV mới
• 4- Thay đổi giá trị PV mới
• 5- Tắt hoạt động của HSC
8.1- Khởi tạo hoạt động của HSC1
(ở các chế độ 0, 1, 2)
• B1: Trong Main: sử dụng bit SM0.1 để gọi chương trình con.
• B2: Trong chương trình con
Thiết lập byte điều khiển (SMB47) để cho phép HSC hoạt
động (theo chế độ mong muốn)
• B3: Thực hiện câu lệnh HDEF (HSC=1, MODE=0)
• B4: Load giá trị CV vào SMD48 (Double Word)
• B5: Load giá trị PV vào SMD52 (Double Word)
• B6: Thực hiện ngắt khi CV=PV (Event 13)
• B7: Thực hiện ngắt khi Reset từ bên ngoài (Event 15)
• B8: Thực hiện lệnh ngắt toàn cục (ENI)
• B9: Thực hiện lệnh HSC
• B10: Thoát khỏi chương trình con
8.2- Thay đổi chiều đếm của HSC
VD: vừa thay đổi PV lại vừa thay đổi hướng đếm thì
SM47 = 16#B0
8.5- Tắt hoạt động của HSC
• Bước 1: Load 16#00 vào SMB47
• Bước 2: Thực hiện HSC
Ví dụ: Khởi tạo HSC1 ở chế độ 1, khi CV = PV
thực hiện ngắt và reset bộ đếm
MAIN
SUBROUTINE
INTERRUPT
Bài tập ứng dụng
• Bài tập 1: Lập trình với HSC1.
- Viết chương trình khởi tạo bộ đếm HSC1 hoạt động ở
Mode 1, chế độ 1X, xuất kết quả đếm ra vùng nhớ QW2.
- Tạo xung có tần số 1hZ tại Q0.0 cấp vào ngõ vào xung
Clock, quan sát trạng thái ngõ ra tại QW2 khi HSC1
hoạt động ở Mode 1. Trong quá trình hoạt động, tác
động chân Reset để kiểm tra việc xóa bộ đếm.
Bài 11
6.3. Phát xung tốc độ cao
• 1- Đầu ra tốc độ cao (High – Speed Output)
• 2- Hoạt động của PTO (Pulse Train Output)
• 3- Hoạt động của PWM (Pulse Wide Modulation)
1- Đầu ra tốc độ cao
• CPU S7-200 có hai đầu ra xung tốc độ cao là: Q0.0
& Q0.1, dùng cho việc điều chế độ rộng xung tốc độ
cao nhằm đk các thiết bị khác.
• Phương pháp:
– Điều chế độ rộng xung 50% (PTO)
– Điều chế độ rộng xung theo tỉ lệ (PWM)
Byte điều khiển cho chế độ phát xung tốc độ cao PTO/PWM
2- Hoạt động của PTO
• PTO cung cấp đầu ra là dãy xung vuông (50% chu
kỳ) gồm số xung và chu kỳ mong muốn.
– Số xung: 0 tới 4,294,967,295
– Chu kỳ: 10 μs tới 65,535 μs hoặc 2 ms tới 65,535 ms.
• Các bước thực hiện:
– Reset đầu ra xung tốc độ cao ở chu kỳ đầu của chương trình.
– Chọn loại đầu ra xung là Q0.0 hay Q0.1
– Định dạng thời gian cơ sở (time base) theo bảng
– Các byte cho việc định dạng
• SMB67 (Q0.0)
• SMB77 (Q0.1)
– Ngoài ra:
Byte điều khiển ở chế độ PTO
Chế độ hoạt động PTO
• Khởi tạo chế độ hoạt động của PTO
• Thay đổi thời gian chu kỳ (Cycle Time)
• Thay đổi số xung (Pulse Count)
• Thay đổi đồng thời cả chu kỳ và số xung
Thay đổi số xung
(Pulse Count)
• Bước 1: Load 16#84 (16#8C) vào SMB67
• Bước 2: Load số xung vào SMW72
• Bước 3: Thực hiện câu lệnh PLS
• Bước 4: Thoát khỏi chương trình con
Ví dụ: thực hiện điều chế độ rộng xung kiểu
PTO theo giản đồ tại đầu ra Q0.0
Chương trình viết bằng LAD
MAIN
SUBROUTINE
19
SUBROUTINE
INTERRUPT (INT_0)
3. Hoạt động của PWM
• PWM cung cấp đầu ra có thời gian chu kỳ cố định (Cycle time) với độ rộng
xung (duty cycle) có thể thay đổi.
– Cycle time: 10 μs tới 65,535 μs hoặc
2 ms tới 65,535 ms
– Pulse width time: 0 μs tới 65,535 μs
0 ms tới 65,535 ms
• Các bước định dạng: (tương tự như PTO)
– Reset đầu ra xung tốc độ cao ở chu kỳ đầu của
chương trình.
– Chọn loại đầu ra xung là Q0.0 hay Q0.1
– Định dạng thời gian cơ sở (time base) theo bảng
– Các byte cho việc định dạng
• SMB67 (Q0.0)
• SMB77 (Q0.1)
– Ngoài ra:
Byte điều khiển ở chế độ PWM
Khởi tạo hoạt động của PWM
• Khởi tạo PWM cho đầu ra Q0.0
• Thay đổi độ rộng xung ở đầu ra
Khởi tạo PWM cho đầu ra Q0.0
• Bước 1: Sử dụng SM0.1:
– Set đầu ra Q0.0=0
– GọI chương trình con. (Subrountine)
• Bước 2: Thực hiện chương trình con
– Load giá trị 16#C3 (16#CB ) vào SM67
– Các giá trị này cho phép:
• Hàm PTO/PWM hoạt động
• Lựa chọn tăng theo ms /ms
• Đặt giá trị độ rộng xung và thờI gian chu kỳ
• Bước 3: Load Cycle Time vào SMW68
• Bước 4: Load Pulse Width vào SMW70
• Bước 5: Thực hiện câu lệnh PLS
• Bước 6: Load 16#D2 ( 16#DA) vào SMB67
• Bước 7: Thoát khỏI chương trình con
Thay đổi độ rộng xung ở đầu ra
Nếu tín hiệu thực tế đo được là 8mA, hỏi mức nước cần
tính toán và hiển thị trên HMI là bao nhiêu?
Ví dụ 2
2- Xuất tín hiệu analog qua Module
EM232
• Các tín hiệu có thể xuất ra qua EM232
– Tín hiệu đơn cực (tín hiệu dòng điện): 0 – 20mA.
– Tín hiệu lưỡng cực (tín hiệu điện áp): -10 – 10 VDC
– Tín hiệu 0 – 20mA tương ứng với giá trị 0 – 32000
– Tín hiệu -10VDC – 10VDC tương ứng với -32000 –
32000.
• Vùng nhớ được đưa vào AQW
Ví dụ
• Module đầu ra analog có độ phân giải là 12bit.
Muốn xuất tín hiệu đầu ra là 8v thì phải đưa ra
giá trị thanh ghi đầu ra analog là bao nhiêu?
32000
?
8v 10v U
Bài 13
323
Nội dung
• 6.5.1 - Truyền thông Freeport
• 6.5.2 - Truyền thông sử dụng giao thức Modbus
324
6.5.1– Truyền thông Freeport
• 1. Chế độ Freeport và hoạt động của nó
• 2. Ví dụ
325
Bar Code Reader
326
327
I- Freeport Communication
• 1. Chế độ Freeport cho phép chương trình kiểm soát được các cổng truyền
thông của CPU S7-200. Ở chế độ này có thể thực hiện các giao thức truyền
thông Use – Defined ( Freeport) để giao tiếp với các thiết bị thông minh mà có
hỗ trợ RS 232.
• Hoạt động ở chế độ Freeport:
– Được thực hiện thông qua các BYTE đặc biệt SMB30 (port 0) và SMB130
(port 1).
– Lệnh truyền (XMT) & ngắt truyền: lệnh truyền chó phép S7 200 truyền
tối đa lên tới 255 ký tự từ cổng COM. Ngắt truyền sẽ thông báo cho chương
trình trên S7 200 biết khi việc truyền đã kết thúc.
– Ngắt nhận ký tự: sẽ thông báo cho chương trình biết một ký tự đã được
truyền qua cổng COM.
– Lệnh nhận (RCV): sẽ thực hiện nhận toàn bộ bản tin từ cổng COM và sau
đó đưa ra một ngắt trong chương trình khi bản tin đó đã nhận xong. Trong
S7 200 cho phép sử dụng byte SM để cấu hình cho lệnh RCV nhận biết ký
tự bắt đầu và kết thúc một bản tin.
Chú ý: Chế độ FreePort chỉ hoạt động (Active) khi CPU ở chế độ RUN.
328
1.1. Sử dụng cáp RS232/PPI Multi – Master trong
chế độ Freeport
Chú ý: Việc tạo thời gian trễ cho phép cáp PC/PPI đủ thời gian chu
Sang chế độ nhận, vì vậy dữ liệu có thể được truyền từ từ 329
cổng RS
1.2. Khởi tạo chế độ Freeport
331
Truyền dữ liệu (XMT)
Lệnh truyền dữ liệu:
Gửi đi dữ liệu trong một bộ đệm (gồm một hay nhiều ký tự (t
Chú ý: - Khi việc truyền một khung dữ liệu kết thúc (ký tự cuối
cùng trong bộ đệm được gửi đi) thì s7 200 đưa ra một ngắt.
Ngắt số 9 – Port 0
Ngắt số 26 – Port 1
- Có thể thực hiện truyền mà ko sử dụng ngắt mà sử dụng
bít SM 332
Nhận dữ liệu (RCV)
Lệnh nhận dữ liệu:
Nhận dữ liệu lưu vào bộ đệm (gồm một hay nhiều ký tự (tới 2
Chú ý: - Khi việc nhận một khung dữ liệu kết thúc (ký tự cuối
cùng trong bộ đệm nhận được) thì s7 200 đưa ra một ngắt.
Ngắt số 23 – Port 0
Ngắt số 24 – Port 1
- Có thể thực hiện việc nhận dữ liệu ko sử dụng ngắt mà
sử dụng bít SM
SMB86 – Port 0 – Set lên 1 khi việc nhận kết
333thúc
SMB186 – Port 1
Các byte trong bộ đệm nhận
SMB86 đến SMB94 : Port 0
SMB186 đến SMB194: Port 1
Chú ý:
- Có thể sử dụng
+ SMW90 thay cho SMB88 - kiểm tra điều kiện bắt đầu m
+ SMW92 thay cho SMB89 – kiểm tra điều kiện kết thúc m
- SMB2 là byte nhớ đệm nhận ký tự trong suốt quá
trình truyền thông ở chế độ Freeport
- SM3.0: kiểm tra lỗi (Freeport parity error ) trong quá
trình truyền dữ liệu 336
SMW90 lưu giá trị Idle line time (khoảng thời gian tối thiểu giữa 2
Sử dụng Idle line time để bắt đầu thực hiện lệnh nhận dữ
338
Các bước thực hiện
• 1. Viết chương trình trên STEP7-Micro/Win
• 2. Thiết lập cổng truyền thông
• 3. Thiết lập cáp RS232/PPI Multi Master
• 4. Sử dụng chương trình truyền Com và hiển thị
kết quả.
339
1. Viết chương trình trên STEP7-Micro/Win
340
341
342
343
Ngắt nhận (Recive Interrupt)
INT_0
344
Ngắt timer
345
Ngắt truyền
(Transmit Interrupt)
346
6.5.2 - Truyền thông sử dụng giao thức
Modbus
• 1. Giới thiệu chung
• 2. Một số yêu cầu khi sử dụng giao thức
Modbus
• 3. Địa chỉ Modbus
• 4. Sử dụng khối Modbus Slave
• 5. Sử dụng khối Modbus Master
• 6. Ví dụ
347
Modbus là gì?
• Modbus là một phương tiện (giao thức) truyền thông giữa nhiều thiết bị với nhau
thông qua cặp dây xoắn ( sợi quang, không dây, ethernet, điện thoại di động... )
• Theo mô hình ISO/OSI thì Modbus thực chất là một chuẩn giao thức dịch vụ thuộc
lớp ứng dụng.
• Cơ chế vận chuyển:
– Nối tiếp (RS232 hoặc RS485) – Modbus chuẩn
– Qua TCP/IP – Modbus qua Ethernet
• Hệ thống Modbus là một hệ thống “Chủ - tớ” (Master - Slave).
– Master: PC, PLC, DCS, RTU…
– Slave: thiết bị trường, PLC ….
• Có 3 chế độ truyền:
– Modbus ASCII
– Modbus RTU
– Modbus/TCP
348
1. Giới thiệu chung
• Thư viện hàm của Step 7 Micro/Win hỗ trợ truyền thông giữa
CPU S7 200 với các thiết bị Modbus Master/Slave một cách dễ
dàng.
• Các khối lệnh Modbus được cài đặt trong thư viện nó giúp cho
CPU S7 200 trở thành một thiết bị Modbus.
• Khối lệnh Modbus – Slave: cấu hình S7 200 thành thiết bị
Modbus RTU Slave
• Khối lệnh Modbus – Master: cấu hình S7 200 thành thiết bị
Modbus RTU Master
349
2. Một số yêu cầu khi sử dụng giao thức
Modbus
• Khối lệnh Modbus Master sử dụng các nguồn tài nguyên sau
của S7-200:
– Khởi tạo khối Modbus Master sẽ dành 1 cổng của CPU cho
truyền thông Modbus.
– Các lệnh trong khối Modbus Master tác động đến tất cả các
biến SM liên quan đến truyền thông Freeport trên cổng
truyền thông CPU tương ứng.
– Sử dụng 3 chương trình con và 1 ngắt.
– Sử dụng 1 khối 284 byte thuộc vùng nhớ V.
– CPU S7-200 cần có phiên bản 2.00 trở lên để hỗ trợ thư viện
giao thức Modbus Master.
350
2. Một số yêu cầu khi sử dụng giao thức
Modbus (tt)
• Khối lệnh Modbus Slave sử dụng các nguồn tài nguyên sau của
S7-200:
– Khởi giao thức Modbus Slave để chỉ định cổng 0 cho việc
truyền thông giao thức Modbus Slave. Lệnh MBUS_INIT sẽ
kiểm soát việc cổng 0 ở chế độ Modbus Slave hay PPI.
– Các lệnh Modbus Slave tác động đến tất cả các biến SM liên
quan đến truyền thông Freeport trên cổng 0.
– Sử dụng 3 chương trình con và 2 ngắt.
– Sử dụng 1 khối 779 byte thuộc vùng nhớ V.
351
3. Địa chỉ Modbus
• Địa chỉ Modbus được định dạng dưới kiểu giá trị gồm 5 ký tự
(ký tự đầu là kiểu dữ liệu, 4 ký tự còn lại là Offset)
• Modbus Master
• Modbus Slave
Chú ý: Tất cả các địa chỉ Modbus đều là địa chỉ cơ sở 1 352
( nghĩ
là tính địa
Tham chiếu địa chỉ Modbus tới CPU S7- 200
353
4. Sử dụng khối Modbus Slave
• Trong khối Modbus Slave hỗ trợ 2 lệnh:
– MBUS_INIT
– MBUS_SLAVE
• Các bước thực hiện:
– Thực hiện lệnh MBUS_INIT: để khởi tạo và thay đổi các tham số truyền
thông Modbus. Khi lệnh MBUS_INIT thực hiện, một số chương trình con và
ngắt ẩn sẽ tự động được thêm vào chương trình.
– Đặt địa chỉ khởi đầu cho 779 byte liên tiếp thuộc vùng nhớ V (yêu cầu bắt
buộc của các lệnh Modbus Slave).
– Thực hiện khối lệnh MBUS_SLAVE: được gọi ở tất cả các vòng quét.
– Kết nối cáp truyền thông với cổng 0 ở S7-200 với thiết bị Modbus Master.
Chú ý: phải đảm bảo địa chỉ đặt trong miền V ko bị trùng với miề
Master truy cập. 354
Lệnh khởi tạo Slave
+ Mode: lựa chọn giao thức truyền thông là
Modbus (=1)
hoặc PPI (=0)
+ Baud: tốc độ truyền
(1200,2400,4800,9600,19200, 38400,57600
và 115200)
+ Addr: định địa của thiết bị Slave từ 1 đến
247
+ Parity: kiểm tra chẵn lẻ 0 - Không có parity
1- Parity lẻ
Đầu vào/Đầu ra2- Parity chẵn
Kiểu
(0 – 32767ms)Baud,HoldStart DWORD
+ MaxAI: số lượng
Done vào analog BOOL(0-32) 355
+ MaxHold: sốError
lượng thanh ghiBYTE lưu giữ V
Ví dụ
356
Lệnh Modbus Slave
Done BOOL
Error BYTE
357
Bảng mã lỗi
Mã lỗi Mô tả
0 Không có lỗi
1 Lỗi miền vùng nhớ
2 Tốc độ Baud hoặc parity sai
3 Địa chỉ Slave sai
4 Tham số Modbus sai
5 Vùng thanh ghi lưu trữ trùng với vùng biến Modbus Slave
6 Parity nhận được sai
7 Mã CRC nhận được sai
8 Hàm yêu cầu sai hoặc không được hỗ trợ
9 Địa chỉ vùng nhớ ở yêu cầu sai
10 Chức năng Slave không được bật
358
5. Sử dụng khối Modbus Master
- Khối Modbus Master hỗ trợ 2 lệnh sau:
+ MBUS_CTRL
+ MBUS_ MSG
- Các bước thực hiện:
+ Thực hiện lệnh MBUS_CTRL: để khởi tạo và thay đổi tham số truyền
thông Modbus (thực hiện trong tất cả các vòng quét). Khi lệnh này được
thực hiện thì tất cả các chương trình con và ngắt ẩn sẽ được tự động add
vào chương trình.
+ Sử dụng Library Memory để thực hiện cài đặt các vùng nhớ của 2 khối
lệnh.
+ Thực hiện lệnh MBUS_MSG
+ Kết nối cáp truyền thông giữa cổng 0 của S7 200 với thiết bị Modbus
Slave
359
Lệnh khởi tạo Master
• Mode: lựa chọn giao thức truyền thông
• Parity: phải đặt trùng với thiết bị Modbus Slave
• Timeout: thiết lập số ms phản ứng từ Slave
Mode BOOL
Baud DWORD
Parity BYTE
Timeout INT
Done BOOL
Error BYTE
360
Ví dụ
Mã Lỗi Miêu tả
0 Không có lỗi
1 Chọn Parity không đúng
2 Chọn tốc độ Baud không đúng
3 Chọn Timeout không đúng
4 Chọn chế độ không đúng
361
Lệnh MBUS_MSG
• Khởi tạo một yêu cầu tới thiết bị Slave
và trả lời đáp ứng từ thiết bị Slave.
– First: chỉ được kích hoạt 1 lần trong một scan khi
có một yêu cầu mới gửi tới. Đầu vào thường là
tín hiệu bắt sườn lên.
– RW: xác định message là để đọc hay để nghi.
(Đầu ra số và thanh ghi giữ hỗ trợ cả yêu cầu
đọc và gửi dữ liệu). 0 – là đọc, 1 – là ghi.
– Addr: địa chỉ bắt đầu của Slave (Modbus slave
hỗ trợ)
– Count: là số bit (số word) dữ liệu được đọc và
ghi ( max là 120 word hoặc 1920 bit).
Đầu vào/Đầu ra Kiểu
– DataPtr: là con trỏ trỏ tới vùng V (Master) Mode BOOL
(giá trị truyền vào là con trỏ địa chỉ gián tiếp) Baud DWORD
Parity BYTE
Timeout INT
Done BOOL
Error BYTE
Chú ý: trước khi lệnh MBUS_MSG thực hiện thì lệnh MBUS_C
362
phải thực hiện không có lỗi
Ví dụ
363
Cách đóng gói dữ liệu theo Word/Bit
Chú ý
365
6. Ví dụ
Ví dụ 1:
Yêu cầu: Cấu hình S7-200 CPU 22x thành thiết bị Modbus Master.
Thực hiện ghi tới thiết bị Slave mỗi khi I0.0 được bật.
CPU 22x thực hiện ghi 8 bit kể từ địa chỉ VB0 tới thiết bị Slave. Dữ
liệu này sẽ dược ghi tới 8 bit đầu ra số của thiết bị Slave kể từ địa chỉ
00001.
CPU S7 200
VB0.0 00001 Modbus Slave
VB0.1 00002 Digital Ouputs
VB0.2 00003
VB0.3 00004
VB0.4 00005
VB0.5 00006
VB0.6 00007
366
VB0.7 00008
Code chương trình
Main
Khởi tạo CPU 22x làm Modbus Master
367
Mỗi lần I0.0 được bật thì thực hiện lệnh ghi tới thiết bị Modbus Slave
368
369
Bài 14 - 15
Bài tập
Bài tập Cho hệ thống như sơ đồ dưới đây:
1:
Start (I0.0)
Q0.0
Stop (I0.1)
B¨ng t¶i 2
Q0.2
Bong chøa
Q0.4
§Ìn b¸o ®Çy E-7
Stop ? Yes
Biến lưu No
trạng thái
M0.0=1?No Q0.0=0; Q0.1=0;Q0.2=
của start
Yes T37(5s) inactive
Q0.0=1;Q0.1=1;Q0.2=0 T38(3s) inactive
T37 (5s) active;T38 inactive
T37=1? No End
Yes
Q0.0=0; Q0.1=0;Q0.2=1
T37(5s) inactive
T38(3s) active
Yes T38=1? No
Biểu đồ thời gian
I/O 1 scan
t(s)
I0.0
1 scan
t(s)
I0.1
5s 5s
t(s)
Q0.0
5s 5s
t(s)
Q0.1
3s 3s
t(s)
Q0.2
Bài tập 2: Hình vẽ như ví dụ 1
Stop ? Yes
Biến lưu trạng thái của I0.0 No
M0.0=1? No Q0.0=0; Q0.1=0;Q0.2=
Yes T37(5s) inactive
Q0.0=1;Q0.1=1;Q0.2=0 T38(3s) inactive
T37 (5s) active;T38 inactive
T37=1? No
Q0.0=0;Yes
Q0.1=0;Q0.2=1 End
T37(5s) inactive
T38(3s) active
Yes T38=1? No Yes
Yes No C0=1?
Counter 0 (C0) active
(5)
Bài tập 3 Một hệ thống cảnh báo cho một ngôi nhà như sau:
Khi nhấn I0.0 hệ thống cảnh báo bắt đầu hoạt động:
+ Nếu có người xâm nhập vào khu vực nhà thì cảm biến hồng ngoại tích cực. Khi đó
Đèn báo động sẽ sáng nhấp nháy với tần số là 1 Hz. Và chỉ bị tắt khi ấn nút off.
+ Nếu 1trong 3 cửa mở thì chuông báo động kêu. Nó chỉ kêu trong khoảng 60s rồi tự
động tắt. (Chú thích: nếu cửa đang mở mà bị đóng lại thì chuông vẫn tiếp tục kêu cho
đến khi hết khoảng thời gian là 60 s. Và nếu cửa lại bị mở trở lại thì chuông sẽ kêu với
chu kỳ 60s mới).
Chú ý: + Nút ấn I0.0 là dạng tiếp điếm duy trì( I0.0=0 khi Off, I0.0=1 khi On).
+ Các tiếp điểm I0.1, I0.2, I0.3: là các tiếp điểm thường mở duy trì (trạng thái
Logic=0 khi cửa mở và =1 khi cửa đóng).
+ Tiếp điểm đầu ra của hồng ngoại I0.4 là tiếp điểm thường mở không duy trì.
Bài tập 4 Cho hệ thống như sơ đồ dưới đây:
S0 Stop
H1 S1 Station 4
H2 S2 Station 3
H3 S3 Station 2
H4 S4 Station 1
S5 Go-Down
Khi nhấn I0.0 hệ thống cảnh báo bắt đầu hoạt động:
+ Đèn báo động sẽ sáng nhấp nháy với tần số là 1hz khi có tín hiệu của cảm biến hồng
ngoại I0.4 và khi các cửa đều ở trạng thái đóng. Đèn chỉ bị tắt khi ấn nút Off.
+ Hệ thống chuông báo động sẽ kêu trong vòng 60 s rồi tự tắt khicó tín hiệu của cảm
biến hồng ngoại và 1 trong 3 cửa bị mở. (Các cửa đều có thể mở rồi được đóng
lại ngay)
+ Hệ thống dừng toàn bộ khi ấn nút Off.
Chú ý: + Nút ấn I0.0 là dạng tiếp điếm duy trì( I0.0=0 khi Off, I0.0=1 khi On).
+ Các tiếp điểm I0.1, I0.2, I0.3: là các tiếp điểm thường mở duy trì (trạng thái
Logic=0 khi cửa mở và =1 khi cửa đóng).
+ Tiếp điểm đầu ra của hồng ngoại I0.4 là tiếp điểm thường mở không duy trì.
Lưu đồ thuật toán Begin
Main program
I0.0: On/Off
No
I0.0=1 ?
Yes
Đèn báo ht hđ
Q0.0= 1
Yes Cảm biến
No
I0.4=1?
Yes Rơ le ở các cửa
I0.1 or I0.2 No
or I0.3 =0? LED
Yes
Q0.2=1;T37(60s) activeQ0.1=1(1Hz); T38 active
T37=1? No
Yes Chuông
I0.0=1->0 ?
Q0.2=0;T37 inactive
Q0.1=0;T38 inactive
Q0.0=0
End
Ôn tập
• Các nội dung chính
• Nội dung thi học kỳ