LAP TRINH LAD VA STL
Trang 1- Ngôn ngữ LAD dễ hiểu, dễ lập trình
Trang 2Nguyễn Đức Thành 47
Hình 2 Bấm tiếp Next để chọn các khối OB, bắt buộc là OB1, các OB khác có thể thêm vào sau
Hình 3 Chọn cách lập trình STL, LAD hay FBD, trong lùc lập trình có thể tùy ý thay đổi Bấm tiếp Next đặt tên cho Project, sau đó bấm Finish, xuất hiện cửa sổ lập trình (Hình 5)
Trang 3Nguyễn Đức Thành 48
Hình 4
Hình 5 Nửa cửa sổ bên trái sắp xếp dạng thư mục, kích chuột vào đó để mở ra các mục con Bấm vào dòng SIMATIC 300 Station bên trái rồi bấm tiếp vào Hardware bên phải để xem cấu hình phần cứng của PLC (Hình 6) (công việc này cũng có thể thực hiện sau)
Gỉa sử cấu hình đơn giản gồm các module DI/DO, AI/AO, ta kích chuột vào dòng SIMATIC 300, SM- 300, chọn các module phù hợp, dùng chuột kéo vào các slot của Station từ
số 4 trở đi, (slot 3 dùng cho module IM), thay đổi địa chỉ các ngõ vào ra module, sau đó vào menu Station – Save rồi Close (Hình 7)
Trang 4Nguyễn Đức Thành 49
Kết nối PLC với máy tính, cấp nguồn PLC , đặt PLC ở chế độ STOP, ta vào menu Options-Set PG/PC Interface chọn kết nối PC Adapter (Auto) Có thể Upload cấu hình PLC lên máy tính, thay đổi đia chỉ I/O, địa chỉ mạng… rồi download trở lại xuống PLC
Trang 6Hình 8
Trang 8Nguyễn Đức Thành 53
Dùng các biểu tượng trên menu hay các hàm ở cửa sổ bên trái ta bắt đầu lập trình Chương trình gồm nhiều network, bấm chuột phải vào thanh đứng để thêm network (Hình 11) Sau khi lập trình ta bấm biểu tượng save để lưu file
Nếu lập trình dùng STL thì các hàm không hiện ra, vào menu Help, chọn Help on Statement List để tìm các lệnh mong muốn (Hình 12)
Có thể mô phỏng chương trình bằng phần mềm PLCSim tích hợp Bấm biểu tượng Simulation ở menu của Simatic Manager , cửa sổ PLCSim xuất hiện, ta vào menu File
để thêm PLC, vào menu Insert thêm các vùng nhớ cần quan sát (Hình 13, 14)
Trở lại Simatic Manger, bấm chuột vào ô Blocks rồi bấm chuột vào biểu tượng Download để download Project xuống PLCSim Nếu chỉ download một số file ta dùng chuột trái kết hợp với phím Ctrl để chọn file download
Trở lại PLCSim, cho PLC Run và tác động lên các địa chỉ cần thiết để xem kết quả (Hình 15) Có thể xem mô phỏng trên cửa sổ OB1 bằng cách chọn Debug-Monitor
Sau khi mô phỏng thành công ta download project xuống PLC, nối PLC với máy tính bằng cáp lập trình, đóng cửa sổ PLCSim, cấp nguồn cho PLC, chế độ STOP, vào menu Simatic Manger- Options- Set PG/PC Interface, mở ra cửa sổ chọn kết nối (Hình 16) , ta chọn
PC Adapter (Auto) sau đó bấm Properties chọn địa chỉ trạm và vận tốc truyền phù hợp Khi cài đặt xong đóng cứa sồ và tiến hành download Cấp nguồn cho PLC Nếu PLC đang RUN thì phải chuyển sang STOP bằng nút MODE Select hay tác động từ máy tính thông qua menu PLC- Diagnostic/Settings- Operating Mode (Hình 17) Sau khi download xong cho PLC RUN và ta monitor hoạt động trên máy tính
Hình 11
Trang 9Nguyễn Đức Thành 54
Hình 12
Hình 13
Hình 14
Trang 10Nguyễn Đức Thành 55
Hình 15
Hình 16
Trang 11Nguyễn Đức Thành 56
Hình 17
Trang 12network cĩ tối đa 2000 hàng , mỗi hàng gồm nhãn , lệnh, địa chỉ và chú thích (sau //)
Sau khi đã biên tập xong, vào menu Symbol Table- Save để lưu bảng Vào cửa sổ biên tập của khối chọn View- Display with - Symbolic Representation để nhìn thấy địa chỉ ký hiệu
trong chương trình, ký hiệu toàn cục được đóng khung bằng dấu “, còn ký hiệu cục bộ có dấu
# đứng trước Nếu dùng View- Display with- Symbol Information thì hiển thị cả ký hiệu, địa
chỉ tuyệt đối , và chú thích đi kèm Các loại biến cho phép trình bày trong bảng 1 , tầm địa
chỉ cụ thể phụ thuộc loại CPU
I
EC Description Data Type
Trang 13Nguyễn Đức Thành 58
I
D Input double word DWORD, DINT, REAL, TOD, TIME
D Output double word DWORD, DINT, REAL, TOD, TIME
kyù hieäu
Trang 14Nguyễn Đức Thành 59
4 CÁC LỆNH BIT
Hình 18 Các lệnh bit Các lệnh bit thao tác trên các bit vùng nhớ I, Q, M, L, D, T, C, kết quả phép tính logic gọi
là RLO (Result of Logic Operation) RLO là một bit trong Status Word
RLO là kết quả chuỗi lệnh bit hay lệnh so sánh Chuỗi này kết thúc khi thực hiện phép gán RLO cho một bit nhớ (S, R, =) hay thực hiện lệnh nhảy có điều kiện
Trong Status Word có bit /FC (First Check), khi /FC=0 có nghĩa là kết thúc chuỗi logic
và bắt đầu chuỗi mới Khi /FC=1 RLO là giá trị của RLO kết hợp với lệnh bit hiện tại Bắt đầu một network /FC là 1
Trang 15Nguyễn Đức Thành 60
4.1 Lệnh LAD
- Trong LAD, các bit biểu thị bởi contact thường hở và thường đóng Bắt đầu
một network luôn luôn là một trong hai contact này Với RLO là 1 nếu bit ở địa
chỉ đó là 1, Với RLO là 0 nếu bit ở địa chỉ đó là 1
Hai tiếp điểm nối tiếp thì RLO AND với nhau, hai tiếp điểm song song thì RLO OR với
nhau
- Lệnh gán RLO cho một bit I, Q, M, L, D
- Lệnh đảo trạng thái của RLO
- Lệnh SET coil cho một bit I, Q, M, L, D lên 1 nếu RLO là 1, nếu RLO là 0 bit
không đổi
- Lệnh RESET coil cho một bit I, Q, M, L, D,T, C xuống 0 nếu RLO là 1, nếu
RLO là 0 bit không đổi
- Lệnh Set Reset Flip flop set, reset một bit I, Q, M, L, D với ưu tiên cho reset
Nếu S=1, R=0, bit address và Q là 1, nếu R=1, bit address và Q là 0 Nếu S=0, R=0, bit address và Q không đổi
- Lệnh Reset-Set Flip flop set, reset một bit I, Q, M, L, D với ưu tiên cho Set
Trang 16M0.1 là 1 trong một chu kỳ máy khi I0.0 chuyển từ 0 lên 1
- Lệnh vi phân cạnh xuống cho kết quả RLO là 1 trong một chu kỳ khi RLO trước lệnh thay đổi từ 1 xuống 0
- Lệnh POS khi được cho phép, Q là 1 trong một chu kỳ quét nếu bit address1 chuyển trạng thái từ 0 lên 1, address1, address 2 và Q thuộc vùng I,Q, M, L, D
M0.3 là 1 trong một chu kỳ máy khi I0.0 và M0.0 là 1 và I0.2 chuyển từ 0 lên 1
- Lệnh NEG tương tự, dùng phát giác cạnh xuống của address1
Trang 17Nguyễn Đức Thành 62
- Lệnh SAVE cất RLO vào BR, BR (binary result) là một bit trong Status word Với lệnh SAVE, /FC vẫn là 1, nghĩa là khi sang network khác BR sẽ dùng làm RLO cho bắt đầu network BR dùng tạo sự liên kết giữa hai network
4.2 Lệnh STL
- Trong STL khi thực hiện lệnh bit, trạng thái bit đầu tiên được kiểm tra bằng lệnh A (And), AN (And Not), O (Or), ON (Or Not) và nạp vào RLO, sau đó RLO sẽ thay đổi tùy theo
tổ hợp logic các bit tiếp theo
- Lệnh = gán RLO cho một bit và cho /FC là 0
Trang 18Nguyễn Đức Thành 63
Chú ý là chương trình STL ở trên không chuyển sang LAD được, giả sử ta lập trình LAD
sơ đồ bên phải rồi chuyển sang STL ta được chương trình sau
- Lệnh NOT đảo RLO
- Lệnh SET cho RLO là 1
Trang 19Nguyễn Đức Thành 64
= Q 0.0
- Lệnh AN( ) dùng để tạo And RLO với RLO nhóm lệnh logic giữa hai dấu (), đảo nó
và cất vào stack (tối đa là 7)
- Lệnh O( ) dùng để tạo Or RLO với RLO một nhóm lệnh logic giữa hai dấu (), và cất vào stack (tối đa là 7), sử dụng khi nhiều nhóm song song Lệnh này thường được thay bằng lệnh
O không toán hạng
- Lệnh ON( ) tương đương O( ) rồi đảo RLO
- Lệnh X( ) XOR nhóm lệnh với RLO cất vào stack
- Lệnh XN() thực hiện X() rồi đảo
- Lệnh S bit (I,Q,M,L,D) set bit khi RLO là 1, sau lệnh này /FC là 0
- Lệnh R bit (I,Q,M,L,D) reset bit khi RLO là 1, sau lệnh này /FC là 0
- Lệnh FP bit cho RLO là 1 trong một chu kỳ quét khi RLO chuyển từ 0 lên 1
- Lệnh FN bit cho RLO là 1 trong một chu kỳ quét khi RLO chuyển từ 1 xuống 0
- Lệnh SAVE cất RLO vào BR
5 LỆNH SO SÁNH
5.1 Lệnh LAD
- So sánh hai số nguyên có dấu, số nguyên kép có dấu, số thực thuộc loại I, Q, M, L, D, hằng số Lệnh được thực hiện khi RLO trước đó là 1, kết quả so sánh là RLO dùng cho lệnh kế hay gán cho một bit I, Q, M, L, D Lệnh có thể đặt ở đầu network và có thể nối tiếp hay song song các lệnh so sánh
Trang 20Nguyễn Đức Thành 65
5.2 Lệnh STL
- Lệnh so sánh được sử dụng với thanh ghi tích lũy ACC1 và ACC2, đây là các thanh
ghi 32 bit Ta nạp nội dung ô nhớ hay hằng số vào ACC1 bằng lệnh L địa chỉ hay L hằng số
Vùng địa chỉ gồm có I, Q, M, L, D, PI, P#, chiêu dài dữ liệu là byte, word, dword Mỗi khi thực hiện lệnh L nội dung của ACC1 được chuyển qua ACC2 trước khi nhận giá trị mới
- Giá trị ACC1 được chuyển qua ô nhớ bằng lệnh T địa chỉ
- So sánh ACC2 với ACC1, kết quả so sánh là RLO, là 1 nếu thóa mãn điều kiện so sánh Kết quả so sánh còn ảnh hưởng đến hai bit CC1 và CC0 trong Status Word
- So sánh số nguyên 16 bit ==I, <>I, <I, >I, <=I, >=I
L MD 4
L L#12 >D
A(
L MW 2
L MW 0 <I ) A(
L MD 8
L -5.000000e-001 >=R
)
Trang 21Nguyễn Đức Thành 66
)
O
)
A T 0
= Q 0.0 6 LỆNH TIMER Timer là bộ đếm xuống 10 bit, ký hiệu Tx, x đi từ 0 đến tối đa 255 tùy loại CPU Ta nạp giá trị ban đầu vào ACC1 dưới hai dạng - W#16#bxyz, b là đơn vị thời gian gồm bit 13, 12; xyz là ba số BCD từ 0 đến 999, từ bit 11 đến bit 0 Đơn vị thời gian b là 2 bit có giá trị thập phân theo bảng dưới: 10 ms 0
100 ms 1
1 s 2
10 s 3
- S5T#aH_bM_cS_Dms, giá trị tối đa là 9990 s hay S5T#2H_46M_30S
- Timer có hai ngõ ra để đọc giá tri đưa vào ô nhớ word, ngõ ra BI là giá trị Timer dạng nhị phân, không bao gồm b, ngõ ra BCD là giá trị timer dạng số Hex W#16#bxyz
6.1 Dạng LAD Khối
- Pulse Timer: tạo xung có bề rộng xác định
S Ngõ vào Start, khi S chuyển trạng thái lên 1, Timer đếm
xuống từ giá trị TV, Timer reset khi S =0
Bool
TV Gía trị đặt ban đầu, giá trị b do CPU tự chọn nếu dùng
dạng S5T#, có thể ghi trực tiếp với dạng S5T# hay dùng
ô nhớ I, Q, M, L, D cho cả hai dạng
Dạng
Q Ngõ ra, cũng là Tno, lên 1 khi S=1 Sau thời gian TV, Q
xuống 0, S phải duy trì lớn hơn TV, khi không dùng bỏ trống
Bool
R Reset, khi =1 làm Q và Tno = 0, Muốn Timer chạy lại
phải kích lại bằng S, khi không dùng bỏ trống
Bool
BI Gía trị còn lại của Timer, dạng số nguyên , 0 đến 999 Word
BCD Gía trị còn lại của Timer, dạng số BCD bao gồm đơn vị
thời gian , W#16#0 đến W#16#3999, khi không dùng bỏ trống
Word
Trang 22Nguyễn Đức Thành 67
- Extended Pulse Timer
Giống Pulse Timer, tuy nhiên có hai điểm khác:
- Tín hiệu S chỉ cần kích cạnh lên mà không cần duy trì
- Khi chưa hết thời gian timer, nếu S chuyển từ 0 lên 1 thì timer hoạt động lại từ đầu, tức
là bề rộng xung được kéo dài
- On Delay Timer
- S chuyển trạng thái từ 0 lên 1 và giữ ở mức 1, timer bắt đầu đếm xuống, sau thời gian timer, Tno và Q ON, Khi R=1 hay S=0 Ton và Q OFF
Trang 23Nguyễn Đức Thành 68
- Retentive On Delay Timer
Giống On Delay Timer, tuy nhiên có hai điểm khác:
- Tín hiệu S chỉ cần kích cạnh lên mà không cần duy trì
- Khi chưa hết thời gian timer, nếu S chuyển từ 0 lên 1 thì timer hoạt động lại từ đầu, tức
là thời gian delay được kéo dài
- Khi R On thì xóa Timer
- OFF Delay Timer
- Khi S ON thì Q ON, S chuyển sang OFF, Timer bắt đầu làm việc, sau thời gian delay Q
= Tno = 0
- Khi Timer đang chạy nếu S hay R chuyển lên 1 thì timer reset
Trang 24Nguyễn Đức Thành 69
6.2 Dạng LAD Coil
-Pulse Timer Coil
Khi RLO ON timer bắt đầu chạy, Tno ON, hết thời gian delay Tno OFF Reset Timer bằng lệnh R Tno
- Các loại timer khác
6.3 TIMER Dạng STL
- Có tên gọi giống Timer dạng coil
- Các bước lập trình timer gồm:
- Khai báo tín hiệu S
- Khai báo giá trị TV bằng lệnh L S5T# hay L W#16#bxyz hoặc L địa chỉ
- Khai báo loại timer (SP, SE, SD, SS, SF) và số timer
Trang 25Nguyễn Đức Thành 70
- Khai báo tín hiệu R (có thể bỏ qua)
- Đọc nội dung timer (12 bit) bằng lệnh
L S5T#10s //Preset 10 seconds into ACCU 1
SD T1 //Start timer T1 as an on-delay timer
L "CYCLE_TIME"
L 18 >=I
Trang 26- Dùng Timer tạo nhiều xung nhịp:
AN T1 //If timer T 1 has expired,
L S5T#250ms //load the time value 250 ms into T 1 and
SE T1 //start T 1 as an extended-pulse timer
NOT //Negate (invert) the result of logic operation
BEB //If the timer is running, end the current block
L MB100 //If the timer has expired, load the contents of memory byte MB100,
INC 1 //increment the contents by 1,
T MB100 //and transfer the result to memory byte MB100
Các bit của MB0 nhịp với chu kỳ
- Dùng Clock Memory: ta vào Hardware , bấm vào Slot CPU →Cycle/Clock Memory,
chọn vùng nhớ MB làm xung nhịp rồi download cấu hình xuống PLC Có tất cả 8 xung nhịp theo bảng sau
Trang 27Nguyễn Đức Thành 72
7 COUNTER
Counter là bộ đếm ba số thập phân từ 0 đến 999 Có tối đa 256 Counter , ký hiệu
counter là Cx, x=0 255 Các ngõ vào ra trong vùng nhớ I, Q, M, L, D
7.1 Counter dạng khối
- Đếm tăng giảm
- Đếm tăng và đếm giảm
Trang 28- Khai báo xung đếm
Ví dụ: I0.1 đếm lên khi I0.2=1
Trang 29Lệnh này chép ô nhớ hay hằng số ở IN ra ô nhớ OUT, các ngõ vào ra thuộc vùng nhớ I,
Q, M, L, D Dữ liệu ở IN không đổi Khi IN có chiều dài lớn hơn OUT, các byte dư bị cắt bỏ Khi OUT có chiều dài lớn hơn IN, các byte cao được thêm vào giá trị 0
8.b Lệnh STL
- Dùng lệnh L (Load) nạp giá trị hằng số hay ô nhớ (I, PI, I, M, L, D, Pointer, Parameter) vào Accumulator1 Lệnh T (Transfer) chuyển ACC1 ra ô nhớ (I, Q, PQ, M, L, D) Trước khi thực hiện lệnh L giá trị của ACC1 được chuyển cho ACC2, giá trị ACC1 là 0 Chiều dài ô nhớ có thể là byte, word, double word Lệnh được thực hiện không điều kiện
- TAK tráo đổi ACC1 và ACC2
- CAW tráo đổi hai byte thấp của ACC1 (B0 B1 B2 B3) → (B0 B1B3 B2)
- CAD tráo đổi 4 byte của ACC1 (B0 B1 B2 B3) → (B3 B2 B1 B0)
- POP chép ACC2 → ACC1, ACC3 → ACC2, ACC4 → ACC3
- PUSH ACC3 → ACC4, ACC2 → ACC3, ACC1 → ACC2
Trang 309 LỆNH CHUYỂN ĐỔI
9.a Lệnh LAD
Lệnh này chuyển đổi loại dữ liệu IN sang loại dữ liệu khác ở OUT
Chuyển đổi số BCD ra số nguyên và ngược lại:
- Lệnh BCD_I nhận vào số BCD (dấu và ba số thập phân, dạng W#16#syyy, s là 0 nếu
số dương, s là 1 (hay F) nếu số âm, yyy là ba số thập phân) hằng hay ô nhớ word (I, Q, M, L, D) chuyển sang số nguyên 16 bit đưa vào ô nhớ OUT (số nguyên âm biểu thị bằng mã bù 2)
- Lệnh I_BCD thực hiện ngược lại, nếu IN có trị tuyệt đối lớn hơn 999, lệnh không được thực hiện và ENO = 0
- Lệnh BCD_DI, DI_BCD thực hiện với số BCD 7 digit (số âm có bit 28 31 là 1) và số nguyên kép
Ví dụ: đổi số BCD âm -234 ra số nguyên chứa trong MW2, MW2 sẽ chứa số FF16
- Lệnh I_DINT đổi số nguyên 16 bit ra số nguyên 32 bit , các byte cao là 0 nếu số dương và 1 nếu là số âm
- Lệnh DI_REAL đổi số nguyên 32 bit ra số thực
- Số thực có chiều dài 32 bit theo cấu trúc sau
Trang 31- CEIL (Ceiling): làm tròn đến số nguyên lớn hơn số thực
- FLOOR: làm tròn đến số nguyên nhỏ hơn số thực
- Lệnh bù 1: đảo các bit của số nguyên
- Lệnh đảo dấu: đổi số dương ra âm và ngược lại
9.b Lệnh STL
Lệnh chuyển đổi STL làm việc trên ACC1 và kết quả chứa trong ACC1 Vậy phải dùng lệnh L để đưa toán hạng vào ACC1 Lệnh làm việc không điều kiện, muốn lệnh được thực hiện khi thỏa điệu kiện logic, ta dùng lệnh Nhảy xét Status Word
- BTI (BCD to Integer)
- ITB (Integer to BCD), nếu bị tràn lệnh không được thực hiện và hai bit OV, OS trong Status Word là 1
- BTD (BCD To Double Integer)
- DTB (Double integer to BCD), nếu bị tràn lệnh không được thực hiện và hai bit OV,
OS trong Status Word là 1
- ITD (Integer To Double integer)
- DTR (Double integer To Real)