ctc trong plc

9
Thi gian thc trong PLC S7-200 ( Tkhai báo đến cho ra mt sn  phm ng dng) CPU 200 cung cap 2 lch đọc và ghi giá trcho đồng h(Ngày, Tháng, năm, gi, phút, giây). Các dliu đọc ghi cho đồng hcó giá tr1 byte và phi được mã hoá theo kiu sthp nhphân BCD. READ_RTC (LAD) : TODR (STL) : Lnh đọc ni dung ca đồng hthi gian thc vào bđệm 8 byte được chthtrong lnh  bng toán hng T.  SET_RTC (LAD) : TODW (STL) : Lnh ghi ni dung ca bđệm 8 byte được chthtrong lnh bng toán hng T vào đồng hthi gian thc.  Chú ý : Không sdng lnh TODR, TODW va trong chương trình chính va trong chương trình xlý ngt. Nếu TODR, TODW đã được thc hin thì khi gi chương trình ngt, các lnh đồng htrong chương trình xlý ngt skhông thc hin na. Lúc đó Bit SM4.5 có giá trlogic 1. Ví d: vcách sdng đồng hthi gian thc : Trong ví dnày đồng hđược đọc và nhtrong bnhđệm 8 - byte bt đầu tVB400 sau đó giá trbyte đầu tiên (96 trong VB400) được chuyn đến thanh ghi AC0 để tăng lên 1 đơn vđược ghi trli đồng h. Các đại lượng này được tính theo ngày dương lch.  Cài đặt thi gian thc:  Cài mc thi gian bt đầu hot động cho PLC. Chn PLC --> Time Of Day Clock --> Set. Truy sut dliu tđồng hthi gian thc trong PLC. // Lnh này chcn thc hin 1 ln trong cchương trình.  // Khi thc hin lnh trên, vi T = VB0 thì các giá trthông sđược phân bnhư sau:   Năm 0 - 99 V B0 Tháng 1 - 12 VB1  Ngày 1 - 31 VB2 Gi0 - 23 VB3 Phút 0 - 59 VB4

Upload: nguyenung88

Post on 19-Jul-2015

227 views

Category:

Documents


0 download

TRANSCRIPT

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 1/9

Thời gian thực trong PLC S7-200 ( Từ khai báo đến cho ra một sản phẩm ứng dụng)

CPU 200 cung cap 2 lệch đọc và ghi giá trị cho đồng hồ (Ngày, Tháng, năm, giờ, phút,giây). Các dữ liệu đọc ghi cho đồng hồ có giá trị 1 byte và phải được mã hoá theo kiểu sốthập nhị phân BCD. 

READ_RTC (LAD) :TODR (STL) :

Lệnh đọc nội dung của đồng hồ thời gian thực vào 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 dung của bộ đệm 8 byte được chỉ thị trong lệnh bằng toán hạng T vào đồnghồ thời gian thực. 

Chú ý : Không sử dụng lệnh TODR, TODW vừa trong chương trình chính vừa trongchương trình xử lý ngắt. Nếu TODR, TODW đã được thực hiện thì khi gọi chương trìnhngắt, các lệnh đồng hồ trong chương trình xử lý ngắt sẽ không thực hiện nữa. Lúc đó BitSM4.5 có giá trị logic 1.

Ví dụ: về cách sử dụng đồng hồ thời gian thực :

Trong ví dụ này đồng hồ được đọc và nhớ trong bộ nhớ đệm 8 - byte bắt đầu từ VB400 sauđó giá trị byte đầu tiên (96 trong VB400) được chuyển đến thanh ghi AC0 để tăng lên 1đơn vị và được ghi trở lại đồng hồ.

Các đại lượng này được tính theo ngày dương lịch. Cài đặt thời gian thực: Cài mốc thời gian bắt đầu hoạt động cho PLC. Chọn PLC --> Time Of Day Clock --> Set. 

Truy suất dữ liệu từ đồng hồ thời gian thực trong PLC. 

// Lệnh này chỉ cần thực hiện 1 lần trong cả chương trình. // Khi thực hiện lệnh trên, với T = VB0 thì các giá trị thông số được phân bố như sau: 

 Năm 0 - 99 VB0Tháng 1 - 12 VB1 Ngày 1 - 31 VB2Giờ 0 - 23 VB3Phút 0 - 59 VB4

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 2/9

