Basic Programming

Design your program

เมื่อเราต้องการสร้างโปรแกรมสำหรับการทำงานอัตโนมัติด้วย PLC เรามักจะทำการเขียนคำสั่งลงใน code block ต่างๆคือ OB, FB และ FC

โครงสร้างของการเขียนโปรแกรมเราจะสามารถเลือกใช้โครงสร้างแบบ linear หรือแบบ modular ก็ได้

  • Linear structure เป็นการเขียนโปรแกรมโดยทำงานทุกคำสั่งใน sequence เดียวตั้งแต่ต้นจนจบ โดยปกติแล้ว linear program จะเขียนลงที่ program cycle OB ตัวเดียว (เช่น OB1)
  • Modular structure จะทำการเรียก code block แต่ละตัวเฉพาะ ในการทำหน้าที่นั้นๆ นั่นคือเราจะทำการแบ่งโปรแกรมที่ซับซ้อนไปสู่โปรแกรมย่อยๆ แล้วทำการเรียกใช้ code block แต่ละตัวตามหน้าที่ที่ต้องการ

programming_01.png

เรายังสามารถกำหนดให้ OB เป็นตัว interrupting event ได้อีกด้วย โดยเมื่อมี event เกิดขึ้น CPU ก็จะทำงานโปรแกรมของ OB ที่ถูกเรียกโดย interrupt ขึ้นมา และหลังจาก OB ตัวนั้นทำงานเสร็จแล้วก็จะกลับไปทำงานที่โปรแกรมหลักต่อจากจุดเดิมก่อนที่จะเกิด interrupt ขึ้น

programming_02
การเรียกใช้งาน interrupt

 

นอกจากนี้เราก็ยังสามารถทำการเรียก code block เป็นแบบ nest ได้ด้วยสำหรับการใช้งาน modular structure ที่ซับซ้อนยิ่งขึ้น

programming_03
การเรียก code block แบบ nest

 

โดยการสร้าง generic code block ที่สามารถนำมาใช้งานได้ใหม่ (reuse) ภายในตัว user program จะช่วยให้การออกแบบโปรแกรมมีความง่าย ไม่ซับซ้อน และสามารถแก้ไขได้ไม่ยากอีกด้วย

  • เราสามารถสร้าง code block แบบ reusable สำหรับหน้าที่ทั่วๆไป เช่นการควบคุมปั๊มหรือมอเตอร์ และเรายังสามารถเก็บ code block เหล่านี้ไว้ใน library ได้อีกด้วย ทำให้ application นำไปใช้ได้อีก
  • เมื่อเราวางโครงสร้างโปรแกรมเป็นแบบ modular จะทำให้การออกแบบมีความง่ายต่อความเข้าใจและการจัดการ การวางโครงสร้างแบบ modular ไม่ได้ช่วยแค่ทำให้การออกแบบโปรแกรมมีรูปแบบ standard เท่านั้น แต่ยังช่วยให้ update หรือ modify ทำได้เร็วและง่ายกว่าด้วย
  • การนำ modular design ของ function ต่างๆมาใช้ร่วมกัน จะสามารถลดเวลาในการพัฒนาโปรแกรมได้ลงมาก

 

Use OBs for organizing your user program

Organization blocks (OB) เป็นโครงสร้างหลักของการเขียนโปรแกรมของเราซึ่งทำหน้าที่เป็นตัวกลางระหว่าง OS ของ CPU กับ user program

OB จะทำงานตาม event เป็นหลัก เช่นทำงานเมื่อมี diagnostic interrupt หรือทำงานตาม time interval เป็นต้น และ OB บางตัวก็ถูกกำหนดให้เป็น start event เช่นกัน

ปกติใน main program ของเราจะทำงานอยู่ใน program cycle OB ซึ่งเราสามารถใช้งานได้มากว่า 1 program cycle OB ใน user program ของเราด้วย  ระหว่างที่อยู่ใน RUN mode นั้น program cycle OB จะทำงานที่ priority ต่ำสุดและจะสามารถถูก interrupt ได้โดย event ชนิดอื่นๆ ยกเว้น startup OB ที่จะไม่สามารถ interrupt program cycle OB ได้เพราะ CPU จะทำงาน startup OB ก่อนที่จะไปยัง RUN mode

หลังจากที่ program cycle OB ทำงานจนจบแล้ว CPU จะทำการสั่งงาน program cycle OB อีกโดยทันที ซึ่งการทำงานแบบนี้ถือเป็นรูปแบบปกติของการใช้งาน PLC นั่นเอง  ในการทำงานในหลายๆ application เราจะยังสามารถพอเห็นได้ว่า user program ทั้งหมดถูกเขียนใน program cycle OB อันเดียวก็มี

เราสามารถสร้าง OB อื่นๆเพิ่มได้เพื่อทำงานใน function เฉพาะงาน เช่น เพื่อให้จัดการกับ interrupt และ error เป็นต้น หรือเพื่อให้สั่งงานโปรแกรมทุกๆช่วงเวลาที่ต้องการ เป็นต้น ซึ่ง OB แบบนี้ จะทำการ interrupt การทำงานของ program cycle OB ทุกครั้งที่มีการเรียกมันนั่นเอง และเมื่อทำงาน interrupt OB เสร็จก็จะกลับมาทำงานที่ program cycle ต่อจากจุดเดิมที่ถูก interrupt ไป

เราสามารถสร้าง OB ตัวใหม่ได้ โดยเลือก “Add new block”
programming_04

CPU จะพิจารณาการทำงานของ interrupt ตามความสำคัญของ priority ดังที่ได้กล่าวไว้ในหัวข้อ PLC Concept นั่นเอง

เราสามารถเพิ่ม OB ได้หลายตัวใน user program ไม่ว่าจะเป็น program cycle OB หรือ startup OB โดยถ้าหากเรามี program cycle OB หลายตัว CPU จะทำงาน program cycle OB ตามลำดับ number  ของ OB จากหมายเลขน้อยสุดไปยังหมายเลขมากสุด ตัวอย่างเช่น หลังจากที่ทำงาน OB1 เสร็จแล้ว CPU จะไปทำงาน program cycle  OB123 และ OB124 ต่อเป็นต้น (เพราะทุก program cycle มี priority เป็น 1 เท่ากัน จึงทำงานจากตัวเลข number ของ OB น้อยไปมาก)
programming_05.png

เราสามารถตั้งค่า properties ของ OB ได้ โดย click ขวาที่ OB ที่ต้องการแล้วเลือก Properties
programming_06.png

 

การใช้งาน FB/FC ช่วยให้การออกแบบโปรแกรมแบบ Modular ทำได้ง่ายขึ้น

Function (FC) ก็เปรียบได้กับ subroutine นั่นเอง  FC เป็นการเขียน code block ชนิดหนึ่งที่ทำหน้าที่นั้นๆโดยสามารถทำการส่งผ่านค่าทางกลุ่มของ input/output ได้ด้วย และ FC จะทำการเก็บผลลัพธ์ไว้ในหน่วยความจำที่ระบุไว้

  • ใช้ในการทำงานที่ซ้ำเดิม เช่นการคำนวณทางคณิตศาสตร์
  • ใช้ทำหน้าที่เป็นฟังก์ชั่น เช่นการควบคุมพวก bit operation

FC นั้นสามารถถูกเรียกใช้ซ้ำได้หลายครั้งในโปรแกรม ซึ่งการที่สามารถใช้ซ้ำได้นี่เอง ที่ทำให้ตัวโปรแกรมมีความง่ายในการออกแบบมากขึ้น เพราะไม่ต้องเขียนโปรแกรมเดิมๆซ้ำหลายๆครั้ง

FC มีความแตกต่างจาก FB ตรงที่ FC ไม่ต้องระบุความสัมพันธ์เข้ากับ instance DB  เพราะ FC มีการใช้หน่วยความจำชั่วคราวของตัวมันเอง (temp memory, L) ในการคำนวณค่าต่างๆ  และหน่วยความจำชั่วคราวนี้จะสามารถจำค่าได้ ในกรณีที่เราต้องการให้ FC สามารถเก็บค่าไว้ได้หลังจาก FC ทำงานเสร็จแล้วให้เราทำการระบุ  output value ไปยัง global memory เช่น M memory หรือ Global DB

Function Block (FB) ก็เปรียบได้กับ subroutine ที่มี memory  เพราะ FB เป็น code block ที่แต่ละการเรียกใช้สามารถถูกโปรแกรมด้วย block parameter  โดย FB จะเก็บพารามิเตอร์ของ input(IN), output(OUT) และ in/out(IN_OUT) เอาไว้ในตัวแปรที่ระบุใน data block (DB) หรือ instance DB ซึ่ง instance DB จะทำตัวเป็นหน่วยความจำที่เก็บค่าเอาไว้หลังจากที่ FB ทำงานเสร็จลงแล้ว

