Đăng Ký
Kết quả 1 đến 7 của 7

Hybrid View

  1. #1
    Thành viên cấp 1
    Ngày tham gia
    Sep 2015
    Bài viết
    34
    Thanks
    14
    0 lượt trong 0 bài viết

    Xin hỏi về hàm Round trong Rslogic5000.

    Chào cả nhà, em đã thử tìm 1 khối function có chức năng làm tròn số giống như bên siemens nhưng ko thấy. Nên e muốn hỏi là trong RXlogic5000 có khối đó ko. nếu ko có thì mình có thể làm cách nào để làm tròn số. Mong nhận được hồi âm. Best Regards..
    Passion is the golden key of success

  2. #2
    Thành viên cấp 4
    Ngày tham gia
    Oct 2011
    Bài viết
    300
    Thanks
    17
    89 lượt trong 75 bài viết
    Viết 1 cái hàm round cho nó thôi, hình như RSlogic k hỗ trợ Round
    Nhận hợp tác lập trình các loại PLC và xử lý sự cố về hệ thống tự động hóa
    Gm: Hidden Content

  3. #3
    Thành viên cấp 1
    Ngày tham gia
    Sep 2015
    Bài viết
    34
    Thanks
    14
    0 lượt trong 0 bài viết
    Trích dẫn Gửi bởi Mechatronic_Hieu Xem bài viết
    Viết 1 cái hàm round cho nó thôi, hình như RSlogic k hỗ trợ Round
    làm sao để viết bằng ladder bác nhỉ, bác gợi ý 1 chút được ko. thanks for replying
    Passion is the golden key of success

  4. #4
    Thành viên cấp 10
    Ngày tham gia
    Jul 2011
    Đang ở
    Da Nang City
    Bài viết
    1,418
    Thanks
    65
    257 lượt trong 205 bài viết
    Trích dẫn Gửi bởi nhoskonvt Xem bài viết
    làm sao để viết bằng ladder bác nhỉ, bác gợi ý 1 chút được ko. thanks for replying
    Bạn dựa vào đây và viết thử xem,,
    You can move a REAL data type into a DINT data type using a MOV instruction and rounding will occur, but you need to be aware of how the Logix processor rounds the fractional part of a Floating Point value while converting to integer data types, or performing arithmetic operations on fractional Floating Point values.

    For the Logix Platform, the REAL data type is of a 32 bit Single Precision Binary Floating Point format.

    It consists of...

    1 Sign bit (+/-) ¦ 8 exponent bits (whole number) ¦ 23 Mantissa bits (fractional part).

    For any fractional part of Floating Point values above or below N.5 the Logix processor will round UP or DOWN accordingly. But for any fractional part equal to N.5 the Logix processor handles the rounding according to the default rounding method set out in the IEEE Standard for Floating Point Arithmetic (IEEE 754). This rounding method is simply known as "Round half to even", but has been called many things such as "Unbiased Rounding", "Gaussian Rounding" and even "Broken Rounding".

    If a Floating Point value has a N.5 fractional part, then the Logix processor will always round to the nearest EVEN number. This means that for an N.5 fractional part the rounding is dependent on the whether the N.X value is ODD or EVEN to begin with. This is very important to remember as normally one might expect an N.5 fractional part to always round UP to the nearest WHOLE number.

    If a Floating Point value has any other fractional part besides N.5, such as N.2, N.8, N.45, etc., then the Logix processor will always round to the nearest WHOLE number, whether UP or DOWN, ODD or EVEN.

    So...

    Any Floating Point value of N.5 may round UP or DOWN to the nearest EVEN number depending on the WHOLE value being ODD or EVEN.

    Any Floating Point value with a fractional part less than N.5 will always round DOWN to the nearest WHOLE number.

    Any Floating Point value with a fractional part greater than N.5 will always round UP to the nearest WHOLE number.

    Example 1: Move with N.5 fractional part

    MOV REAL 123.5 > DINT = 124 <<<Nearest EVEN number (Rounds UP)
    MOV REAL 124.5 > DINT = 124 <<<Nearest EVEN number (Rounds DOWN)

    Example 2: Move with non N.5 fractional part

    MOV REAL 123.6 > DINT = 124 <<<Nearest WHOLE number (Rounds UP)
    MOV REAL 123.4 > DINT = 123 <<<Nearest WHOLE number (Rounds DOWN)
    MOV REAL 123.45 > DINT = 123 <<<Nearest WHOLE number (Rounds DOWN)

    Example 3: Move N.5 fractional part either side of zero

    MOV REAL 0.5 > DINT = 0 <<<Nearest EVEN number (Rounds DOWN)
    MOV REAL -0.5 > DINT = 0 <<<Nearest EVEN number (Rounds UP)

    The same principles apply when performing arithmetic operations on Floating Point values and storing them in non REAL data types such as SINT, INT and DINT integers.

    Example 4: Addition - WHOLE number is EVEN

    ADD REAL 10 + CONSTANT 8.5 > DINT = 18 <<<Nearest EVEN number (Rounds DOWN)
    ADD REAL 10 + CONSTANT 7.5 > DINT = 18 <<<Nearest EVEN number (Rounds UP)

    Example 5: Addition - WHOLE number is ODD

    ADD REAL 9 + CONSTANT 8.5 > DINT = 18 <<<Nearest EVEN number (Rounds UP)
    ADD REAL 9 + CONSTANT 7.5 > DINT = 16 <<<Nearest EVEN number (Rounds DOWN)

    These are just some examples of perhaps unexpected rounding results from performing move and arithmetic operations on Floating Point values while storing them in integer values.
    BR
    ---------------------------------
    Thank and Best Regards
    cuongvcs
    Email :
    Hidden Content
    Hidden Content
    Tel : 0984198685
    " Listen. Think. Solve. "
    Skype : cuongvcs

  5. Bài viết của "cuongvcs" đã được cám ơn bởi các thành viên:


  6. #5
    Thành viên cấp 4
    Ngày tham gia
    Oct 2011
    Bài viết
    300
    Thanks
    17
    89 lượt trong 75 bài viết
    Trước khi hỏi câu này bạn nên đưa ra thuật toán cho mình, rồi từ thuật toán đó bạn sẽ biết được cách viết thế nào thôi. Chỉ vài dòng code là xong
    Nhận hợp tác lập trình các loại PLC và xử lý sự cố về hệ thống tự động hóa
    Gm: Hidden Content

  7. Bài viết của "Mechatronic_Hieu" đã được cám ơn bởi các thành viên:


  8. #6
    Thành viên cấp 4
    Ngày tham gia
    Oct 2011
    Bài viết
    300
    Thanks
    17
    89 lượt trong 75 bài viết
    Dùng lệnh MOVE như trên thì làm tròn và giữ lại phần nguyên. Trong trường hợp làm tròn nhưng vẫn còn giữ lại phần thập phân thì không được. Vd: làm tròn và giữ lại 2 chữ số thập phân 1234.5678 ->1234.57
    Nhận hợp tác lập trình các loại PLC và xử lý sự cố về hệ thống tự động hóa
    Gm: Hidden Content

  9. #7
    Thành viên cấp 10
    Ngày tham gia
    Jul 2011
    Đang ở
    Da Nang City
    Bài viết
    1,418
    Thanks
    65
    257 lượt trong 205 bài viết
    Trích dẫn Gửi bởi Mechatronic_Hieu Xem bài viết
    Dùng lệnh MOVE như trên thì làm tròn và giữ lại phần nguyên. Trong trường hợp làm tròn nhưng vẫn còn giữ lại phần thập phân thì không được. Vd: làm tròn và giữ lại 2 chữ số thập phân 1234.5678 ->1234.57
    Ca này khó đó bác Hieu.
    BR
    ---------------------------------
    Thank and Best Regards
    cuongvcs
    Email :
    Hidden Content
    Hidden Content
    Tel : 0984198685
    " Listen. Think. Solve. "
    Skype : cuongvcs

Đánh dấu

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Back to Top