Phần này mình sẽ chia sẻ những kiến thức về Real - time được sử dụng trong PLC S7-200 từ khai báo đến việc cho ra một sản phẩm ứng dụng.
Thân chào
Printable View
Phần này mình sẽ chia sẻ những kiến thức về Real - time được sử dụng trong PLC S7-200 từ khai báo đến việc cho ra một sản phẩm ứng dụng.
Thân chào
CPU 200 cung cấp 2 lệnh đọ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 đồng hồ 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 trong chương trình xử lý ngắt. Nếu TODR, TODW đã được thực hiện thì khi gọi chương trình ngắ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 đó Bit SM4.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 VB0
Tháng 1 - 12 VB1
Ngày 1 - 31 VB2
Giờ 0 - 23 VB3
Phút 0 - 59 VB4
Giây 0 - 59 VB5
Thứ 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à cũng khá quan trọng đó là: Cài đặt và so sánh thời gian cho PLC 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.
Chúc thành công
Vậy, PLC lấy giờ của máy tính hay gio trong plc!
Khả năng lưu dữ liệu khi mất điện là bao nhiêu giờ vậy anh, chia sẽ với.
theo tôi biết thì nó lấy giờ trong máy tính, cái tự động cập nhật thời gian đó, mình có thể đặt được mà, ý thứ 2 bác hỏi đó là khả năng lưu trứ bao nhiều thì nó tùy thuộc vào PLC, khoảng 50h gí đó, chính là thời gian mà tụ cấp nguồn nuôi giữ chương trình trong PLC đó. với S7 300 thì dùng Pin, con S7 200 là tụ. không bít có đúng không ta :D
chào mọi người!!!
giả sử em dùng vùng nhớ VB0 vậy VB3 sẽ là vùng nhớ về giờ, vậy khi so sánh em có cần phải chuyển VB3 sang dạng HEX để so sanh ko?
Cảm ơn mọi người
Bạn cần tìm kỹ trong diễn đàn trước khi viết bài nhé, Về thời gian thực của S7 200 đã ở link dưới:
http://plcvietnam.com.vn/showthread.php?t=36
và đóng chủ đề tại đây, qua link kia tôi giải đáp cho bạn. thank
Em dùng chức năng Embedded data của TD 200: cái đó cho phép bạn sử dụng để hiện thị giá trị lên TD 200, nhớ là kiểu W nhé, vậy từ VB3 bạn fai chuển giá trị đó vào 1 W. Còn sử dụng để so sánh khung. bạn thiết lập chương trình đọc thời gian thực xong, chỉ việc so sánh giờ là đc mà, đúng 5h 00 p va 00s
và 23h 00p và 0s
Mình gửi cho bạn xem mình mô phỏng hiển thị thời gian trên TD 200 nhé:
http://farm2.anhso.net/pic/o/6850/16...5415/TD200.jpg
và đây là code PLC
http://www.mediafire.com/?hf0k5skmjtifhjy
em chép đoạn code này vào rùi chuyển sang LAD coi cho dễ nha:
network 1:
LD SM0.5
EU
TODR year:VB240 // đọc Real Time và chứa vào VB240
SCPY "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ỉ cho em 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ưới
HTA month:VB241, VB264, 2
HTA year:VB240, VB269, 2
HTA hour:VB243, VB273, 2
HTA minute:VB244, VB276, 2
HTA 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.5
EU
TODR VB240 // đọc Real Time và chứa vào VB240
SCPY "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ỉ cho em 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ưới
HTA VB241, VB264, 2
HTA VB240, VB269, 2
HTA VB243, VB273, 2
HTA VB244, VB276, 2
HTA VB245, VB279, 2
ok chưa
đoạn code bị lỗi là do em chưa đặt địa chỉ cho các symbon year, month, day, hour, minute, và second
chuong trình đọc và hiển thị timer trên TD200 nè http://www.mediafire.com/?rjt8b0wckcp43q9
ua, anh không có TD 200 V 3 đâu. nhưng để chiều anh thử xem, chắc cũng tương tự thôi :)
em xem lại thông số baud rate là bao nhiêu? set lại 9600 (set baud rate 19k2 hay 185k đều không hiển thị được _ đều này anh chưa biết tại sao, nhưng khi xài 9600 thì ok)
chỉnh trên PLC và cả trên TD200
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à 00
7_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-90
Time: 00:00:00
Day of Week: Sunday
vd:
LD SM0.5
EU
TODR VB0
giá trị ngày giờ dc chứa trong các byte sau
vb0 -> year
vb1 -> month
vb2 -> day
vb3 -> hour
vb4 -> min
vb5 -> sec
vb7 -> 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ần sosanh vd 16#5)
cài timer trong PLC chưa?
em gởi chuong trình bị lỗi eeeee qua cho anh xem lại.
trước khi giải thích anh hỏi em nhé:
1.Bộ RTC mã hóa các giá trị ngày tháng năm, giờ phút giây trong các byte nhớ là BCD đúng không?
2. TD 200 hiển thị được thì anh chọn vùng nhớ hiển thị ra là word (2byte)
vw202 lấy là do trong lệnh RTC anh dùng vw200 (bắt đâu từ byte 200 mà)
chuyển sang vw104 để hiển thị TD 200
dĩ nhiên khi chuyển vậy thì có phải truy cập vào vw104 tương đương với Vb104 và VB105 không?
MOV 0 vào VB104 vì giá trị của ta chỉ lấy trong VB105 của vw104
và dòng tiêp theo anh chuyển sô BCD sang số nguyên I. thì em mới nhìn thấy đc trên TD. Khi dữ liệu chuyển từ BCD sang I xong lưu vào vw104. cuối cùng em mov ra vw60 để hiển thị đó :)
Cảm ơn anh,nhưng em còn chưa hiểu ở chổ "Bộ RTC mã hóa các giá trị ngày tháng năm, giờ phút giây trong các byte nhớ là BCD" theo trình tự logic như thế nào,anh nói cho em biết chổ trình tự mã hóa được ko. Vì nhiều sách em đọc cái real time này nó chỉ nói lệnh ko à,ko nói rõ nguyên lý mã hóa ntn.
You must code all date and time values in BCD format (for example, 16#02 for the year 2002). See the Table below.
Format of 8-byte Time Buffer (T)
T Byte Description Byte Data
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 00 reserved – always set to 00
7 day of week (1-7) current day of the week, 1=Sunday (BCD value)
cái này trong help có nè, Hiểu lôm la răg. PLC nó lưu các giá trị Ngày, tháng, năm.... Của bộ thời gian thực ở dạng BCD đó mà
các anh chị cho em hỏi cách đổi giờ đồng hồ thời gian thực trong s7 200 bằng mã bcd
thầy dạy nhưng em chưa hiểu lắm
em có vd này giải thích dùm em cách đổi giờ nhé. .
LD SM0.0
TODR VB400
MOVD +0, VD0
MOVD +0, VD4
MOVB VB403, VB3
MOVB VB404, VB4
BCDI VW2
BCDI VW4
MUL +60, VD0
+I VW6, VW2
LDW= VW2, +375
OW= VW2, +475
OW= VW2, +575
dạ. .nhưng em ko biết tính giá trị của giờ (em đang rối phần này)
LDW= VW2, +375
OW= VW2, +475
OW= VW2, +575
anh giúp em cách đổi giờ ra số và ngược lại nhìn số trên ta tính ra giờ nhe
bạn tham khảo file mình viết bạn cứ dùng các lệnh so sánh với năm ,ngày , giờ hoặc phút,giây tương ứng cho mục đích bài toán của bạn .chúc bạn thành công
http://www.mediafire.com/?52znzzas357g7xf
code đủ nè anh
LD SM0.0
TODR VB400
MOVD +0, VD0
MOVD +0, VD4
MOVB VB403, VB3
MOVB VB404, VB4
BCDI VW2
BCDI VW4
MUL +60, VD0
+I VW6, VW2
LDW= VW2, +375
OW= VW2, +475
OW= VW2, +575
JMP 1
LDW= VW2, +465
OW= VW2, +565
OW= VW2, +665
JMP 2
END
LBL 1
LDB= 0, VB405
OB= 1, VB405
OB= 2, VB405
= Q0.0
END
LD SM0.0
END
LBL 2
LDB= 0, VB405
OB= 2, VB405
= Q0.0
END
LD SM0.0
END
code của bạn đưa tôi xem qua có thể hiểu ý tưởng của người lập trình như sau:
kích hoạt bộ thời gian thực, sau đó dùng so sánh giá trị thời gian giờ và phút để đưa ra cảnh báo. còn vấn để đổi thời gian ra số, bạn xem phía trên của mục này, tôi đã trả lời một bạn khác rồi đó ^^!