ปกติแล้วเราจะใช้งาน FB สำหรับการทำงานที่ทำหน้าที่เกี่ยวกับ operation ที่ไม่สามารถจบการทำงานได้ภายใน scan cycle เดียว เพราะการเก็บ parameter ต่างๆเอาไว้ที่ instance DB นี่เองทำให้สามารถเข้าถึงได้ในการ scan รอบถัดไป ดังนั้นในแต่ละ FB ใน user program ของเราจะมี instance DB หลายตัวก็ได้  เพราะเมื่อเราทำการเรียกใช้งาน FB แต่ละครั้ง เราต้องทำการเปิด instance DB เพื่อใช้เก็บค่าของ block parameter และ static local data ของแต่ละการเรียกใช้นั้นๆด้วย

ภาพด้านล่างแสดงให้เห็นถึงการเรียกใช้ FB สามครั้ง โดยการใช้ DB ที่แตกต่างกันในแต่ละการเรียกใช้  ด้วยโครงสร้างการใช้งานแบบนี้ ทำให้เราสามารถใช้ FB ตัวเดียวไปควบคุมอุปกรณ์หลายๆตัวได้ เช่นมอเตอร์ โดยการระบุ instance data block สำหรับแต่ละการเรียกใช้ในแต่ละครั้ง ดังรูปprogramming_07.png

จากรูปข้างต้น ถ้าเราสมมติว่าแต่ละ instance DB เก็บข้อมูล เช่น ความเร็ว, เวลา ramp-up และ เวลาทำงานรวม สำหรับแต่ละอุปกรณ์ ดังนั้น FB22 ก็จะทำการควบคุมอุปกรณ์ 3 ตัวแยกกัน ด้วยการใช้งาน DB201 เก็บข้อมูลการทำงานของมอเตอร์ตัวที่ 1, DB202 เก็บข้อมูลการทำงานของมอเตอร์ตัวที่ 2, และ DB203 เก็บข้อมูลการทำงานของมอเตอร์ตัวที่ 3 เป็นต้น

Data block

User program สามารถเก็บข้อมูลในหน่วยความจำในพื้นที่เฉพาะใน CPU เช่น inputs (I), outputs (Q), และ bit memory (M) และยิ่งกว่านั้นเรายังสามารถใช้ data block (DB) เพื่อให้เข้าถึงข้อมูลที่เก็บไว้ในโปรแกรมได้เร็วขึ้น และข้อมูลที่เก็บใน DB จะไม่ถูกลบทิ้งเมื่อ data block ถูกปิดไปหรือเมื่อการทำงานของ code block ที่เกี่ยวข้องจบการทำงานลง ซึ่ง DB นั้นจะมี 2 แบบคือ

  • Global DB จะเก็บข้อมูลของ code block ในโปรแกรมของเรา ซึ่งไม่ว่า OB, FB หรือ FC ตัวไหนก็สามารถเข้าถึงเพื่อใช้งานได้
  • Instance DB เก็บข้อมูลสำหรับ FB เฉพาะตัวนั้นๆ  โครงสร้างข้อมูลใน instance DB ประกอบด้วย Input, Output และ InOut และ static data ของ FB แต่ temp memory ของ FB จะไม่เก็บใน instance DB

แม้ว่า instance DB จะสะท้อนข้อมูลของแต่ละ FB แต่ว่า code block ตัวไหนก็สามารถข้าถึงข้อมูลของ instance DB ได้เช่นกัน

 

Programming Languages

STEP7 มีรูปแบบภาษาของการ programming มาตรฐานให้หลักๆดังนี้

  • LAD (Ladder Logic หรือ Ladder diagram) เป็นการโปรแกรมแบบกราฟิกโดยเลียนแบบการเขียน circuit diagram
  • FBD (Function Block Diagram) เป็นการโปรแกรมแบบกราฟิกโดยอ้างอิงจากสัญลักษณ์พีชคณิต
  • SCL (Structure Control Language) เป็นการโปรแกรมแบบภาษาข้อความ high-level programming languages

เมื่อเราได้ทำการสร้าง code block ขึ้นมาแล้วเราต้องเลือกภาษาที่ต้องการเขียนด้วย และในโปรแกรมของเราก็สามารถประกอบขึ้นด้วยภาษาหลายๆภาษาประกอบกันก็ได้

Ladder Logic (LAD)

