Thông báo

Collapse
No announcement yet.

Phương pháp lập trình tuần tự

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

  • #16
    Nguyên văn bởi nguyenngo Xem bài viết
    cho mình hỏi tí về chương trình con trong s7.giả sử mình đặt SM0.0 cho cả 5 chương trình con thì quá trình thực hiện vòng quét thế nào.có phải thứ tự bắt đầu từ chương trình con đầu tiên ko.thank!
    Chào bạn, PLC sẽ thực hiện vòng quét tại chương trình chính, từ trên xuống dưới, gặp chương trình con thì nó sẽ nhảy vào, gặp lệnh thoát chương trình con thì nó sẽ nhảy ra, quét tiếp cái đoạn chương trình mà còn dang dở.
    Nói chung là nếu bạn có làm về vi điều khiển rồi thì PLC nó quét chương trình y chang vi điều khiển vậy.

    Comment


    • #17
      Nguyên văn bởi mrtuanvimaru
      Xin phép chút nha!!!! Mình đang lập trình trên PLC S7-200. Gặp trường hợp quá khó chưa giải quyết đc. Nhờ các cao thủ ai biết giúp mình.
      Lập trình khởi động và dừng động cơ dùng duy nhất 1 nút ấn hoàn nguyên ( nút ấn hoàn nguyên là loại mà khi ấn thì nó = 1 nhả tay ra nó về 0 ngay). Tức là khi ta ấn nút thì động cơ chạy. ấn lần nữa thì động cơ phải dừng. PLC S7-200
      Dùng counter đếm. C0=1 thì start động cơ
      C0 = 2 thì stop động cơ và reset counter lun
      Biển học vô bờ

      Comment


      • #18
        Nguyên văn bởi Kekhukho Xem bài viết
        Dùng counter đếm. C0=1 thì start động cơ
        C0 = 2 thì stop động cơ và reset counter lun
        uh. Cảm ơn bạn nhiều nha!!!

        Comment


        • #19
          HEHHE.bạn thử viết mạch đèn cầu thang bằng nút nhấn mà bạn nói đó.sẽ thấy rõ hơn.

          Comment


          • #20
            Mình xin giới thiệu với các bạn một phương pháp lập trình PLC rất là “kinh điển” nhưng rất hiệu quả: Phương pháp lập trình tuần tự.

            Như tên gọi của nó, phương pháp này được áp dụng hiệu quả trong quá trình lập trình các quá trình điều khiển tuần tự, hết bước 1 thì chuyển sang bước 2.. lần lượt tới bước n. Do đó phương pháp này cực kỳ hiệu quả với việc lập trình các trạm trong môn MPS của ngành Cơ – Điện tử (ĐH SPKT Tp HCM).

            Trước tiên, mình sẽ nêu lên ưu điểm của phương pháp này để các bạn hứng thú theo dõi. Thứ nhất là phương pháp này rất dễ viết, và dễ đọc chương trình. Khi bạn đã biết cách rồi thì viết rất nhanh (hầu như chỉ copy, paste và edit thôi). Thứ hai là phương pháp này không dùng SET và RESET. Nếu các bạn đã lập trình PLC rồi thì các bạn cũng biết là khi dùng SET và RESET thì mình phải kiểm soát luồng chương trình rất chặt chẽ. Không thì nó “mâu thuẫn” với nhau và bị sai ngay. Thứ ba là phương pháp này rất hiệu quả (mình đã dùng từ “kinh điển” để nói về nó).

            Quảng cáo nhiều quá rồi, bây giờ xin giới thiệu cách lập trình theo phương pháp này. A, mà chương trình mình viết dùng Simatic Manager của Siemens (nhưng những ngôn ngữ khác dùng ladder thì cũng tương tự thôi à)

            Lý thuyết:
            Bước 1: Viết quy trình và tóm tắt quy trình hoạt động. Quy trình có thể bạn sẽ nhận được trên đề bài, trên yêu cầu do giáo viên đưa ra hoặc bạn sẽ phải viết lại theo yêu cầu thực tế của bài toán điều khiển (Ví dụ như môn MPS thì bạn phải viết lại theo Quy trình hoạt động của từng trạm). Nên sử dụng các ký hiệu ngắn gọn và dễ gợi nhớ để viết tóm tắt quy trình này.
            Chia tầng cho quy trình (mỗi tầng là đơn giản là thực hiện một thao tác hoặc nhiều thao tác song song (diễn ra cùng một lúc).

            Bước 2: Lập trình “nuôi” các biến nhớ tạm (đánh dấu tầng đang thực hiện). Bước này được thực hiện như sau:
            Đầu tiên là điều kiện bắt đầu một tầng. Thường thì tầng mới được bắt đầu khi tầng cũ đã hoàn thành xong nhiệm vụ của nó. Ví dụ điều kiện bắt đầu tầng 2 là đang ở tầng 1 và gặp công tắc hành trình nào đó (báo hiệu thực hiện xong nhiệm vụ)
            Tiếp theo là PHỦ ĐỊNH (Not) của các điều kiện kết thúc tầng đó (thường là tầng tiếp theo được bắt đầu hoặc khi nhấn nút Stop, Reset..). Cũng xin được nhắc lại định luật De–Morgan:
            ~(A.B.C) = ~A+ ~B + ~C
            ~(A+B+C) = (~A).(~B).(~C)

            Ví dụ: điều kiện để ngắt tầng 2 là: tầng 3 được thực thi HOẶC nút Stop được nhấn. Dưới dạng biểu thức, ta có: DKNT = TANG3 + STOP. Vậy PHỦ ĐỊNH của điều kiện này là ~DKNT= ~TANG3 . ~STOP. Hay diễn đạt dưới dạng câu chữ thì là (Not của TANG3) AND với (Not của nút STOP). Not của TANG3 luôn là tiếp điểm thường đóng NC còn Not của nút nhấn thì còn tùy thuộc vào nút nhấn loại gì.
            (Hình ảnh này dùng cho nút Stop thường đóng NC)



            Điều kiện ngắt tầng 2 và Not điều kiện ngắt tầng 2

            Cuối cùng là lấy tiếp điểm để tự nuôi nó. Tiếp điểm được đưa vào trong chương trình song song với điều kiện bắt đầu một tầng.

            Ảnh đã được thu nhỏ. Bấm vào đây để xem hình cỡ đầy đủ. Hình gốc cỡ 728x342 và dung lượng 26KB.


            Bước 3: Tập họp các trường hợp cho ngõ ra vật lý (các cơ cấu chấp hành). Giả sử TANG 1, TANG 3 tác động tới cơ cấu chấp hành

            Ảnh đã được thu nhỏ. Bấm vào đây để xem hình cỡ đầy đủ. Hình gốc cỡ 675x284 và dung lượng 19KB.


            Ví dụ thực tế:
            Lấy ví dụ ở trạm 1 của hệ thống MPS để viết chương trình và giải thích cho các bạn dễ hình dung. (Các bạn không phải là sinh viên ngành Cơ – Điện tử hoặc chưa tiếp xúc với trạm này thì các bạn đừng lo, tôi sẽ trình bày cụ thể). À, cũng nói rõ là quy trình hoạt động của trạm này do người viết đặt ra (có thể không giống trên lớp học đâu nhé!).

            Giải thích phần cứng: Trạm này thực hiện nhiệm vụ cung cấp phôi.
            *Trạm có 3 cơ cấu chấp hành:
            Một Xy lanh khí nén để đẩy phôi ra và kẹp phôi, Xy lanh này hoạt động được điều khiển bởi một Valse khí nén. Nó hoạt động thế này: bạn cấp 24V cho cuộn dây điều khiển của Valse thì Xy lanh sẽ đẩy phôi ra, bạn giữ nguyên 24V cho cuộn dây điều khiển thì Xy lanh vẫn giữ nguyên trạng thái kẹp phôi; bạn ngắt điện, Xy lanh đi về, không kẹp phôi nữa.

            Một tay gắp sử dụng khí nén. Tay gắp này được điều khiển bởi một Valse khí nén. Tay này hoạt động như sau: khi bạn cấp điện cho cuộn Y1 (tạm gọi như vậy) thì tay máy đi về phía có phôi (để lấy phôi). Khi bạn cấp điện cho cuộn Y2 thì tay máy sẽ đi về phía trạm 2 (để cấp phôi cho trạm này). Khi bạn ngừng cấp điện hay cấp điện đồng thời cả 2 cuộn dây thì tay máy sẽ đứng yên tại vị trí đang đứng.

            Một giác hút chân không để hút phôi. Nó có hai cuộn dây để điều khiển. Cấp điện cho một cuộn thì nó sẽ hút phôi (tạo chân không để hút). Cấp điện cho cuộn còn lại thì nó sẽ nhả phôi ra.

            *Trạm còn có ba nút nhấn để điều khiển:
            Start (thường hở - NO).
            Stop (thường đóng - NC).
            Reset (thường hở - NO).

            *Cảm biến được dùng trong trạm
            Trạm dùng 1 cảm biến quang để phát hiện có vật tại vị trí ống chứa phôi. Cảm biến này thường đóng – NC. Bình thường không có phôi, bên phát phát ra ánh sáng, bên thu sẽ nhận được nên có mức Logic ngỏ ra là mức 1 (mức cao). Khi có phôi trong ống chứa phôi thì nó chắn ánh sáng này làm bên thu không nhận được ánh sáng nên nó sẽ có ngõ ra là mức 0 (mức thấp). Để thuận tiện cho sử dụng, tôi đặt ký hiệu là cảm biến COVAT.

            Xy lanh đẩy vật có hai Công tắc hành trình phát hiện hết hành trình (đi ra hết hoặc đi về hết). Hai cảm biến này là cảm biến Điện từ (mình nhớ man mán vậy). Tức là nó sẽ nhận biết được Nam châm. Ở trong Xy lanh khí nén người ta có bố trí miếng nam châm ở cuối xy lanh. Khi xy lanh đi tới hết hành trình thì sẽ tác động lên các cảm biến đã được bố trí ở đó. Công tắc khi Pittong đi hết về phía đẩy ra và kẹp phôi tôi sẽ ký hiệu là KEP và khi pittong đi hết hành trình về phía ngược lại tôi ky hiệu là KHONGKEP.

            Tay gắp có hai công tắc hành trình báo kết thúc hành trình. Công tắc này là tiếp điểm Cơ khí. Khi tay gắp đi tới cuối hành trình thì nó sẽ “đá” các công tắc này. Công tắc hành trình bị tác động khi tay gắp ở vị trí có phôi tôi ký hiệu là VETRAM1, và công tắc bị tác động khi tay găp ở vị trí phía bên trạm 2 tôi ký hiệu là QUATRAM2.

            Giác hút có một cảm biến phát hiện đã hút được vật. Cảm biến này thực ra là một cảm biến áp suất. Nếu áp xuất nhỏ hơn một áp xuất giá trị nhất định thì ngõ ra sẽ lên mức 1 (cao). Tôi ký hiệu công tắc này là COHUT.

            Mô tả phần cứng như vậy là đã rõ ràng rồi phải không các bạn? Tuy nó hơi chán một chút nhưng rất cần thiết cho việc theo dõi chương trình về sau.

            Phương pháp lập trình: bước từng bước
            *Bước 1: Xác định quy trình làm việc và tóm tắt lại quy trình.
            A, Quy trình làm việc như sau:
            Ban đầu, tay gắp ở vị trí phôi, giác hút không hút vật và Xy lanh đẩy phôi không đẩy phôi ra.
            Khi bạn nhấn Start. Nếu có phôi ở vị trí cấp phôi thì quy trình sẽ diễn ra theo trình tự như sau:
            1, Tay gắp đi qua vị trí trạm 2.
            2, Xy lanh đẩy phôi đi ra và kẹp phôi.
            3, Tay gắp quay về phía trạm 1
            4, Bật giác hút lên để hút phôi.
            5, Xy lanh lui về (không kẹp phôi nữa)
            6, Tay gắp đi về phía trạm 2.
            7, Nhả phôi ra.
            8, Tay gắp trở lại vị trí ban đầu (trạm 1) để không làm cản trở hoạt động của trạm 2.
            Kết thúc chu trình. Chu trình có thể tiếp tục khi bạn nhấn nút Start.

            B, Ký hiệu các cơ cấu chấp hành:
            Xy lanh kẹp phôi: A
            Quá trình kẹp phôi là A+
            Trở về (không kẹp phôi nữa) là A-
            Tay gắp : B
            Đi qua phía trạm 2 : B+
            Đi về vị trí cấp phôi (đi về phía trạm 1): B-
            Giác hút : C
            Hút vật : C+
            Nhả vật : C-

            C, Tóm tắt quy trình hoạt động và chia tầng :
            Ảnh đã được thu nhỏ. Bấm vào đây để xem hình cỡ đầy đủ. Hình gốc cỡ 765x157 và dung lượng 9KB.


            Ở đây Xy lanh kẹp vật trong suốt quá trình tay gắp trở về và quá trình hút vật nên A+ được thực hiện song song với B- và C+ ở tầng thứ 3 và tầng 4

            *Bước 2: Lập trình nuôi các biến nhớ tạm (các tầng)
            Các tầng ở đây chính là các biến nhớ tạm M


            Điều kiện bắt đầu tầng 1 diễn ra khi đang có vật phát hiện bởi cảm biến COVAT (tiếp điểm thường đóng NC) VÀ (AND) với nhấn nút Start.
            Điều kiện kết thúc tầng 1 là tầng 2 bắt đầu HOẶC (OR) nhấn nút Stop (thường đóng - NC). Chúng ta phải lấy PHỦ ĐỊNH của điều kiện kết thúc tầng để đưa vào Ladder.
            Vậy network của tầng 1 được viết như sau :


            Tương tự, điều kiện bắt đầu tầng 2 là đang ở tầng 1 và tay gắp vật B đi qua tới trạm 2 (tác động công tắc hành trình QUATRAM2)
            Điều kiện kết thúc tầng 2 là bắt đầu sang tầng 3 hoặc nút Stop được nhấn. Ta có network cho tầng 2 như sau :


            Tương tự, điều kiện bắt đầu tầng 3 là đang ở tầng 2 và Xy lanh đẩy phôi đã đẩy phôi ra đến vị trí cho tay gắp thực hiện gắp và kẹp phôi ở đó (cảm biến KEP được tác động)
            Điều kiện kết thúc tầng 3 là bắt đầu sang tầng 4 hoặc nút Stop được nhấn. Ta có network cho tầng 3 như sau :


            Bạn dễ dàng nhìn thấy là mỗi môt thời điểm chỉ có một tầng duy nhất được thực hiện. Khi tầng 2 được thực hiện, nó đã ngắt tầng 1 (phía trước nó). Và khi tầng 2 thực hiện xong (xy lanh đẩy phôi ra xong) thì tầng 3 bắt đầu và tầng 3 sẽ ngắt tầng 2.

            Bạn cũng dễ dàng rút ra nhận xét là : các network này na ná giống nhau, nên bạn chỉ cần Copy, Paste và Edit cho phù hợp mà thôi (nhớ Edit cẩn thận nhá, edit sót hay nhầm là không chạy được đâu)
            Tương tự cho các network, các tầng khác

            *Bước 3: Tổ hợp các tầng để điều khiển các cơ cấu chấp hành
            Giả sử ta có phần ký hiệu cho các cơ cấu chấp hành như sau :


            Trong quy trình ở bước 1, ta thấy thao tác A+ tác động vào xy lanh để đẩy phôi ra và kẹp phôi ở vị trí được thực hiện ở các tầng 2, tầng 3, tầng 4. Do đó, ta có network như sau:


            Ở đây, A+ là một ngõ ra của PLC để tác động tới cuộn dây đẩy phôi ra
            Thao tác A- ở tầng 5 không cần tác động tới ngõ ra nào, vì chỉ cần ngắt điện ở cuộn dây A+ thì xy lanh sẽ tự động lùi về

            Thao tác B- cần được thực hiện ở tầng 3 và 8 nên ta có network sau:

            Tiếp tục cho tất cả các cơ cấu chấp hành khác

            Kết thúc:
            Bây giờ thì chương trình của bạn cũng xong rồi. Không hề dùng tới một phép Set hoặc Reset nào, nhưng vẫn rất lôgic, hợp lý. Và tôi đảm bảo với bạn là có thể chạy tốt nữa!

            Các bạn cứ làm thử. Và cho mình biết kết quả nhé. Viết mệt quá trời, cũng phải biết mình viết có giúp được gì cho các bạn không chứ ! Và nếu chưa đúng, chưa hay thì cũng biết ở chỗ nào để còn sửa lại nữa.

            Các bạn nhớ Comment cho mình nha !
            Chúc vui!

            Comment


            • #21
              Nguyên văn bởi Kekhukho Xem bài viết
              Dùng counter đếm. C0=1 thì start động cơ
              C0 = 2 thì stop động cơ và reset counter lun
              Cách này đúng rồi!

              Cách kinh điển là dùng cạnh lên hoặc xuống của xung nút ấn (tiếp điểm pulse up hoặc pulse down) tác động 2 relay trung gian, hoạt động theo cơ chế khóa chéo nhau!

              Comment


              • #22
                Ohm chào thầy

                Comment


                • #23
                  theo mình thấy lập trình tuần tự dùng cái dịch bit để đánh dấu công việc thực hiện có vẽ đơn giản hơn trong việc xác định điều kiện!
                  Ôi! Từ lý thuyết đến thực tế.

                  Comment


                  • #24
                    Nguyên văn bởi mocdailam Xem bài viết
                    theo mình thấy lập trình tuần tự dùng cái dịch bit để đánh dấu công việc thực hiện có vẽ đơn giản hơn trong việc xác định điều kiện!
                    Nhưng với nhưng bài toán có nhiều đầu vào ra thì sao hả bạn,nếu ứng dụng đc thì cũng hay

                    Comment

                    Về tác giả

                    Collapse

                    Nguyen Cong Tìm hiểu thêm về Nguyen Cong

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

                    Collapse

                    Đang tải...
                    X