Back to Top

การสร้าง Function แบบมีการส่งผ่านตัวแปร In/Out

 |  Technical Information - Siemens

การสร้าง FC แบบมีการส่งผ่านตัวแปร In/Out

News & Articles

การสร้าง FC ที่มี parameter In และ Out ก็เสมือนการเขียนโปรแกรมจำพวก Text programmer เช่น ภาษา C เป็นต้น ที่มีการเรียกใช้ function แบบที่ส่งผ่าน parameter นั่นเอง

.


สมมติว่าเรามี function ที่ชื่อว่า My_Calculation(Temp_Data1, Temp_Data2, Temp_Data3) และมีคำสั่งเป็น

My_Calculation(Temp_Data1, Temp_Data2, Temp_Data3)

         Temp_Data3 = Temp_Data1 + Temp_Data2

End Function

ดังนั้น ที่โปรแกรมหลักของเราก็จะทำการเรียก My_Calculation(Data1, Data2,Data3)  ซึ่งผลที่ได้ก็คือ Data1, Data2 จะนำไปบวกกันและใส่ค่าใน Data3 นั่นเอง  ซึ่งข้อดีของการทำ Function แบบนี้ก็คือเราสามารถเรียนคำสั่ง Function ซ้ำๆกันได้ โดยใส่ parameter ที่ต่างๆกันได้พร้อมๆกัน เช่น

          Call My_Calculation(Data1, Data2,Data3)

          Call My_Calculation(Data6, Data7,Data8)

          Call My_Calculation(Data20, Data21,Data22)

สังเกตว่า 3 คำสั่งนี้ใช้ function เดียวกันแต่มี parameter ที่ส่งผ่านให้ function ต่างกัน ก็จะสามารถทำงานในแต่ละบรรทัดได้ถูกต้อง คือ

• Data3 = Data1+Data2

• Data8=Data6+Data7

• และ Data22=Data20+Data21 เป็นต้น

 

การสร้าง FC (Function) เป็นการสร้างโปรแกรมย่อยเพื่อกระจายโปรแกรมให้แยกย่อยในแต่ละหน้าที่ โดยจะทำให้ทำให้โปรแกรมดูเป็นระเบียบเรียบร้อย ซึ่งจะส่งผลให้การตรวจสอบและวิเคราะห์กระทำได้ง่ายยิ่งขึ้น

โครงสร้างโปรแกรมเมื่อมีการใช้ FC  สังเกตว่าตัวโปรแกรมหลัก OB1 นั้นจะทำการเรียกใช้งาน FC  เมื่อทำงาน FC เสร็จแล้วก็จะย้อนกลับไปทำ OB1 ใน step ถัดไป

fc_001

 

1. ทำการสร้าง FC ขึ้นมาใหม่

fc_002

 

2. จากนั้น FC1 ที่สร้างไว้จะถูกเปิดให้โดยอัตโนมัติ  อย่างไรก็ตามก่อนที่เราจะทำการเขียนโปรแกรมใน FC เราควรกำหนดตัว block interface เสียก่อนโดยมี variable ที่เกี่ยวข้องดังนี้

  • Block Parameter ใช้เพื่อสร้าง interface ให้กับตัว block ที่ทำการเรียกใช้
    • Input : ใช้เป็นสัญญาณที่ block ทำการอ่านค่ามา  (FC, FB, OB บางตัว)
    • Output : ใช้เป็นสัญญาณที่ block ทำการเขียนค่าออกไป (FC, FB)
    • InOut: เป็น parameter ที่ทั้งอ่านและเขียนค่าลง parameter เดิม (FC, FB)
  • Local Data ใช้เพื่อเก็บค่าต่างๆ
    • Temp: เป็นตัวแปรที่ใช้เก็บค่าชั่วคราว ซึ่งจะคงค่าอยู่แค่ 1 cycle เท่านั้น (FC, FB, OB)
    • Static: เป็นตัวแปรที่ใช้เก็บค่าใน instance data block โดยค่าจะคงอยู่ในทุกๆ cycle จนกว่าจะถูกเขียนทับไป (FB)

FC_003.png

 

3. ระบุตัวแปร Local ที่ได้สร้างเอาไว้ให้กับโปรแกรที่เราสร้างเอาไว้ใน Network ของ FC

FC_004.png

โดยทำการเลือกตัวแปรที่เราได้สร้างเอาไว้ สังเกตว่าจะมีเครื่องหมาย # นำหน้าตัวแปรที่เราได้สร้างไว้อัตโนมัติ ซึ่งเป็นตัวบอกว่าตัวแปรที่เราใช้งานเป็นตัวแปรแบบ Local Variable นั่นเอง

FC_005.png

แม้ว่าตัวแปรที่สร้างไว้จะไม่ได้มีเครื่องหมาย # แต่โปรแกรมจะทำการใส่ให้อัตโนมัติเพราะเป็นตัวแปรแบบ Local

 

กรณีที่เราไม่ได้ระบุตัวแปรในตารางตัวแปรเอาไว้ล่วงหน้าดังในขั้นตอนที่ 2 เราก็สามารถระบุตัวแปรใหม่ขึ้นมาได้เลย แล้วเลือก Define tag ให้เป็นตัวแปรแบบ Local ในรูปแบบต่างๆ (Local In, Local Out, Local InOut, Local Temp) จากนั้นจะเห็นว่าจะมีเครื่องหมาย # นำหน้าตัวแปรที่เราเพิ่งระบุไปโดยอัตโนมัติเช่นกัน

fc_006

ตัวอย่างการระบุตัวแปรแบบ Local แบบไม่ได้ตั้งค่าตัวแปรล่วงหน้า

 

4. FC ที่สมบูรณ์ มีการระบุตัวแปรต่างๆไว้ครบแล้ว

FC_007.png

ตัวอย่าง FC ที่มีการระบุตัวแปรต่างๆครบแล้ว

 

5. เปิด OB1 แล้วลาก FC ที่ได้สร้างขึ้นมาวางในที่ Network ของ OB1

FC_008.png

 

6. ทำการระบุตัวแปรทั้งขาเข้าและขาออกที่จะใส่ให้กับ FC จนครบ (ตัวอย่างนี้ยังไม่ได้ตั้ง tag ให้กับ %I และ %Q เอาไว้ เราสามารถเปลี่ยน tag ภายหลังได้)

FC_009.png

FC_010.png

FC_011.png

 

7. ตัวอย่างโปรแกรมแบบสมบูรณ์เมื่อมีเปลี่ยนชื่อ tag ต่างๆทั้งฝั่งขาเข้าและขาออกที่เหมาะสมให้กับ FC ที่เรียกมาจนครบแล้ว

FC_012.png

 

 

thx to siemens

click1 click2 click3

 PLC, HML, TIA, Siemens, Technical Information, IOT

« Back
© Developed by CommerceLab