Vùng nhớ PLC là gì? Chức năng của mỗi loại làm gì? Chúng ta cùng thảo luận và tìm hiểu nhé.
Thân chào
Printable View
Vùng nhớ PLC là gì? Chức năng của mỗi loại làm gì? Chúng ta cùng thảo luận và tìm hiểu nhé.
Thân chào
VÙNG NHỚ VÀ Ý NGHĨA
Vùng chứa chương trình ứng dụng : Vùng chứa chương trình được chia thành 3 miền
OB ( Organization block) : Miền chứa chương trình tổ chức.
FC ( Function) : Miền 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.
FB ( Function block) : Miền chứa chương trình con, được tổ chức thành hàm và có khả năng trao đổi dữ liệu với bất cứ 1 khối chương trình nào khác. Các dữ liệu này phải được xây dựng thành một khối dữ liệu riêng ( Data Block khối DB).
Vùng chứa tham số của hệ điều hành: Chia thành 7 miền khác nhau
I ( Process image input ) : Miền dữ liệu các cổng vào số, trước khi bắt đầu thực hiện chương trình, PLC sẽ đọc giá trị logic của tất cả các cổng đầu vào và cất giữ chúng trong vùng nhớ I. Thông thường chương trình ứng dụng không đọc trực tiếp trạng thái logic của cổng vào số mà chỉ lấy dữ liệu của cổng vào từ bộ đệm I.
Q ( Process Image Output) : Miền bộ đệm các dữ liệu cổng ra số. Kết thúc giai đoạn thực hiện chương trình, PLC sẽ chuyển giá trị logic của bộ đệm Q tới các cổng ra số. Thông thường chương trình không trực tiếp gán giá trị tới tận cổng ra mà chỉ chuyển chúng tới bộ đệm Q.
M ( Miền các biến cờ) : Chương trình ứng dụng sử dụng những biến này để lưu giữ các tham số cần thiết và có thể truy nhập nó theo Bit, Byte, Word hay Double Word.
T ( Timer) : Miền nhớ phục vụ bộ thời gian ( Timer) bao gồm việc lưu trữ giá trị thời gian đặt trước ( PV-Preset Value ), giá trị đếm thời gian tức thời ( CV –Current Value) cũng như giá trị Logic đầu ra của bộ thời gian.
C ( Counter) : Miền nhớ phục vụ bộ đếm bao gồm việc lưu trữ giá trị đặt trước ( PV- Preset Value), giá trị đếm tức thời ( CV _ Current Value)và giá trị logic đầu ra của bộ đệm.
PI : Miền địa chỉ cổng vào của các Modul tương tự ( I/O External input). Các giá trị tương tự tại cổng vào của modul tương tự sẽ được module đọc và chuyển tự động theo những địa chỉ. Chương trình ứng dụng có thể truy cập miền nhớ PI theo từng Byte ( PIB), từng từ PIW hoặc từng từ kép PID .
PQ : Miền địa chỉ cổng ra cho các module tương tự ( I/O External Output). Các giá trị theo những địa chỉ này sẽ được module tương tự chuyển tới các cổng ra tượng tự. Chương trình ứng dụng có thể truy nhập miền nhớ PQ theo từng Byte (PQB), từng Word (PQW) hoặc theo từng Double Word (PQD).
Vùng chứa các khối dữ liệu: được chia làm 2 loại:
DB(Data Block) : Miền chứa dữ liệu được tổ chức thành khối. Kích thước cũng như số lượng khối do người sử dụng quy định, phù hợp với từng bài toán điều khiển. Chương trình có thể truy nhập miền này theo từng bit (DBX), Byte (DBB), Word (DBW) hoặc Double Word (DBD).
L (Local data block) : Miền dữ liệu địa phương, được các khối chương trình OB, FC, FB tổ chức và sử dụng cho các biến nháp 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ó. Nội dung của một khối dữ liệu trong miền nhớ này sẽ bị xoá khi kết thúc chương trình tương ứng trong OB, FC, FB. Miền này có thể được truy nhập từ chương trình theo bit (L), byte(LB), Word (LW) hoặc Double Word (LD)
Có ai biết cách nạp một giá trị thực dấu phẩy động vào một biến khi lập trình không???Giúp mình với!!!!
Bạn đang làm ví dụ j thì mới dùng đến cái này phải ko nhỉ ? Post lên mọi người ví dụ lên trên đó :d
Hehe. Đôi lúc mình cũng nên có 1 cái gì đó mới mẽ tí. Thôi không chém gió nữa, đi vào vấn đề chính hen.
Mình cũng không rõ ý của chủ topic này là gì? Nhưng theo ý mình hiểu là về dấu chấm động trong khai báo số thực.
Ví dụ ở bộ so sánh số thực này. Mình muốn khai báo số 10 vào nha. Tại IN1 mình khai báo là "10" thì sẽ không được (hiện màu đỏ). Tại IN2 mình phải nhập vào là "10.0" thì mới được chấp nhận.
http://i1213.photobucket.com/albums/...Untitled-1.png
a oi cho e hoi ?
cai vung nho của timer CV –Current Value đó có thể lưu lại và đọc nó như thế nào?
chẳng hạn như e đang chạy một timer t0 đc thoi gian ts thì đừng lại. Vậy muốn chạy tiếp giá trị ts đó thì làm thế nào ?
Trong chương trình s7300 của e có nhiều tiếp điểm thường đóng kí hiệu như thế này DB208.DBX1 nghĩa là gì hả các bác?
Đây là vùng nhớ DB = Data block hay trong tiếng việt gọi là khối dữ liệu. Nơi lưu trữ dữ liệu.
DB??DBX?? có nghĩa là byte thứ ?? của khối dữ liệu ??.
Bạn có thể sử dụng nó như vùng nhớ đa dụng tùy chọn như vùng nhớ M. Và khi sử dụng và khai báo các khối hàm SFB, FB phải cần có DB lưu trữ thông tin cho nó.
Vậy là ok rồi.
Còn muốn hiểu SFB? FB? Chịu khó lấy manual ra đọc hay F1 gọi help đọc.
Nói vài chữ thì bạn có thể hiểu ngay nhưng để một người muốn hiểu và sử dụng từ nghiên cứu thì rất cực.
Hãy thử và cám nhận
ủa hình như em nhớ DB??.DBX là bit thứ ??? của khối ??,còn DB??.DBB?? mới là byte
^^
DB208.DBX1.0 là bit 1.0 trong DB 208 đó bạn,giống như kiểu M1.0 đó,mà giờ dữ liệu nhiều nên chứa trong DB cho tiện,cái bạn ghi hình như thiếu phần sau đó,bit là phải dạng như 1.?
Thế này nhé , vùng nhớ DB sẽ được cấu hình dưới dạng : DBa.DBbccc
Trong đó :a là chỉ số của khối DB bạn đang dùng.Gỉa sử như dùng DB208 thì bạn phải tạo 1 khối DB208 trong step 7 manager.
b là mã vùng dữ liệu quy định như sau :
+b = X : địa chỉ bit
+b = B :địa chỉ theo byte
+b =W :địa chỉ theo Word, 2 byte
+b =D :địa chỉ theo DWord, 4 byte
ccc chính là địa chỉ .
Ví dụ : DB208.DBX15.6 :khối DB208,X:địa chỉ theo bit;15.6 là bit thứ 7 của byte thứ 16
DB1.DBD10 :khối DB1,D:Địa chỉ theo Dword,10 :từ byte thứ 10 đến byte thứ 13
Khi sử dụng DB,địa chỉ sẻ tự phân vùng khi bạn khai báo,không sợ trùng địa chỉ.DB có 2 hình thức sử dụng là Global và Local.
bit tmpbool e không hiểu là dạng gì?e tìm location nhưng không tìm được.
cảm ơn bác rất nhiều.rất chi tiết.
2 lệnh (N) negative RLO adge detection và lệnh (NEG) là gì hả các bác?theo e được biết thì chúng đều phát hiện sườn xuống cả.
N(Negative RLO Edge Detection) cái này mới là bắt xung cạnh xuống của tiếp điểm mình đã đặt mà ko cần cấp nguồn cho tiếp điểm đó,còn khối hàm NEG(Address Negative Edge Detection) nó chỉ bắt xung cạnh xuống của tiếp điểm khi có nguồn cấp cho nó,có gì bạn tham khảo thêm phần help trong đó có ví dụ cụ thế ,pro nào biết thì chỉ thêm nhé ^^
http://www.mediafire.com/?8bjwv2a5dbbqw0s nè bạn ^^,lúc đầu bạn cứ kích I0.1 với I0.2 trước là bạn sẽ thấy sự khác biệt,đừng bật I0.0 nhe
e hiểu sự khác nhau của 2 lệnh rồi.nhưng vd của bác theo e thấy chưa thuyết phục lắm
STEP 7 System and Standard Functions for S7 300 and S7 400.pdf
http://www.mediafire.com/?gmbj9012agx47t9
1 file tiếng việt full về s7-300 trong đó chức năng về các khối SFC được giải thích khá cụ thể có ví dụ luôn
http://www.mediafire.com/?gslsozybioumhok
file này thì chỉ về cách khai báo và sử dụng DB khá cụ thể,cách sử dụng các khối SFB có ví dụ mẫu, cũng tiếng việt ,phần cuối có kèm theo ví dụ về các ứng dụng nữa như analog,hsc,..
http://www.mediafire.com/?8c5l9a6k9kbd5g4
các bác có tài liệu về lệnh mở khối không?. .share em xem tham khảo với!
có ai giúp mình ko?
Làm thế nào mình có thể ghi dữ liệu vào trong các khối dữ liệu DB được. Mình cũng đọc tài liệu nhưng không thấy phần nào nói về ghi dữ liệu vào DB cả. Mình cũng thử tạo một khối DB nhưng lại ko thể insert các địa chỉ cũng như dữ liệu mình tạo vào. Mong mọi người giúp đỡ. Cảm ơn nhiều.
Đính kèm 96
Dữ liệu sẽ được tự tạo khi link giữa DB tới SFB hay FB. Nếu sử dụng DB như một khối dữ liệu đa dụng thì chỉ cần đánh tên, chọn kiểu dữ liệu ( Bool, interger, real, time....), kiểu vùng nhớ ( Bit, byte, word, Dword) thì và save lại thì bạn có thể sử dụng với kiểu da dụng rồi. Và truy xuất lúc này là theo địa chỉ hoàn toàn không có vấn đề chỉ cần khối dữ liệu DB đó không bị khoá.
Thầy có ví dụ mẫu nào ko ah. Có thể share cho e tham khảo với đc không. Tks thầy.
Bước 1 là khởi tạo khối DB
http://img830.imageshack.us/img830/7739/khoitaodb.jpg
Bước 2: Open khối DB bằng cách Double click vào khối để mở khối DB và khai báo thông số.
http://img268.imageshack.us/img268/7...othongsodb.jpg
http://img821.imageshack.us/img821/5...thongsodb2.jpg
Bước 3: Viết chương trình trong OB1 ( OBxx, FB, FC..) và lấy thông số: Có thể lấy tên đặt trong DB hoặc địa chỉ trong DB
http://img291.imageshack.us/img291/3...huongtrinh.jpg
DB1.DBX2.0 = Start // Đây là địa chỉ trong DB1, bit Start.
http://img695.imageshack.us/img695/3...thanhmuccb.jpg
http://www.mediafire.com/?i215mq9asr6l1sf Ví dụ tham khảo, đơn giản nhưng có thể nói được về DB như thế nào thay cho biến M ^^.
Chúc thành công.
Cảm ơn thầy, e sẽ làm thử. Chúc thầy vui vẻ và thành công.
Ví dụ của thầy e đã làm lại và rất ok. Cho e hỏi, giá trị của vùng nhớ DB mình có thể nhập trước. Vậy khi mình đọc một giá trị về sau đó nhập vào vùng nhớ DB thì ntn hả thầy. Em cảm ơn...
thì nếu em dùng bit thì vẫn 1 in 1 out bình thường, còn muốn lưu trữ thông số thì em có thể dùng lệnh MOVE bình thường và tất nhiên khi em chọn kiểu dữ liệu nào thì đầu vào phải tương ứng như thế mới ok.
Sau khi em khai báo thành công thì em có thể sử dụng nó như tham số biến M bình thường. Còn kiểu dữ liệu thì em phải chú ý là Bool, interger, Double Interger, Real, Time,... và vùng nhớ lưu trữ nó: Bit, byte, word, Dword,... Phần này em tìm hiểu thêm trong kỹ thuật số 1 & 2. Tốt nhất nên đọc tài liệu viết bởi các thầy ở BK vì đầy đủ hơn.
thầy có ví dụ về lệnh mở khối không ạ?
cho e hỏi mình có thể tận dụng counter để đếm khi nào lên 1 thì set RLO =1 có dc ko ......e ko rành lắm mong jup đỡ
E viết bằng LAD cũng đã thử dùng lệnh MOVE như thầy nói nhưng chương trình báo là không hỗ trợ kiểu dữ liệu này. trong khi e dùng lệnh L(load) và T(tranfer) thì ko có hiện tượng báo lỗi. Cho e hỏi có phải khi viết với vùng nhớ này để ghi một data> bit thì ko thể dùng Lad.