น่าจะเป็นภาษาที่ผู้เริ่มต้นเขียน PLC คุ้นเคยมากที่สุด เพราะเป็นภาษาที่ทำการเลียนแบบมาจาก circuit diagram ที่ง่ายต่อความเข้าใจ เช่น contact NO, NC และ output เป็นต้น
programming_08.png

Function Block Diagram (FBD)

ค่อนข้างคล้ายกับ LAD เพียงแต่ว่าตัวกราฟิกจะถูกแทนที่ด้วยสัญลักษณ์ทางพีชคณิต เช่น AND, OR เป็นต้น
programming_09.png

Structured Control Language (SCL)

เป็นภาษาแบบใช้ข้อความโดยอิงมาจากภาษา PASCAL เป็นหลัก  เมื่อเราสร้าง block แบบ SCL เสร็จแล้ว เราสามารถวาง block นี้ไว้ที่ โปรแกรมใน block อื่นๆที่ถูกเขียนด้วยภาษา LAD หรือ FBD ก็ได้

ภาษา SCL ใช้ operator มาตรฐานของการโปรแกรมเช่น เท่ากับแทนด้วย :=,  บวก ลบ คูณ หาร แทนด้วย + –  *  / ตามลำดับเป็นต้น

ส่วนการทำ operation นั้นใช้มาตรฐานของภาษา PASCAL เป็นหลัก เช่น IF-THEN-ELSE, CASE, REPEAT-UNTIL, GOTO และ RETURN ดังนั้นเราจึงสามารถใช้มาตรฐานของภาษา PASCAL ในการอ้างอิง syntax ใน SCL ได้เลย

และเนื่องจากความคล้ายคลึงกับภาษา PASCAL นั่นเอง ทำให้การเขียนแบบนี้เหมาะกับการทำงานแบบเงื่อนไข การทำวนลูป และการทำคำสั่งแบบ nest ซึ่งช่วยให้เราสามารถทำคำสั่งที่ซับซ้อนได้ง่ายกว่าภาษา LAD และ FBD นั่นเอง

ลองดูตัวอย่างของการใช้งาน SCL ข้างล่างนี้เพื่อความเข้าใจในการใช้งานที่มากขึ้น

