Thông báo

Collapse
No announcement yet.

Hiển thị tốc độ motor trên màn hình HMI

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

  • Hiển thị tốc độ motor trên màn hình HMI

    Chào tất cả các bạn.
    Hiện nay mình đang cần hiển thị tốc độ trên màn hình HMI, màn hình này kết nối với PLC. Mình đang suy nghĩ thuật toán như thế này không biết có đúng hay không.

    Dùng một timer có độ phân giải 1ms, ví dụ là T32 của S7200
    Gắn một cảm biến từ trên trục quay của motor và đầu vào của nó trên PLC là I0.0 (ví dụ thế).
    Trong chương trình cho I0.0 vào bộ đếm C0
    Và lấy giá trị đếm được của C0 chia cho thời gian đếm được của T32 ==> tốc độ của motor.
    Thời gian lấy mẫu là 1s một lần. Mỗi lần bộ đếm T32=1s thì lại reset T32 và C0.
    Còn hiển thị giá trị đó lên HMI thì không phải bàn rồi.
    Mong các cao thủ cho ý kiến và chỉ cho mình chỗ nào chưa đúng.

    Cám ơn các bạn trước.

  • #2
    bạn nên mua 1 cái encoder về chơi .
    Giải thuật của mình là : dùng ngắt timer để đọc xung rồi biến đổi thành số vòng , đọc số xung thì dùng HSC .
    Còn của bạn thì mình ko bít cái I0.0 có đáp ứng nổi tốc độ đó ko ?
    Vài dòng ngu muội , có gì sai mong được chỉ giáo .

    Comment


    • #3
      Vì tốc độ motor lớn nhất là 1200v/p, lên một giây chỉ có 20 xung khi chạy ở tốc độ max của motor, suy ra chỉ có 20hz. Còn không thì dùng HSC cũng được nhưng mình vẫn muốn dùng cảm biến từ rồi đưa tín hiệu về PLC xử lý.

      Comment


      • #4
        Sao không ai vào giúp bác này nhỉ, lúc khó khăn đúng là kiếm anh hùng khó quá

        Comment


        • #5
          bạn anZ nói quá đúng rồi còn gì , nhưng chưa có thử cách của bạn anZ nhưng mà nếu bạn ấy có phần cứng thì lập trình 1 tí xíu để thử là xong mà

          Comment


          • #6
            Nếu bác anZ dùng PLC Mitsubishi thì chỉ cần một dòng lệnh SPD là nó thay thế hết luôn phần HSC và Timer. Lúc đó bác chỉ cần lấy giá trị là một toán hạng trong lệnh SPD đem đi xử lý sơ sơ là có kết quả như ý

            Comment


            • #7
              Nguyên văn bởi niido Xem bài viết
              Nếu bác anZ dùng PLC Mitsubishi thì chỉ cần một dòng lệnh SPD là nó thay thế hết luôn phần HSC và Timer. Lúc đó bác chỉ cần lấy giá trị là một toán hạng trong lệnh SPD đem đi xử lý sơ sơ là có kết quả như ý
              Bác ấy đưa ra vấn đề là dùng S7200 mà anh. Ý tưởng bác ấy đưa ra cũng không sai, nhưng không biết bác ấy đã làm được chưa? Còn dùng Encoder thì khỏi bàn rồi, vấn đề là Encoder loại 24 VDC là không rẻ, nhưng dùng với HSC có sẵn của S7200 thì lại đơn giản rất nhiều, em đã làm thực tế rồi.

              Comment


              • #8
                Và lấy giá trị đếm được của C0 chia cho thời gian đếm được của T32 ==> tốc độ của motor.
                Thời gian lấy mẫu là 1s một lần. Mỗi lần bộ đếm T32=1s thì lại reset T32 và C0.
                (Tôi đoán là bạn không cần chính xác lắm?) Bạn cần gì chia chác chi cho mệt. Nếu hiển thị v/giây thì ngay trước khi reset T và C, bạn cho hiển thị giá trị C lên màn hình qua một biến trung gian VWx... tức MOVW C0, VWx (cho hiển thị cái này). Tùy cơ ứng biến mà chọn cách làm cho phù hợp. Động cơ chạy nhanh thì chọn T nhỏ, chạy chậm thì chọn T lớn (chứ không thì nó luôn hiển thị là 0 ). Nếu nhanh quá thì dùng HSC mới được. Còn nếu có dùng Biến tần thì đọc trực tiếp thông số của biến tần mà hiển thị. Đây là đoạn đọc các thông số I, F, T (heatsink temperature), Faultcode từ biến tần MEIDEN VT230S
                Network 3
                LD SM0.0
                MOVB '(', VB400
                MOVB 'G', VB401
                MOVB '0', VB402
                MOVB '1', VB403
                MOVB 'D', VB404
                MOVB 'R', VB405
                MOVB 'D', VB406
                MOVB '0', VB407
                MOVB '0', VB408
                MOVB '0', VB409
                MOVB 16#2C, VB410
                Network 4
                LD SM0.0
                MOVB 'D', VB411
                MOVB 'R', VB412
                MOVB 'D', VB413
                MOVB '0', VB414
                MOVB '2', VB415
                MOVB '0', VB416
                MOVB ')', VB417
                MOVB 16#0D, VB418
                Network 5
                LD SM0.0
                MOVB '(', VB419
                MOVB 'G', VB420
                MOVB '0', VB421
                MOVB '1', VB422
                MOVB 'D', VB423
                MOVB 'R', VB424
                MOVB 'D', VB425
                MOVB '0', VB426
                MOVB '2', VB427
                MOVB '3', VB428
                MOVB 16#2C, VB429
                Network 6
                LD SM0.0
                MOVB 'D', VB430
                MOVB 'R', VB431
                MOVB 'D', VB432
                MOVB '2', VB433
                MOVB '1', VB434
                MOVB '1', VB435
                MOVB ')', VB436
                MOVB 16#0D, VB437
                Last edited by HueDN; 11-01-2009, 03:40.

                Comment


                • #9
                  Với bài toán của bạn, mình nghĩ nếu dùng HSC thì quả thực lãng phí[1]. Còn nếu dùng cách thức xử lý của bạn tức là dùng cảm biến truyền về một IO của PLC thì có vấn đề sau.
                  Hoạt động của PLC là quét từng chu kì với việc thu thập giá trị của các IO, Register là thời điểm đầu chu kì, Out tín hiệu là thời điểm kết thúc chu kì, với một lượng IO lớn( tầm vài trăm) thì thời gian quét này cũng chỉ chiếm cỡ 1, 2ms đầu chu kì. Nhưng quan trọng ở đây, thời điểm quét đầu vào của bạn có trùng thời điểm mà tín hiệu từ sensor của bạn truyền giá trị về không. Ví dụ đơn giản là 1 sweep cỡ 25ms, nhưng nếu trong 25ms mà số lần tín hiệu của sensor truyền về là 3 tức là sai số rồi. Giả sử chu kì lặp thời gian tín hiệu sensor truyền về cỡ 20, 30ms cho phù hợp với 1 sweep đi chăng nữa( tất nhiên là giá trị sweep khác nhau trong từng sweep một rồi) thì bạn có chắc thời điểm bắt giá trị là thời điểm tín hiệu sensor báo truyền về không. Tôi khẳng định là không. Việc dùng 1 sensor gắn trực tiếp với cổng PLC như bạn là không khả thi.
                  Theo mình, bạn nên làm một mạch đệm dùng 1 con avr8 là đủ rồi, sử dụng ngắt để xử lý giá trị thu thập từ sensor rồi truyền về PLC. Nhưng điều này lại có một hạn chế là cần có module analog mà module này thì đúng là không rẻ. Song bạn cũng có thể sử dụng 8 Input.
                  Vậy HSC là một trường hợp kinh tế hơn[2]?

                  Comment


                  • #10
                    Nguyên văn bởi HueDN Xem bài viết
                    (Tôi đoán là bạn không cần chính xác lắm?) Bạn cần gì chia chác chi cho mệt. Nếu hiển thị v/giây thì ngay trước khi reset T và C, bạn cho hiển thị giá trị C lên màn hình qua một biến trung gian VWx... tức MOVW C0, VWx (cho hiển thị cái này). Tùy cơ ứng biến mà chọn cách làm cho phù hợp. Động cơ chạy nhanh thì chọn T nhỏ, chạy chậm thì chọn T lớn (chứ không thì nó luôn hiển thị là 0 ). Nếu nhanh quá thì dùng HSC mới được. Còn nếu có dùng Biến tần thì đọc trực tiếp thông số của biến tần mà hiển thị. Đây là đoạn đọc các thông số I, F, T (heatsink temperature), Faultcode từ biến tần MEIDEN VT230S
                    Network 3
                    LD SM0.0
                    MOVB '(', VB400
                    MOVB 'G', VB401
                    MOVB '0', VB402
                    MOVB '1', VB403
                    MOVB 'D', VB404
                    MOVB 'R', VB405
                    MOVB 'D', VB406
                    MOVB '0', VB407
                    MOVB '0', VB408
                    MOVB '0', VB409
                    MOVB 16#2C, VB410
                    Network 4
                    LD SM0.0
                    MOVB 'D', VB411
                    MOVB 'R', VB412
                    MOVB 'D', VB413
                    MOVB '0', VB414
                    MOVB '2', VB415
                    MOVB '0', VB416
                    MOVB ')', VB417
                    MOVB 16#0D, VB418
                    Network 5
                    LD SM0.0
                    MOVB '(', VB419
                    MOVB 'G', VB420
                    MOVB '0', VB421
                    MOVB '1', VB422
                    MOVB 'D', VB423
                    MOVB 'R', VB424
                    MOVB 'D', VB425
                    MOVB '0', VB426
                    MOVB '2', VB427
                    MOVB '3', VB428
                    MOVB 16#2C, VB429
                    Network 6
                    LD SM0.0
                    MOVB 'D', VB430
                    MOVB 'R', VB431
                    MOVB 'D', VB432
                    MOVB '2', VB433
                    MOVB '1', VB434
                    MOVB '1', VB435
                    MOVB ')', VB436
                    MOVB 16#0D, VB437
                    Chào bạn HueDN!
                    Mình cũng đang làm luận văn với đề tài tuơng tụ như bạn anZ nhưng với biến tần G110 để thu thập các giá trị nhu dong , áp, chiều và tốc độ động cơ điều khiển bang S7-200 (CPU 224) sau đó hiển thị trên màn hình WiCC nhueng hiện giờ mình chưa biết cách sử dụng lệnh HSC để đọc giá trị tốc độ động cơ.Bạn có thể post lệnh dạng LAD cho mình tham khảo được không.
                    Luôn tiện cho mình hỏi là có cần dung thêm Encoder để để đo hay chỉ cần thông qua biến tần là đủ rồi! Mình còn gà về phần này lắm mong các bạn giúp dùm!
                    mail của mình: batista792008@gmail.com. Có lẽ là chung thần tượng với bạn nguyenphong
                    Mail:batista792008@gmail.com
                    Địa chỉ: Ninh Kiều-Cần Thơ

                    Comment

                    Về tác giả

                    Collapse

                    anZ Tìm hiểu thêm về anZ

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

                    Collapse

                    Đang tải...
                    X