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

การสร้าง 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 ของ FCFC_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 ของ OB1FC_008.png

 

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

FC_010.png

FC_011.png

 

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

 

 

 

 

 

 

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s