“C” := #A + #B;                                                     กำหนด local variable ให้ tag 2 ตัว
“Data_block_1”.Tag := #A;                              กำหนด data block tag
IF  #A  >  #B   THEN   “C” := #A;                      คำสั่ง IF-THEN
“C” := SQRT (SQR (#A) + SQR (#B));              คำสั่งให้ทำ square root

จากคำสั่งข้างต้น SCL มีรูปแบบคำสั่งมาตรฐานพื้นฐานดังนี้คือ

  • คำสั่งเท่ากับ ใช้ :=
  • คำสั่งคณิตศาสตร์ใช้ +, -, *, /
  • การใช้งาน global variable ใช้รูปแบบ “tag name”  เช่น “C” (tag name หรือ data block name จะอยู่ในเครื่องหมายคำพูด)
  • การใช้งาน local variable #variable name  เช่น #A และ #B เป็นต้น
  • การใช้งาน address ตรงๆไปเลยใช้ %absolute address เช่น %I0.0 หรือ %MW10 เป็นต้น
  • การคำนวณทางคณิตศาสตร์นั้น เราสามารถผสม data type ที่ใช้ได้ลงในสมการเลย โดย data type ของผลลัพธ์นั้นจะขึ้นอยู่กับตัวที่ต้องให้ความสำคัญที่สุด (most-significant operand) เช่น หากเรานำ INT มาคูณกับ REAL ผลลัพธ์ที่ได้ก็จะเป็นแบบ REAL นั่นเอง

ตัวอย่างการใช้งาน SCL

  1. ให้เราทำการสร้าง FC ตัวใหม่ขึ้นมา โดยระบุภาษาเป็น SCL
    programming_10.png
  2. สร้างตัวแปร In_A, In_B ที่ฝั่ง Input โดยกำหนด data type เป็น Int และสร้างตัวแปร Output_Data ที่ฝั่ง Output โดยกำหนด data type เป็น Int
    programming_11.png
  3. เขียนคำสั่ง SCL ตามตัวอย่าง โดยสังเกตว่าเราสามารถกดที่คำว่า IF… เพื่อให้โปรแกรมพิมพ์คำสั่ง IF-THEN ให้เราได้เลย ส่วนตัวแปรนั้นเราสามารถ drag&drop จากส่วนบนมายังส่วนของการเขียนภาษา SCL ได้เลย ทำให้เราไม่ต้องกังวลว่าเราจะพิมพ์ตัวแปรผิดหรือใส่ syntax ตัวแปรผิดรูปแบบหรือไม่ (กรณีที่ใช้ Global DB เราก็สามารถลากจาก Global DB มายังส่วนของการเขียน SCL ได้เช่นกัน)
    programming_12.png
  4. จากนั้นให้เปิด OB1 แล้วจาก FC ที่ได้สร้างขึ้นมา มาวางที่ network
    programming_13
  5. ทำการใส่ตัวแปรให้กับ In_A, In_B และ Output_Data ให้ครบ
    programming_14.png
  6. ผลจากการทำงาน จะเห็นว่าเมื่อ In_A มากกว่า In_B จะทำการลบค่าแล้วเอาไปเก็บที่ Output_Data แต่จะทำการบวกกันหาก In_A น้อยกว่า In_B

     

Powerful instructions

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

ฺBit logic instructions
น่าจะเป็นคำสั่งแรกๆที่ผู้หัดใช้งาน PLC ทุกคนต้องเขียนเป็นอันดับแรกๆ ซึ่งตัวคำสั่งนี้ ไม่ว่า PLC ยี่ห้อไหนๆก็แทบจะไม่มีความแตกต่างกันเลยเพราะค่อนข้างตรงไปตรงมาคือ NO contact, NC contact และ Output contact นั่นเอง  ส่วนการนำ contact แต่ละตัวมา AND หรือ OR กัน ก็เพียงแค่เอามาต่ออนุกรมเพื่อเป็น AND และเอามต่อขนานเพื่อเป็น OR

สำหรับการประยุกต์คำสั่งพื้นฐาน NO, NC และ Output เพื่อการใช้งานเช่น interlock ขอให้ผู้ใช้งานศึกษาได้จากเวปไซต์ได้ทั่วๆไป

programming_17
การใช้งาน AND, OR แบบ LAD

 

programming_18.png
การใช้งาน AND และการใช้ NOT ที่ contact ในแบบ FBD

 

 

programming_19.png
ตัวอย่าง AND, OR และ XOR แบบ FBD

Comparator instruction
เป็นคำสั่งที่ใช้เปรียบเทียบค่า เช่น มากกว่า น้อยกว่า เท่ากับ มากกว่าเท่ากับ น้อยกว่าเท่ากับ เป็นต้น
programming_20

เราสามารถเปลี่ยน data type ที่ต้องการได้จากตัวคำสั่งทันที ่เช่น หากต้องการเปรียบเทียบข้อมูลแบบ Byte ก็ double click ที่คำว่า Int ก็จะมี drop down menu ให้เลือกรูปแบบข้อมูลได้ หรือหากต้องการเปลี่ยนจากเท่ากับเป็นอย่างอื่นเช่น มากกว่าหรือน้อยกว่า ก็ให้ click ที่สัญลักษณ์เพื่อเปลี่ยนได้เลย
programming_21.png

Move instruction
เป็นคำสั่งที่ย้ายค่าจากฝั่ง IN ไปยังฝั่ง OUT
programming_22.png

Conversion operation
เป็นคำสั่งเพื่อเปลี่ยนชนิดข้อมูล ซึ่งก็คล้ายกับคำสั่ง Comparator คือเราสามารถคลิกที่ชนิดข้อมูลแต่ละฝั่งเพื่อเปลี่ยนชนิดของข้อมูลที่ต้องการเปลี่ยนได้  ตัวอย่างดังรูปเป็นการเปลี่ยนจาก Int เป็น Real และ Real เป็น Int ซึ่งจริงๆชนิดข้อมูลที่เปลี่ยนได้มีมากกว่านี้
programming_23.png

Round instruction
เป็นคำสั่งที่เปลี่ยนข้อมูลแบบ Real หรือ LReal ไปเป็นข้อมูล Integer แบบต่างๆ โดยคำสั่งนี้จะทำการปัดเศษไปยังค่าจำนวนเต็มที่ใกล้เคียงที่สุด แต่ถ้าหากฝั่ง input เป็นเศษ 0.5 โปรแกรมจะทำการปัดไปยัง จำนวนเต็มที่เป็นเลขคู่ก่อน  เช่น

  • ถ้าฝั่ง input = 10.5 ฝั่ง output จะได้ 10
  • ถ้าฝั่ง output เป็น 13.5 ฝั่ง output จะเป็น 14 เป็นต้น

ดังนั้นอย่าสับสนคำสั่งนี้กับการปัดเศษที่เราเคยเรียนมา เพราะนี่คือเงื่อนไขของคำสั่ง ROUND ที่เราต้องเข้าใจก่อน
programming_24.pngTrunc instruction
เป็นคำสั่งที่เปลี่ยนข้อมูลแบบ Real หรือ LReal ไปเป็นข้อมูล Integer แบบต่างๆ โดยคำสั่งนี้จะไม่ทำการปัดเศษใดๆทั้งสิ้น สนใจแต่จำนวนเต็มตัวหน้าจุดทศนิยมเท่านั้น ตัวอื่นๆหลังทศนิยมถือเป็นศูนย์หมด
programming_25.png

Ceil & Floor instructions
Ceil เป็นคำสั่งที่เปลี่ยนข้อมูลแบบ Real หรือ LReal ไปเป็นข้อมูล Integer แบบต่างๆ โดยแปลงไปเป็นจำนวนเต็มที่ใกล้เคียงที่สุดที่มากกว่าหรือเท่ากับค่า input ฝั่ง Real

Floor เป็นคำสั่งที่เปลี่ยนข้อมูลแบบ Real หรือ LReal ไปเป็นข้อมูล Integer แบบต่างๆ โดยแปลงไปเป็นจำนวนเต็มที่ใกล้เคียงที่สุดที่น้อยกว่าหรือเท่ากับค่า input ฝั่ง Real
programming_26.png   programming_27.png

ดูเผินๆแล้ว คำสั่ง TRUNC มีความคล้ายคลึงกับ CEIL และ FLOOR ในหลายๆสถานการณ์  แต่ลองพิจารณาตัวอย่างดังต่อไปนี้จะเห็นความแตกต่างได้ง่ายขึ้น

  • TRUNC
    • input = 0.5   ==> output = 0
    • input = -0.5   ==> output = 0
  • CEIL
    • input = 0.5   ==> output = 1
    • input = -0.5   ==> output = 0
  • FLOOR
    • input = 0.5   ==> output = 0
    • input = -0.5   ==> output = -1

 

NORM_X instruction
เป็นคำสั่งที่น่าจะเหมาะกับการแปลงค่าขาเข้า เทียบกับค่า MIN-MAX ไปเป็นค่าที่อยู่ระหว่าง 0-1.0 เท่านั้น
programming_28.png    programming_29.png

SCALE_X instruction
เป็นคำสั่งที่ทำย้อนกลับจาก NORM_X คือทำการแปลงค่าระว่าง 0-1.0 ไปเป็นค่าที่ต้องการใน scale ของ MIN-MAX ที่เรากำหนด
programming_30.png programming_31.png

ดังนั้นจะเห็นว่า หากนำคำสั่ง NORM_X และ SCALE_X มาใช้คู่กัน ก็จะเหมาะในการวัดค่าสัญญาณ analog ว่ามีค่าเป็นเท่าไหร่ เช่นดังตัวอย่างข้างต้นนี้ สมมติว่า analog ขาเข้ามีค่าระหว่าง 0-20000 และเราวัดค่าที่ 6789 แต่เราทราบว่าสัญญาณ analog ที่เราต้องการวัดนั้นเป็นสัญญาณแบบ 0-10V  เราก็นำมา SCALE_X  ก็จะได้ค่าเป็น voltage ที่เราต้องการทราบได้ เป็นต้น

CALCULATE instruction
เป็นคำสั่งที่มีประโยชน์มากเมื่อต้องมีการคำนวณตัวแปรหลายๆตัวแปร เพราะเราไม่ต้องเสียเวลามาสร้างคำสั่งบวก ลบ คูณ หาร ยกกำลัง แยกกันเป็นต้น  เราสามารถกำหนดที่ตัวคำสั่งได้เลยว่าอยากให้เอาตัวแปรไหนมาคำนวณอะไรกับตัวแปรไหน

ที่ตัว block CALCULATE เราสามารถกำหนด data type ของ output ได้ว่าอยากให้เป็นประเภทไหน เช่นตัวอย่างนี้ให้ output ออกมาเป็น REAL
programming_32
และถ้าเราทำการ double click ที่ตรงคำว่า OUT := <???>  เราก็จะสามารถใส่รูปแบบการคำนวณได้เลย ซึ่งจะช่วยเพิ่มความสะดวกในการคำนวณหลายๆคำสั่งโดยใช้เพียง block เดียว
programming_33.png
programming_34

 

 

 

 

 

 

 

 

 

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