CÔNG TY TNHH TỰ ĐỘNG HÓA GIA HƯNG TECH

https://giahungtech.com

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

Khi mới làm quen với PLC có lẽ mọi người cũng giống mình, luôn thắc mắc làm sao để đọc tín hiệu analog đầu vào và hiển thị lên màn hình? nó sẽ xử lý ra sao, viết hàm nhứ thế nào, rồi các module vvvv nói chung là rất nhiều câu hỏi đặt ra. Có nhiều bạn thậm chí đã lập trình rồi cũng không hiểu sao nó lại như vậy, thậm chí đọc help của Siemens lại càng không hiểu khi họ cho cái hàm, ví dụ hàm scale trong S7-300 FC105 lại càng khó hiểu hơn....
Xử lý tín hiệu tương tự trong PLC S7 300
1. Tín hiệu Analog input
Vậy nhưng nếu các bạn không cần lập trình mà chỉ cần dùng cái hàm này thì gia trị ra sẽ đúng. chỉ cần các bạn biết dùng thì không có gì là sai cả vì Siemens đã có các chuyên gia nghiêm cứu cái này rồi đó. Mình chép nguyên cái phần help cua Step 7 Manager ra đây nhé.


Lưu ý: Ở đây mình viết cho S7-300/400 nhưng với S7-200/1200/1500 cũng làm tương tự nhé
The SCALE function takes an integer value (IN) and converts it to a real value in engineering units scaled between a low and a high limit (LO_LIM and HI_LIM). The result is written in OUT. The SCALE function uses the equation:

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

The constants K1 and K2 are set based upon whether the input value is BIPOLAR or UNIPOLAR.

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

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

If the input integer value is greater than K2, the output (OUT) is clamped to HI_LIM, and an error is returned. If the input integer value is less than K1, the output is clamped to LO_LIM, and an error is returned.

Reverse scaling can be obtained by programming LO_LIM > HI_LIM. With reverse scaling, the value of the output decreases as the value of the input increases.

Điều đặc biệt mình muốn các bạn chú ý là phần tô đậm màu xanh trong hàm trên. Đây chính là công thức mà Siemens áp dụng cho mọi module để đọc tín hiệu analoge của mình. Nếu như tín hiệu vào có đảo cực ví dụ từ -10V đến +10V ... thì set bipolar bằng 1 (tức là cho một bit nào đó bằng 1 rồi gán cho đầu vào này của FC105 là xong. Ở đây có cái hằng số K1, K2 là hằng số maximum mà module analog của Siemens có thể xử lý nên người ta đã viết cho dạng maximum. 
Như vậy chương trình có sẵn của Siemens không phải lúc nào cũng tối ưu cho nên tất cả các chương trình của mình về tính toán Analog vì độ phân giải của module không giống nhau và có thể có những ứng dụng không cẩn Scale K1,2 là 27648 do vậy mình đầu viết lại để được tối ưu hơn. Mời các bạn tham khảo chương trình sau nhé.

"Chương trình tối ưu hóa cho tính toán Analog được viết bởi Admin của vocsy"

Ở đây thay thế công thức của Siemens bằng công thức:

Out=((Raw-Raw_Min)*(Scale_Max-Scale_Min))/(Raw_Max-Raw_Min) + Raw_Min 

Ở đây ta có:
Raw: là giá trị đọc được từ đầu vào Input module
Raw_Max: là giá trị lớn nhất module có thể đọc được hoặc là mình muốn cho nó đọc. (Ở trên Siemens nói là từ nhỏ hơn 27648 đó, chính là giá trị lớn nhất mà module analog có thể xử lý được).
Raw_Min: Là giá trị nhỏ nhất mà module có thể đọc.
Scale_Max: Chính là giá trị lớn nhất mà mình mong muốn thực tế hay chính là giá trị Engineering đó. Chẳng hạn đây là fias trị nhiệt độ, áp suất thực tế ....
Scalmin: là giá trị engineering nhỏ nhất.

Chương trình được viết dưới dạng chương trình con để thuận tiện dùng:
// Convert from interger to Real
L #Raw
ITD
DTR
T #_Raw_R
L #Raw_Min
ITD
DTR
T #_Raw_Min_R
L #Raw_Max
ITD
DTR
T #_Raw_Max_R
// Calculation
// Raw - Raw_Min
L #_Raw_R
L #_Raw_Min_R
-R
T #_temp_real

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

// Raw_Max - Raw_Min
L #_Raw_Max_R
L #_Raw_Min_R
-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
T #_Output
Đây là chương trình được rút gọn vì thực tế mình còn thêm vài cái limit cho nó nữa. Các bạn cứ tham khảo chương trình này, nếu cần liên hệ admin sẽ tận tình chỉ thêm cho.
Chương trình cụ thể đầy đủ xem hình đính kèm.
Và đây là hình ảnh chương trình mẹ gọi chương trình con trên thực thi
analog 2 png

Tác giả: admin

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