Xử lý tín hiệu tương tự trong PLC S7 300

Thứ sáu - 17/09/2021 13:08
Tiếp tục bài trước - Mình sẽ trình bày về cách xử lý tín hiệu tương tự đầu ra của PLC
Xử lý tín hiệu tương tự trong PLC S7 300
2. Tín hiệu Analoge output
Ngược lại với module input (module analog input là mã hóa của dãy số nguyên integer maximum 27648 từ tín hiệu analog đầu vào) thì ngược lại, Đầu ra của module analog lai là tín hiệu analog từ dãy số integer maximum 27648.
Như trên mình cũng đã nói, trong thư viện của Siemens cũng đã có sẵn hàm này rồi và các bạn chỉ cần lôi nó ra xài, đó là hàm FC106. Nếu không có gì lớn thì chịu khó đọc help của Siemens là làm được. ở đây mình cũng chép nguyên cái hướng dẫn của Siemens cho các bạn tham khảo
The UNSCALE function takes a real input value (IN) in engineering units scaled between a low and a high limit (LO_LIM and HI_LIM) and converts it to an integer value. The result is written to OUT. The UNSCALE function uses the equation:

OUT = [ ((IN–LO_LIM)/(HI_LIM–LO_LIM)) * (K2–K1) ] + K1

and sets the constants K1 and K2 based upon whether the input value is BIPOLAR or UNIPOLAR.

·BIPOLAR: The output integer value is assumed to be between –27648 and 27648, therefore, K1 = –27648.0 and K2 = +27648.0

·UNIPOLAR: The output integer value is assumed to be between 0 and 27648, therefore, K1 = 0.0 and K2 = +27648.0

If the input value is outside the LO_LIM and HI_LIM range, the output (OUT) is clamped to the nearer of either the low limit or the high limit of the specified range for its type (BIPOLAR or UNIPOLAR) and an error is returned.

Thực ra đây cũng chính là công thức biến đổi ngược của công thức tình giá trị của analog input mà thôi. Thế nhưng mình đã nói, các bạn nên tạo một chương trình tối ưu cho ứng dụng của mình và sau đây mình cũng giới thiệu với các bạn chương trình của admin vocsy dành cho các bạn tham khảo.


Ta cũng áp dụng công thức 
Out=((Raw-Raw_Min)*(Scale_Max-Scale_Min))/(Raw_Max-Raw_Min) + Raw_Min

L #Scale_Min
ITD 
DTR 
T #_Scale_Min_R
L #Scale_Max
ITD 
DTR 
T #_Scale_Max_R
L #Raw
L #Raw_Min
-R 
T #_temp_real

// Scale_Max - Scale_Min
L #_Scale_Max_R
L #_Scale_Min_R
-R 
//(Raw - Raw_Min) * (Scale_Max - Scale_Min)
L #_temp_real
*R 
T #_temp_real

// Raw_Max - Raw_Min
L #Raw_Max
L #Raw_Min
-R 
T #_temp_real2
//(Raw - Raw_Min) * (Scale_Max - Scale_Min) / (Raw_Max - Raw_Min)
L #_temp_real
L #_temp_real2
/R 
//(Raw - Raw_Min) * (Scale_Max - Scale_Min) / (Raw_Max - Raw_Min) + Scale_Min
L #_Scale_Min_R
+R 
T #_Output
//Convert scaled output to integer
L #_Scaled_R
RND 
T #Scaled

Và đây là chương trình gọi thực tế để các bạn tham khảo
out.

Tác giả: admin

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

Click để đánh giá bài viết

  Ý kiến bạn đọc

Yêu cầu tư vấn

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây