Mình đang học PLC S7300 nhưng vẫn chưa hiểu các khối FB, FC, DB, VAT cho lắm. Các bạn có vi dụ đơn giản nào thì up lên cho mình tham khảo, cảm ơn các bạn
Printable View
Mình đang học PLC S7300 nhưng vẫn chưa hiểu các khối FB, FC, DB, VAT cho lắm. Các bạn có vi dụ đơn giản nào thì up lên cho mình tham khảo, cảm ơn các bạn
theo mình biết thì FC là khối chương trình con, FB cũng tương tự như FC nhưng khác ổ chỗ là FC chỉ có khả năng trao đổi dữ liệu với khối chương trình gọi nó còn FB thì có khả năng trao đổi dữ liệu với nhiều khối chương trình khác thông qua khối dữ liệu gọi là khối DB.
Nhưng trong đó toàn những ví dụ khó không à
http://www.mediafire.com/?r0oqr3pj3ba4smu của bạn đây, cái này lình làm đơn giản hi vọng bạn có thể hiểu dc
thanks các bạn để mình ngâm cứu thử=D>
bạn cứ xem đi rùi vướng đâu thì đưa lên rùi mọi người cùng xử lý nhé, chúc bạn thành công
Xin hỏi anh Tran_Hieu và mọi người một chút là: khối DB trong các hàm SFB có mục đích gì? Theo Lang_Tu.TM thì nó dùng để lưu trữ các giữ liệu trong hàm SFB, vậy các dữ liệu này tại sao mình không sử dụng được. Hay nói cách khác là, khi sử dụng DB trong các hàm SFB thì nó tự động tạo ra các vùng dữ liệu trong khối DB, các vùng dữ liệu này có thể sử dụng cho mục đích đọc hoặc ghi tới các vùng nhớ khác được không? thank anh Tran_Hieu và mọi người đã giúp đỡ.
- Sory bro H nhé, toàn bộ tài liệu trên áp dụng cho S7-1200 được không. Hoặc bro có tài liệu y chang như trên dành cho S7-1200 thì hay quá.
Dear anh Quốc.
Về phần đó thì 300 và 1200 là same same với nhau. Vì bản thân con s7-1200 là "con lai" giữa S7-200 và S7-300 như anh đã sử dụng sẽ thấy S7-1200 dựa nhiều vào việc config hardware nhưng khối lập trình lại như s7-300 và cách truy xuất trên 1200 là của s7-300.
hoàn toàn ok.
Về SFC. SFB là hàm hệ thống do siemens viết mình không thể "chọt" tới nó được đâu nhé mà chỉ using thôi bạn.
Còn DB được sử dụng dưới 2 dạng Instance và Share. Dễ hiểu hơn là biến cho 1 đối tượng ( FB, SFB) hoặc là biến toàn cục ( FB,FC,OB) đều có thể sử dụng các địa chỉ của nó.
Khi sử dụng dưới dạng Instance thì nó sẽ lưu trữ dữ liệu của khối hàm mà nó chỉ tới. Và địa chỉ này bạn có thể lấy và quan sát hay điều khiển đều được thông qua địa chỉ của nó
Ví dụ Bit thì là DBy.DBXa.b trong đó y, a, b là các chỉ số mà các bạn quan sát trong DB ( DB thứ y, byte a, bit b)...
Anh có thể nói rõ hơn về cách sử dụng khối DB dưới dạng Instance và dạng Share được không? Cách truy nhập khối thì em đã hiểu và đã làm rồi
DB dưới dạng Share: giữ liệu có thể đẩy tới bất kì vị trí nào trong khối DB và có thể truy nhập các vùng giữ liệu đó để thực hiện một công việc nào đó.
DB trong hàm FB thì sử dụng để lưu trữ giữ liệu các biến tạm. Vậy còn trong các hàm SFB hoặc SFC nó cũng sử dụng tương tự như trong khối hàm FB như thế có đúng không ạ.
Chia sẻ cùng mọi người khối dữ liệu UDT và cách sử dụng. Đây là một cách basic nhất để sử dụng. File chỉ mang tính chất demo còn phát triển và cách sử dụng thì mỗi người tự khám phá cách sử dụng UDT sao cho phù hợp và khi đó chia sẻ lại. Muốn nhận nữa thì hay cho đi.
Chúc thành công
Cam on anh Hieu nhieu ve nhung tai lieu nay!
anh hiếu ơi.anh chỉ dùm em cách truyền dữ liệu 1 ra cổng MPI để em giao tiếp với VB6.0 cái.em tìm lâu lắm rồi mà ko được
Nếu em dùng SFC14 và SFC15 để đọc và ghi giá trị của ZND và PKW lên biến tần có khả thi không ạ?
Trog thư viện của S7 300 hàm Scale chỉ có FC105 và FC106 để unscale nhưg 2 hàm này thì có 2 thôg số cố địh rồi, mìh ko thay đổi đc lih họat như hàm scale trg S7 200 nên e thử viết 1 FC để scale giốg như trog S7 200 ( tất nhiên là dưới dạg đơn giản, tính toán thôi chứ ko xử lý đc hết tất cả như trog cái hàm scale mẫu của s7 200 :) ). Nếu chỉ dùg hàm này 1 lần trog cả chươg trình thì tính toán ko vấn đề j cả tuy nhiên nếu sử dụg nhiều lần để chuyển đổi nhiều kiểu thag đo thì kết quả ra của các hàm FC được gọi ở phía sau khôg chính xác nữa mặc dù trog hàm e đều dùg biến L để tính toán.
Vậy e muốn hỏi nếu mìh muốn sử dụng nhiều hàm FC scale như trog S7 200 thì phải sửa lại chươgn trình ntn ah ? hoặc là a nào có hàm scale rồi thì up lên chia sẻ cho mọi ng vs :P
E cảm ơn trc nhé.
^_^ làm sao mà bạn nói các hàm FC được gọi ở phía sau không chính xác?! - Vậy bạn lập trình sai rồi hoặc sử dụng thông số không phù hợp. Chứ mình xài vẫn bình thường.
Còn 2 thông số cố định chắc bạn nói đến hệ số K1 & K2 phải không?
- Đây là 2 hệ số tượng trưng cho độ phân giải của Module (Min và Max) và được quy định sẵn luôn với đơn cực thì K1 = 0.0 và K2 = 27648.0 ; còn lưỡng cực thì K1= -27648.0 và K2 = 27648.0
Còn nếu bạn muốn bỏ chân chọn chế độ thì thay vào đó bằng việc nhập thông số K1 và K2 tương tự như 200.
Bạn phải hiểu nguyên tắc của đọc tín hiệu Analog và xử lý nó như sau:
(nhiệt độ, ánh sáng, độ ẩm,....nói chung tín hiệu vật lý hay tự nhiên - Analog vật lý theo cách gọi của mình về analog) -----> Tín hiệu Analog điện (thông qua tín hiệu cảm biến). Tới đây rồi thì thực ra chẳng có con VXL hay PLC nào hiểu tín hiệu Analog điện đâu vì chuẩn chỉ có +/-10V, 0-10V, +/-20mA, 0-20mA hoặc độ phân giải nhỏ hơn. Cho nên ------> Digital (chuẩn sang mức tín hiệu qua bộ biến đổi ADC - mọi người hay gọi là module Analog Input ^_^) - Giờ thì bạn hiểu Analog nghe ghê gớm nhưng về bản chất chẳng có gì cả quan trọng hiểu và không hiểu.
Tới lúc này thì mọi người có thể sử dụng để tính toán và xử lý giống 200 chứ không nhất thiết phải dùng FC105 và FC106. Ví dụ:
0-10V quy đổi thành 0 -27648 (mức phân giải) thì 1 mức phân giải: ∆ = 10/27648
Khi đó nếu từ địa chỉ của Analog đọc về một số A thì giá trị V của nó sẽ là: V = A*∆ (V). và lúc này bạn phải code tay +/-/*/÷ ^_^. Còn thay vào code tay thì bạn sử dụng FC105 (scale - dùng cho Analog in) còn FC106 (unscale FC106).
Analog chỉ là vậy thôi quá đơn giản đúng không bạn :).
P/S: Đừng gửi mail riêng khi bạn hỏi trên diễn dàn nhé. Còn lại nếu các câu hỏi tương tự bạn vui lòng gửi lên diễn dàn mình không trả lời với nội dung mang tính cộng đồng. Khi nào nó đặc trưng thì mình sẽ trả lời riêng vì mang tính bảo mật.
Thân chào và chúc bạn vui. :32:
Chào bạn. Về phần kết nối này bạn sử dung Prodave kết nối và tìm kiếm thư viện của nó là xong.
Sử dụng hàm BSEND, BRCV, PUT, GET.
P/s: Vấn đề này có bạn làm thành công và mình phải trao đổi một vài phần mềm và tool đặc biệt với bạn đó để trao đổi qua lại cho nên không thể cho không được. Thông cảm. Còn lại mình sẽ gọi ý bạn dùng cái gì để làm.
Cho e xin sdt của a được không
a
mọi người cho tui hỏi cái này xíu nhé. tui đang học S7 300, tui có sử dụng hàm FC83 nhưng mỗi khi gọi hàm thì nó lại thông báo trùng tên với 1 hàm nào đó và ko thể copy hay move đc. tui chỉ sử dụng hàm có trong thư viện TI-S7 Converting Blocks, hoàn toàn ko có hàm tự tạo. xin chân thành cảm ơn
Đó là bạn đã gọi nó ra rồi mà gọi lại lần nữa nên bị nó hiện cảnh báo. Muốn tạo thì phải xoá khối hàm. Còn lại là do lỗi của bạn. Step by step
http://plcvietnam.com.vn/forum/forum.../28-S7-300-400
Đọc bài và tìm tài liệu trước khi hỏi tiếp.
http://plcvietnam.com.vn/forum/showt...PLC-S7-300-400
http://plcvietnam.com.vn/forum/showt...Cnh-PLC-S7-300
Các anh (chị) ơi! CHo em hỏi là 1 vấn đề là.Muốn Cứ mỗi 5s thì ngắt để set q1.0 =1 trong 1 vòng quét.Trong s7 300 thì nên làm thế nào.Các viết chương trình ấy ạ.Em đọc qua tài liệu thì có dùng khối OB30 nhưng không rõ làm như thế nào cả.MỌi người giúp em với!Thank!
Thầy Hiếu giúp em với ạ!Em đang cần xử lý gấp ạ !
Cảnh cáo bạn, tuyệt đối không spam thế này nhé
Các bác cho em hỏi với, em đang làm một đề tài xử lý trạm bơm gồm 4 bơm, trong đó 3 bơm luân phiên. Em dùng thuật toán so sánh thời gian chạy giữa các bơm để luân phiên ( sử dụng ob 35), cứ cái nhỏ nhất chạy đến lúc lớn nhất thì dừng. Tuy nhiên yêu cầu là 6ph mới luân phiên một lần, mà như em sử dụng ob35 thời gian cycle tối đa là 60s, nên đê tăng từ nhỏ nhất lên lớn nhất là 3 vòng, tức là 3ph, hiện em chưa có cách nào thay đổi thêm thời gian ob35, em xin hỏi có thuật toán nào giải quyết vấn đề này ko ạ
Mình chưa làm cái này bao h nhưg mình có cách này bạn thử almf xem có giải quyết đc ko nhé : sử dụng 1 biến đếm, cứ khi nào OB35 đc gọi thì tăng biến đếm 1, nếu vẫn nhỏ hơn 6 thì thoát chươgn trình ngắt luôn, bằng 6 thì thực hiện tiếp chươg trình của mình.
Cách này mìh từg làm ở s7 200 rồi nhưg bên s7 300 thì chưa lmà, nhưg thuật toán của nó là thế, bạn thử xem rồi cho mọi ng xem kq vs nhé ^^
Thứ nhất trả lời bạn đó là OB ngắt thời gian có thể điều chỉnh từ 10ms đến 5000ms nhé bạn.
Thứ nhì bài toán của bạn chẳng ai dùng OB ngắt chu kỳ làm gì bởi vì hoàn toàn có thể viết trong OB1 và dùng Timer quá đơn giản. Điều quan trọng là bạn build một cái lưu đồ giải thuật thật là tốt và sau đó viết theo đó và chỉnh sửa thôi.
http://plcvietnam.com.vn/forum/showt...Cnh-PLC-S7-300
http://plcvietnam.com.vn/forum/showt...B%9B-trong-PLC
http://plcvietnam.com.vn/forum/showt...PLC-S7-300-400
Tôi nghĩ 3 cái này phù hợp cho bạn. Làm đi rồi hỏi tiếp nha.
Em dùng timer rồi, nhưng máy chỉ chạy ổn định khi chạy liên tục trong thời gian dài, tuy nhiên, điều kiện thực tế là máy chỉ chạy tầm 3ph thì sẽ hết nước ( yêu cầu đổi máy là 6ph để giữ cho độ bền máy), khi máy chạy hết 3ph, tự động ngắt thì giá trị timer đang chạy sẽ dừng lại, lần sau máy bật lên giá trị timer lại reset về 360s, lại chạy máy cũ thêm 1 lần nữa,giá trị đếm để so sánh đổi máy ko thay đổi. cứ như vậy thì ko thể só sánh được giữa các máy để luân phiên. bác nào có cách để giữ luân phiên ko ạ ?
Chào anh!
Em đang làm cái đồ án Điều khiển bồn nước đơn bằng fuzzy mờ. Em đang bị một lỗi là không kết nối được Fuzzy V5++ với S7-300. Báo lỗi là thiếu file s723.dll. Anh có thể giúp em, em cảm ơn anh nhiều.
http://plcvietnam.com.vn/forum/showt...i-PLC-S7/page3
#21 đã có rồi.
Thân