Giây 0 - 59 VB5Thứ trong tuần 1 - 7 (1: chủ nhật) VB7

Do đó: muốn truy suất đại lượng nào thì phải dùng ô nhớ tương ứng với đại lượng

Còn việc mà cần phải làm cũng khá quan trọng đó là: Cài đặt và so sánh thời gian choPLC với PC để lấy thời gian PC làm chuẩn. Chọn tab PLC/ Time of day.../ ở đây mình sẽso sánh khoảng thời gian rồi cài đặt cho PLC lấy thời gian thực từ PC chạy.

Khả năng lưu trữ khi mất điện giống như thông tin máy tính dùng pin CMOS thì PLCS7-200 là 240h. Còn về Real Time thì lấy Time của PC

Hiển thị thời gian thực trên TD200: Dùng chức năng Embedded data của TD 200: cái đócho phép sử dụng để hiện thị giá trị lên TD 200, nhớ là kiểu W nhé, vậy từ VB3 phảichuyển giá trị đó vào 1W

So sánh khung thời gian: sử dụng để so sánh khung. bạn thiết lập chương trình đọc thờigian thực xong, chỉ việc so sánh giờ là đc mà, đúng 5h 00 p va 00s và 23h 00p và 0s

em chép đoạn code này vào rùi chuyển sang LAD coi cho dễ nha:network 1:

LD SM0.5EU

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 3/9

TODR year:VB240 // đọc Real Time và chứa vào VB240SCPY "00.00.2000, 00:00:00", VB260 // lệnh này giúp bạn truy xuất ngoài màn hình TD200 ,trên màn hình TD 200 chỉ cần lấy địa chỉ VB260 ra, chọn kiểu String (hum bữa anh có chỉ choem rùi đó)HTA day:VB242, VB261, 2 // ngày chứa trong VB261 là mã ASSCI trong VB242 là mã HEX,tương tự cho các dòng dướiHTA month:VB241, VB264, 2

HTA year:VB240, VB269, 2HTA hour:VB243, VB273, 2HTA minute:VB244, VB276, 2HTA second:VB245, VB279, 2

em muốn so sánh thì lấy mã HEX để so sánh thì lấy VB24*, còn lấy ASSCI thì lấy VB26* vàVB27*

LD SM0.5EUTODR VB240 // đọc Real Time và chứa vào VB240SCPY "00.00.2000, 00:00:00", VB260 // lệnh này giúp bạn truy xuất ngoài màn hình TD200 ,trên màn hình TD 200 chỉ cần lấy địa chỉ VB260 ra, chọn kiểu String (hum bữa anh có chỉ choem rùi đó)HTA VB242, VB261, 2 // ngày chứa trong VB261 là mã ASSCI trong VB242 là mã HEX, tương tự cho các dòng dướiHTA VB241, VB264, 2HTA VB240, VB269, 2HTA VB243, VB273, 2HTA VB244, VB276, 2HTA VB245, VB279, 2

tham khảo thêm về Real Time nhé :Format of 8-byte Time Buffer (T)

0_year (0-99)__________current year__________(BCD value)

1_month (1-12)________current month_________(BCD value)2_day (1-31)___________current day____________(BCD value)3_hour (0-23)__________current hour__________(BCD value)4_minute (0-59)________current minute_________(BCD value)5_second (0-59)________current second_________(BCD value)6_luôn luôn là 007_day of week (1-7)_____ngày trong tuần, 1=Sunday_(BCD value)nó sẽ hiển thị theo định dạng

Date: 01-Jan-90Time: 00:00:00

Day of Week: Sundayvd: LD SM0.5EUTODR VB0

giá trị ngày giờ dc chứa trong các byte sau

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 4/9

vb0 -> year vb1 -> monthvb2 -> dayvb3 -> hour 

vb4 -> minvb5 -> secvb7 -> day of week (1=sunday, 2=monday....)

