-
Thành viên cấp 1
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
-
-
Thành viên cấp 4
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
-
-
Thành viên cấp 1
Gửi bởi
Mechatronic_Hieu
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
-
-
Thành viên cấp 4
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
-
Bài viết của "Mechatronic_Hieu" đã được cám ơn bởi các thành viên:
-
Thành viên cấp 10
Gửi bởi
nhoskonvt
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
-
Bài viết của "cuongvcs" đã được cám ơn bởi các thành viên:
-
Thành viên cấp 4
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
-
-
Thành viên cấp 10
Gửi bởi
Mechatronic_Hieu
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
-
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
-
Nội quy - Quy định
Back to Top
Múi giờ GMT +7. Bây giờ là 08:33 AM.
Phiên bản 4.2.5
Phát triển bởi thành viên PLCVietNam®.
Đánh dấu