Thông báo

Collapse
No announcement yet.

Có nên thay thế PLC bằng VĐK không?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Tham khảo một số nguồn thì có thấy PLC Mitsibishi Melsec A-CPU ( dòng A1N, A2N...) dùng CPU 8086 (16 bit CPU) @ 10MHz. Dòng A3HCPU thì 80286 (16 bit CPU) @ 8Mhz. ( nguồn: Melsec-A programming manual-section 8, page 1).

    Các dòng mới có thể dùng bến CPU ARM, hoặc các CPU chuyên dụng có hardware decoder cho các instruction của PLC (VD: Siemen S7 PLC http://www.profichip.com/products/speed7-technology/)

    Còn về mấy con PLC của Đài loan dùng 8051 thì mình cũng có nghe tới.

    NVT2
    Tín đồ AVR giáo.

    Comment


    • #17
      Nguyên văn bởi nvt2 Xem bài viết
      Còn về VĐK có làm được 256 con timer chạy cùng một lúc như PLC có được không thì là được, timer vài micro giây thì khó chứ interval 1ms thì khả thi. Cứ nhìn vào chương trình PLC thì chẵng phải nó chạy một vòng rồi quay lại coi timer có time-out chưa thôi chứ nó đâu có phải interrupt/output-compare như timer của VĐK đâu.
      NVT2
      Vui lòng giúp mình cách lập trình cho 256 timer trên VDK chạy song song. Chắc bạn định dùng 1 timer có interval nhỏ (vài chục micro giây) để làm 1 chương trình con rồi sau đó liên tục gọi chương trình con này để làm timer bằng cách đếm bội số của nó?
      Nếu có 1 vài timer thì không sao, nhưng nếu số timer lên đến hàng chục hoặc hàng trăm thì sao nhỉ? Bạn sẽ rất khó khăn để quản lý thời gian của chu trình quét, của vị trí lệnh gọi timer (chèn các lệnh NOP, tính toán các lệnh CALL vào bội số rồi trừ ra,...) cho nên vấn đề không khả thi là vậy. Giải quyết tốt vấn đề này thì VDK chẳng còn thời gian đâu mà làm các việc xử lý khác: tính toán, I/O, AD,...

      Nếu bạn có cách nào hay hơn thì vui lòng chỉ giáo, mình sẽ nghiêm túc tiếp thu!

      Thân chào,

      Comment


      • #18
        Tôi nghĩ yêu cầu làm 256 timer chúng ta có thể thực hiện được bằng một chương trình ngắt, khi vào chương trình ngắt chúng ta sẽ xử lý các khoảng timer khác nhau. khi giải quyết được chương trình ngắt thì có thể làm 256 timer, còn chuyện làm AD thì thực hiện ngoài chương trình chính nhưng có thể bị ảnh hưởng bởi chương trình ngắt do khoảng ngắt gây ra nhiều quá.

        Comment


        • #19
          chao cac ban minh đang muon hoi noi hoc them plc,hien minh dang hoc plc cua omron,minh muon hoc them de nang cao kien thuc co ai biet dia chi nao hoc them tot nhat o thanh pho ho chi minh khong chi minh voi,moi chi tiet gui mail ductai_luongsonbac@yahoo.com.vn
          |

          Comment


          • #20
            Đối với PLC, phương thức làm việc là lặp đi lặp lại một chu trình bao gồm : -Quét ngõ vào-> kiểm tra truyền thông nối tiếp -> xử lý -> Xuất tín hiệu ra -> đợi đến chu kỳ mới -> quét ngõ vào->....
            Như vậy cần có một timer chạy liên tục để định chu kỳ lấy mẫu, tùy vào loại PLC mà chu kỳ có thể dài ngắn khác nhau, các loại cũ có chu kỳ khoảng vài chục ms, nghe nói bây giờ có loại tính bằng uS. Còn muốn tạo 256 timer thì bạn cần có 256 bộ thanh ghi (8-16-32 bits tùy thuộc vào yêu cầu), mỗi lần quét chu kỳ, bạn kiểm tra từng timer, hoạt động tăng hay giảm. Bằng cách này thì độ phân giải của timer chính là thời gian mỗi chu kỳ. Mình cũng làm PLC dùng VDK rồi, cũng tạo tầm vài chục timer có resolution about 20mS. Còn tạo 256 timer resolution hàng uS thì chắc MCU phải chạy nhanh hơn nữa, nếu không thì không kịp xử lý tất cả các phần còn lại.

            Comment


            • #21
              PLC rất ít sử dụng ngắt, chỉ cho mục đích tốc độ cao (HSC hay nối tiếp thôi).

              Comment


              • #22
                Nguyên văn bởi zeratul Xem bài viết
                Vui lòng giúp mình cách lập trình cho 256 timer trên VDK chạy song song. Chắc bạn định dùng 1 timer có interval nhỏ (vài chục micro giây) để làm 1 chương trình con rồi sau đó liên tục gọi chương trình con này để làm timer bằng cách đếm bội số của nó?
                Nếu có 1 vài timer thì không sao, nhưng nếu số timer lên đến hàng chục hoặc hàng trăm thì sao nhỉ? Bạn sẽ rất khó khăn để quản lý thời gian của chu trình quét, của vị trí lệnh gọi timer (chèn các lệnh NOP, tính toán các lệnh CALL vào bội số rồi trừ ra,...) cho nên vấn đề không khả thi là vậy. Giải quyết tốt vấn đề này thì VDK chẳng còn thời gian đâu mà làm các việc xử lý khác: tính toán, I/O, AD,...

                Nếu bạn có cách nào hay hơn thì vui lòng chỉ giáo, mình sẽ nghiêm túc tiếp thu!

                Thân chào,
                Bạn đừng có tập trung vào việc là có 256 con timer chạy song song nữa, thật ra thì chẵng phải là chương trình của PLC cứ chạy rồi quay lại kiểm tra xem time-out chưa ( kết quả "0" hay "1" để mà thực hiện các logic opertation tiếp theo) chứ nó không hề setup timer, ngắt, đợi time-out thì ngắt như trong VĐK mình hay làm. Chỉ cần 1 timer count liên tục là dùng được:

                256 timer "ảo" ở đâu tương đương với 256 ô nhớ (1byte hoặc hơn), counter chính thì cứ tiếp tục +1 sau mổi ms, chạy đến TOP thì tự reset về 0.

                //-------------------------------------------------------------
                Ở lader bậc n, logic có dùng timer0 để delay 100ms thì:

                Code:
                if((timer[0]+100)==counter) { time_out=1} else{time_out=0}
                //--------------------------------------------------------------
                Ở lader bậc n+1, logic có dùng timer1 để delay 200ms thì:

                Code:
                if((timer[1]+200)==counter) { time_out=1}else{time_out=0}
                //-------------------------------------------------------------
                Ở lader bậc n+, logic có dùng timer_n để delay 40ms thì:

                Code:
                if((timer[n]+40)==counter) { time_out=1} else{time_out=0}
                Để nhanh hơn bạn cứ cộng trước vào timer[n], sau đó viết = asm( của AVR) thế này:
                Code:
                lds r7,[timer[0]]                 // nạp timer[0] vào r7
                in r8,[counter]                  // nạp counter của timer phần cứng
                cp r7,r8                           // so sánh
                brne next                         // chưa bằng thì bỏ qua
                ldi r7,1
                sts [time_out],r7              // time_out =1;
                ...
                next:
                Như vậy sẽ tốn khoảng 7nhip x 125ns @ 8MHz = 0.875us để kiểm tra 1 cái timer có time_out hay chưa. => 224us cho 256 timer, vậy nó cũng chạy được 4 vòng mới phát hiện có 1 em timer nào đó trong 256 cái timer kia bị time-out (interval 1ms).

                Như vậy thì mặc dù là chỉ có 1 timer hardware thôi nhưng theo yêu cầu của việc điều khiển thì đoạn chương trình kiểm tra timer có time-out hay chưa không mất nhiều thời gian nên suốt chu trình, độ trể là không lớn.

                Ý tưởng là vậy, khi triger cho timer[0] chạy thì ta sẽ phải update giá trị trong timer[0] trước: " timer[0]=counter; ", sau đó thì counter có chạy thì mặc kệ nó, chừng nào đủ thời gian thì time-out thôi. Như vậy nếu bạn có 512byte bộ nhớ trống thì mình cũng có thể có 512 cái timer(8bit) "chạy song song" vậy !

                NVT2
                Tín đồ AVR giáo.

                Comment


                • #23
                  À há. Thank you!

                  Comment


                  • #24
                    Cái này cũng gần giống thay thế Windows bằng Linux hay Dos... gì đó thôi!
                    Tùy ý thích người dùng!

                    PLC đã dùng rộng rãi trong CN và các nhà SX PLC cũng có những khuôn mẫu chung ngầm qui ước như 1 chuẩn....
                    Vì vậy người dùng rất dễ dàng sử dụng mà không cần phải là "Kĩ Sư Điện TỬ"!

                    Muốn thay thế thì cũng được nhưng để có một bản thiết kế VDK hoàn thiện và sử dụng được nhiều mục đích, đa năng, phổ biến.... thì cuối cùng cũng giống như PLC hoặc cao hơn là các Controler trong CN!

                    Thực tế thì đã có nhiều nhà sản xuất thiết bị, máy móc thay thế PLC bằng board VDK cho các ứng dụng cố định để hạ giá thành SP.
                    Có thể thấy phổ biến là các máy của China...
                    (Mấy cái này lâu lâu man man là chạy theo kiểu Tung Của, self-control luôn, bất chấp người điều khiển...!)

                    Tùy hiệu quả công việc, yêu cầu thời gian và hiệu quả kinh tế mà dùng!

                    Tôi thì hay dùng LM555 và 74LS123 thay cho PLC và VDK... vì chỉ điều khiển bể cá đơn giản thôi!

                    VÀi dòng bàn tám để thấy: không có gì là không thể, chỉ vì... cái này hay cái nọ mà .... chưa thực hiện được thôi!

                    Comment


                    • #25
                      Nguyên văn bởi zeratul Xem bài viết
                      Vui lòng giúp mình cách lập trình cho 256 timer trên VDK chạy song song. Chắc bạn định dùng 1 timer có interval nhỏ (vài chục micro giây) để làm 1 chương trình con rồi sau đó liên tục gọi chương trình con này để làm timer bằng cách đếm bội số của nó?
                      Nếu có 1 vài timer thì không sao, nhưng nếu số timer lên đến hàng chục hoặc hàng trăm thì sao nhỉ? Bạn sẽ rất khó khăn để quản lý thời gian của chu trình quét, của vị trí lệnh gọi timer (chèn các lệnh NOP, tính toán các lệnh CALL vào bội số rồi trừ ra,...) cho nên vấn đề không khả thi là vậy. Giải quyết tốt vấn đề này thì VDK chẳng còn thời gian đâu mà làm các việc xử lý khác: tính toán, I/O, AD,...

                      Nếu bạn có cách nào hay hơn thì vui lòng chỉ giáo, mình sẽ nghiêm túc tiếp thu!

                      Thân chào,
                      Dùng RTY là được thôi.
                      Trong vi điều khiển có chức năng này mà.
                      Bạn về đọc cách viết chương trình xứ lý đa nhiệm sẽ cói đấy.

                      Comment


                      • #26
                        Nguyên văn bởi chinh_cover Xem bài viết
                        Dùng RTY là được thôi.
                        Trong vi điều khiển có chức năng này mà.
                        Bạn về đọc cách viết chương trình xứ lý đa nhiệm sẽ cói đấy.
                        OK, lâu rồi không làm việc với VĐK nên tụt hậu rồi. Phải xem lại mới được. Nhớ 16F877A quá!

                        Comment


                        • #27
                          Tôi tháo mấy con PLC ra nghịch thấy họ thiết kết phần nguồn rất tốt. Có đầy đủ các cấp bảo vệ và lọc. Các đầu I/O đều có đệm và cách li hết. Đầu In thường sử dụng cách li quang, đầu Out ( phụ thuộc là đầu ra Relay hay không) thường sử dụng Mosfet. Nếu mình thiết kế cũng theo nguyên tắc như PLC ( không "bớt" một phần dù nhỏ như 1 con tụ 0.1uF chẳng hạn) chắc chắn VĐK sẽ chạy tốt và có thể thay thế được PLC trong những ứng dụng công nghiệp. Điểm khó là người thiết kế phải có trình độ đạt đến mức độ nhất định mới làm được, hơn nữa phải viết fimware cho mỗi sản phẩm của họ. Còn PLC thì không nhất thiết phải là người biết về điện tử cũng làm được. Tuy nhiên nếu sản phẩm của chúng ta sản xuất hàng loạt lúc đó sẽ hướng vào VĐK để thay thế cho PLC sẽ kinh tế hơn và đảm bảo được về mặt công nghệ.
                          Theo tôi quan điểm về PLC ổn định hơn VĐK là chưa đúng vì VĐK bản chất của nó đã rất ổn định. Về cấu tạo so với PLC cũng không khác nhau nhiều. Quan trọng nhất là các mạch phụ trợ như Nguồn, các mạch vào ra ... mà tốt thì PLC hay VĐK là như nhau về chất lượng.
                          n
                          ĐT: 0986 492 489

                          Tham khảo:

                          Comment


                          • #28
                            híc ho thấy ai thảo luận về vấn đề này nữa nhỉ.
                            em là thành viên mới. Em xi góp đôi điều thế này:
                            Chắc ai cũng biết đến cái trạm trộn bê tông nhựa đường. Và hôm nay em được xem một lúc 3 trạm, 1 trạm là của VN do TĐH của BK HN sáng tác(cổ năm 1998), 1 là trạm của ĐH Giao Thông sáng tác(hiện đại hơn), trạm thứ 3 là của Hàn Quốc(mới nhập về). Trạm Hàn Quốc công suất gấp 1,5 lần của trạm của GT, giá thì ngược lại(đồ ngoại bao giờ chả đăt).
                            Nhưng các bác có biết ko, trạm của VN tất nhiên ai cũng biết hoàn toàn dùng S7-200 với máy tính đk SCADA, hỡi ôi còn bọn Hàn nó làm kiểu j nào, nó dùng hệ vđk - máy tính công nghiệp- vđk, tất cả các đâu cảm biến nhiệt, đầu cân.v.v.đều dùng các modul vđk( 1 con rất thông dụng ở VN) để đọc, các modul vđk giao thức với mtcn qua RS232

                            em dùng vđk cũng bị đơ, bị chạy sai nhiều rồi, và cũng đã có ý ko dám dùng trong cn. Nhưng bọn ngoại nó làm đc vậy, tại sao mình lại ko, thiết nghĩ chi do từng kỹ sư thiết kế điện tử thôi

                            Comment


                            • #29
                              Trước ông thầy mình nói cả nhà máy xi măng (Hoàng Thạch thì phải - nhờ các bác xác nhận thông tin này) được điều khiển bằng 1 con vđk 4bit :-ss, sợ chưa !

                              Mình cũng đã từng có thắc mắc y hệt thế này, giờ mình thấy dùng cái nào cũng có cái giá của nó, dùng vđk thì lợi về giá thành, nhưng hại về thời gian và chất xám, còn dùng PLC thì ngược lại.

                              Nói chung đối với từng bài toán mà đưa ra quyết định cho phù hợp, nếu chỉ on/off đơn giản thì dùng vđk là ngon nhất, còn với cả 1 hệ thống lớn (như nhà máy xi măng chẳng hạn) thì chẳng ai dại gì mà dùng vđk.

                              Còn cái chuyện ổn định hay ko ổn định, nhiễu hay ko nhiễu là do mình thiết kế, nghe hơi buồn cười vì chúng ta thiết kế kém, chúng ta lại cứ đổ cho vđk không ổn định, đổ cho nó hay bị nhiễu

                              Comment


                              • #30
                                bạn ơi, những điều bạn chia sẻ thật đúng với những khó khăn mà mình đang gặp phải. mình đang làm đồ án tốt nghiệp về thiết kế logo simen bằng vdk. mình viết giao diện lập trình trên c# mà giờ ko bik làm sao biên dịch những dòng lệnh đó xuống vdk cho nó hiểu hết. bạn có thể chia sẻ giúp mình về hướng làm được ko. thank bạn nhiều ^^

                                Comment

                                Về tác giả

                                Collapse

                                minhhieu 4 vợ + 10 con + 5 bồ bịch Tìm hiểu thêm về minhhieu

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X