muốn so sánh từ 5h-23h thì lấy VB3 ra so sánh (là dạng BCD tức là  16#giá trị cầnsosanh vd 16#5)Bạn dùng các lệnh đọc đồng hồ READ_RTC, ghi đồng hồ SET_RTC đối với ngôn ngữladder hay dùng lệnh TODR và TODW đối với ngôn ngữ STL. Để tham khảo về lệnhREAD_RTC, SET_RTC, bạn có thể ghé vào trang về PLC và SCADA của tôi đã gửi ở đầu box này hay đọc phần help của MIcrowin. Do việc viết chương trình LADDER lên diễnđàn là khó khăn nên mình sẽ viết một ví dụ cho bạn bằng STL. Khi dùng lệnh

READ_RTC, TODR, bạn sẽ cung cấp một ô nhớ cho lệnh chứa nội dung đầu tiên nhậnđược từ lệnh, khi đó, các ô nhớ tiếp theo sẽ được PLC tự động điền vào mà không cần càiđặt gì thêm.Gọi ô nhớ đó là T, ta có bảng tham khảo sau:Ô nhớ ----- Nội dung ---- Tầm trịT-----------Năm ---------00:99T+1--------Tháng--------01:12T+2---------Ngày---------01:31T+3---------Giờ-----------00:23T+4---------Phút----------00:59T+5---------Giây-----------00:59

T+6---------[]--------------0T+7---------Thứ -----------1(chủ nhật):7(thứ bảy)

Vd: cần đọc nội dung thời gian hiện tại của hệ thống, bật Q0.0 từ 11g:11g30 ngày 25/2/08ta viết STL như sau:LD SM0.0TODR MB0 //MBO là ô nhớ đầu tiên chứa tgian trả về, MB0: năm, MB1:tháng...LB ==MB2,25AB ==MB1,2AB ==MB0,8AB ==MB3,11

AB >=MB4,00AB <=MB4,30= Q0.0

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 5/9

- Câu lệnh Sequence Control Relay (hay SCR) cung cấp một kỹ thuật điều khiển đơngiản. Tại bất kỳ vị trí nào trong ứng dụng ta có thể sử dụng vòng lặp, các vòng lặp SCR cóthể được sử dụng trong chương trình và có thể truy cập trực tiếp tới ứng dụng đang chạydo đó ta có thể lập trình và gỡ rối một các nhanh và dễ dàng.

- Câu lệnh Load Sequence Control Relay (LSCR) sẽ cập nhật SCR và logic stacks cùng

giá trị của bit S được tham chiếu bởi instruction (N).Đoạn SCR được yêu cầu hay không yêu cầu phụ thuộc vào kết quả của SCR stack. Giátrị của SCR stack được sao chép đến đầu của ngăn xếp hoặc có thể truy xuất trực tiếp tớiđầu ra.

- Sequence Control Relay Transition (SCRT) xác định bit SCR được cho phép (bittiếp theo được đặt). Khi đó bit n của SCRR được đặt còn bit n của câu lệnh LCRTsẽ tắt.

- Câu lệnh LSCR sẽ đánh dấu kết thúc một đoạn SCR - Câu lệnh Conditional Control Relay End (CSCRE) đánh dấu kết thúc của một đoạn

SCR khi được thực thi. CSCRE chỉ tích hợp trong STL editor.

Chương trình con (CTC)- Được gọi từ chương trình chính- Sau khi kết thúc thì được trả lại quyền điều khiển cho main tại thời điểm được gọi- Việc sử dụng chương trình con dễ dàng kiểm soát chương trình và dễ dàng bảo trì

và sửa lỗi- CTC được sử dụng khi được gọi- Có thể truyền tham số cho CTC là các biến hay ô nhớ - Các địa chỉ tuyệt đối trong bộ nhớ mà CTC nên hạn chế sử dụng I, Q, M, SM, AI,

AQ, V, T, C, S, AC

- Có thể nhập và xuất CTC vào Project khác nếu chỉ sử dụng biến trong bộ nhớ L

Sử dụng CTC  Để sử dụng chương trình con thì ta phải làm 3 công việc sau:

o Tạo một chương trình cono Xác định tham số của CTC ( đượct thể hiện trong Local Variable Table của

chương trình ).o Gọi chương trình con từ chương trình Main hoặc chương trình con khác

Khi chương trình con được gọi thì toàn bộ các giá trị hiện tại được lưu vào ngănxếp và lấy ra khi CTC kết thúc ( Đỉnh ngăn xếp =1, các giá trị còn lại = 0).

Gọi chương trình con kèm tham số:o Tham số được xác định thông qua bảng khai báo biến cục bộ của CTCo Tham số phải có tên, có kiểu biến và kiểu dữ liệu ( Max 16 tham số )o Tham số gồm các biến vào (IN), biến ra (OUT) và biến vào ra (IN_OUT)

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 6/9

Bảng mô tả kiểu biến của chương trình con:

Tham số Mô tả IN Thông số được truyền vào CTC. Nếu thông số là địa chỉ trực tiếp (VB10) thì

giá trị tại ô nhớ đó sẽ truyền trực tiếp vào CTC. Nếu tham số là một địa chỉ gián

tiếp (*AC1), giá trị tại vị trí con trỏ được truyền vào CTC. Nếu tham số là mộthằng số (16#1234) hoặc một địa chỉ (&VB100) thì giá trị hằng số và địa chỉ đóđược truyền vào CTC

IN_OUT Giá trị tại vị trí ô nhớ sẽ truyền vào CTC và giá trị sau cùng của CTC sẽ trả lạivị trí ô nhớ đó. Nếu tham số là một hằng số (16#1234) hoặc một địa chỉ(&VB100) thì giá trị hằng số và địa chỉ đó không được cho phép.

OUT Kết quả từ CTC sẽ trả lại giá trị tại ô nhớ. Hằng số (16#1234) hoặc một địa chỉ(&VB100) thì giá trị hằng số và địa chỉ đó không được cho phép.

TEMP Tất cả ô nhớ mà không phải là tham số truyền cho CTC thì có thể được sử dụngtrong CTC để lưu dữ liệu

Kiểu Dữ liệutham số Mô tả 

BOOL

Kiểu cho bit vào và ra. IN3 trong ví dụ dưới là kiểu boolean input

BYTEWORDDWORD

Kiểu xác định tham số vào và ra không dấu tương ứng 1,2,4byte

INTDINT

Kiểu xác định tham số và ra có dấu tương ứng với 2 và 4 byte

REAL Số thực 4byteSTRING Kiểu kí tự 4byte để trỏ tới một chuỗi

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 7/9

Power Flow

Tạm thời chưa quan tâm

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 8/9

Tạo chương trình conCác bước để tạo chương trình con

- From the Edit menu, choose Insert>Subroutine- From the Instruction Tree, right click on the Program Block icon and select

Insert > Subroutine from the popup menu

- From the Program Editor window, right-click and select Insert > Subroutinefrom the popup menu

The Program Editor changes from the display of the previous POU to the newsubroutine. A new tab appears at the bottom of the Program Editor, identifying the newsubroutine.

// At this point, you can work on the new subroutine, or leave it alone and return to thePOU where you were working previously:

· If you want to assign the parameters of the subroutine now, you can define themusing the Local Variable Table for that subroutine.

 Notes:* Remember that there is a separate Local Variable Table for each POU in your 

 program. Local variables for this subroutine must be defined in the Local Variable Tablethat appears when you have the tab of this subroutine selected. Make sure that you haveselected the appropriate tab any time you edit the Local Variable Table.

** The maximum limit of input/ output parameters for each subroutine call is 16. If youattempt to download a program that exceeds this limit, an error is returned.

· If you want to write the logic for this subroutine while its tab is selected, simply begin working in the Program Editor window.

· If you want to work on a different POU, click on the tab for that POU in order todisplay it in the Program Editor window.//

Không sử dụng câu lệnh RET khi kết thúc CTC- Không sử dụng câu lệnh End trong CTC- END for the main program, RET for SBR, and RETI for INT

5/16/2018 CTC Trong Plc - slidepdf.com

http://slidepdf.com/reader/full/ctc-trong-plc 9/9

Gọi CTC Nesting and Recursion

// Có tổng số 64 CTC trong một chương trình (128 subroutines for CPU 226XM)

// Từ chương trình chính, bạn có thể lồng chương trình con (đặt mộtcuộc gọi chương trình con trong chương trình con), độ sâu là tám  // Từ một chương trình ngắt, bạn không thể lồng CTC

// Một lệnh gọi chương trình con không thể đặt trong bất kỳ chương trình conđượcgọi từ chương trình ngắt

// Truy hồi (một chương trình con tự gọi mình) không bị cấm, nhưng bạn nên cẩnthận khi sử dụng truy hồi với chương trình con