การใช้งาน Array เบื้องต้น

Array เป็นข้อมูลแบบโครงสร้างชนิดหนึ่ง ซึ่งประกอบขึ้นจากข้อมูลหลายๆ ตัวรวมเข้าด้วยกันเป็นกลุ่ม โดยข้อมูลแต่ละตัวในกลุ่มถูกเรียกว่า Element และแต่ละ element จะต้องเป็นข้อมูลชนิดเดียวกัน และสามารถอ้างถึงข้อมูลแต่ละ element ในได้โดยใช้ดัชนี (Index) ต่อท้ายหลังชื่อตัวแปร Index นี้จะเป็นตัวบ่งบอกถึงลำดับที่ของตัวแปร array ลักษณะของดัชนีที่เราสามารถเข้าใจได้ง่ายที่สุดก็คือ ตัวเลข นั่นเอง

การสร้างตัวแปรแบบ Array

การสร้างตัวแปรแบบ Array เราจะไปสร้างที่ Data block เป็นหลัก  ไม่สามารถสร้างใน Default tag table ตามปกติได้

  1. ทำการสร้าง Data block ใหม่ด้วยการ Add new block จากนั้นจะมีหน้าต่างให้เราเลือกชนิดของ block ที่ต้องการสร้าง ให้เราเลือกเป็น Data block ชนิด Global DB แล้วตั้งชื่อของ block นี้
    Array_01
  2. รูปแบบการตั้งตัวแปรแบบ Array จะอยู่ในรูปแบบดังนี้คือArray [low..high] of type  คือ เราสามารถทำการกำหนด index low และ index high ของตัว array และกำหนดชนิดของข้อมูลภายใน Array ด้วย type เช่น
    Array[1..5] of Bool  หรือ Array[0..20] of Int เป็นต้น
    แต่ทั้งนี้เราไม่จำเป็นต้องจำรูปแบบการพิมพ์ เพราะถ้าหากเราพิมพ์เพียงแต่ตัวอักษร A ในคอลัมน์ Data type ตัวโปรแกรมก็จะแสดงรูปแบบการตั้งค่าของ Array มาให้เราเลย ดังรูป
    Array_02จากตัวอย่างดังรูปข้างล่าง เราได้ทำการสร้างตัวแปรชื่อว่า DataSource ซึ่งเป็น array ที่มี index ตั้งแต่ 1 ถึง 20 และมีชนิดเป็น UInt
    Array_03
    และเราสามารถกระจายข้อมูลของ index ที่อยู่ภายใน array มาดูได้ดังนี้ ซึ่งก็จะมีข้อมูลตั้งแต่ DataSource[1] ถึง DataSoruce[20]  นอกจากนี้เรายังสามารถกำหนด Start value ของตัวแปรแต่ละตัวได้ด้วย
    Array_04
  3. เราสามารถสร้าง Array หลายๆตัวใน Data block เดียวกันได้ด้วย เช่น ตัวแปร Array อีกชุดหนึ่งชื่อว่า DataMonitor โดยมีข้อมูลภายใน Array ทั้งหมด 5 ตัว และมีชนิดข้อมูลแบบ UInt
    Array_05

คำสั่งเพื่อใช้งานกับ Array

คำสั่ง FiledRead
เป็นคำสั่งที่ใช้อ่านค่าจาก array จากตัวแปร MEMBER โดยกำหนดตัวแปร INDEX ที่ต้องการไปยังตัวแปร VALUE ทางขวามือ
Array_06

สังเกตว่าในตัวแปร MEMBER นั้นเราจะระบุแค่ index ตัวเริ่มต้นเท่านั้น และใช้ตัวแปร INDEX เพื่อกำหนดว่าจะอ่านค่าจาก Array index ไหนไปยัง VALUE นั้น  สมมติให้ข้อมูล Watch Table ข้างล่างนี้ เป็นข้อมูลที่เก็บค่าดั้งเดิมของ Array เอาไว้
Array_08.png

จะเห็นว่า ค่า VALUE จะเปลี่ยนไป ตาม INDEX ที่ระบุเพื่อชี้ไปยัง Array ตำแหน่งต่างๆ

คำสั่ง FieldWrite
เป็นคำสั่งที่ใช้เขียนค่าจาก VALUE ทางด้านซ้ายมือ ไปยัง array ที่ตัวแปร MEMBER โดยกำหนด index จากตัวแปร INDEX
Array_07.png

สังเกตว่าในตัวแปร MEMBER นั้นเราจะระบุแค่ตัวแปร index ตัวเริ่มต้นเท่านั้น และใช้ตัวแปร INDEX กำหนดว่าจะเขียนค่าจาก VALUE ไปยังตัวแปร Array index ไหนArray_09.png

คำสั่ง MOVE_BLK
เป็นคำสั่งที่ใช้ move ค่าจาก array ฝั่งซ้ายไปยัง array ฝั่งขวา  โดยจำนวนข้อมูลที่จะการ move ไปนั้นขึ้นอยู่กับตัวแปร COUNT  นอกจากนี้คำสั่ง MOVE_BLK ยังสามารถกำหนดตัวแปร index เข้าไปในตัวแปร array ได้อีกด้วย (เช่น แทนที่จะ fix ว่าเป็น DataMonitor[1], DataMonitor[6] หรือ DataMonitor[9] เราจะสร้างตัวแปรขึ้นมา 1 ตัวเป็นตัวระบุ index แล้วใช้เป็น  DataMonitor[“INDEX”] นั่นเอง)
Array_14

ตัวอย่างนี้ ทำการ move ข้อมูลใน DataSource[“Index”]  ไปยัง DataMonitor[1] เป็นต้นไป จำนวนเท่ากับ COUNT คือ 5 ตัว  เนื่องจากตัวแปร I์NDEX มีค่าเป็น 1 จึงทำการ move DataSource[1]-DataSource[5] ไปยัง DataMonitor[1] ถึง DataMonitor[5]Array_10

ตัวอย่างนี้ เนื่องจากตัวแปร I์NDEX มีค่าเป็น 6 จึงทำการ move DataSource[6]-DataSource[10] ไปยัง DataMonitor[1] ถึง DataMonitor[5]Array_11

ตัวอย่างนี้ เนื่องจากตัวแปร I์NDEX มีค่าเป็น 11 จึงทำการ move DataSource[11]-DataSource[15] ไปยัง DataMonitor[1] ถึง DataMonitor[5]Array_12

ตัวอย่างนี้ เนื่องจากตัวแปร I์NDEX มีค่าเป็น 16 จึงทำการ move DataSource[16]-DataSource[20] ไปยัง DataMonitor[1] ถึง DataMonitor[5]Array_13

 

การจัดการ Array ด้วย SCL
การเขียนโปรแกรมแบบ SCL นั้นจะไม่มีคำสั่ง FieldRead หรือ FieldWrite มาให้เหมือนการเขียน Ladder เพราะเราสามารถประยุกต์คำสั่งการเขียนโปรแกรมเช่น FOR..TO…DO  เพื่อวนลูปในการสั่งงาน array ได้ค่อนข้างอิสระอยู่แล้ว

ดังตัวอย่างดังรูปจะเห็นว่าเราทำการวนลูปตัวแปร Index ตั้งแต่ 1 – 5 ก็คือโปรแกรมจะทำการ move ค่าจาก DataSource[1]-DataSource[5] ไปยัง DataMonitor[1]-DataMonitor[5] ตามลำดับ
Array_15.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