Array เป็นข้อมูลแบบโครงสร้างชนิดหนึ่ง ซึ่งประกอบขึ้นจากข้อมูลหลายๆ ตัวรวมเข้าด้วยกันเป็นกลุ่ม โดยข้อมูลแต่ละตัวในกลุ่มถูกเรียกว่า Element และแต่ละ element จะต้องเป็นข้อมูลชนิดเดียวกัน และสามารถอ้างถึงข้อมูลแต่ละ element ในได้โดยใช้ดัชนี (Index) ต่อท้ายหลังชื่อตัวแปร Index นี้จะเป็นตัวบ่งบอกถึงลำดับที่ของตัวแปร array ลักษณะของดัชนีที่เราสามารถเข้าใจได้ง่ายที่สุดก็คือ ตัวเลข นั่นเอง
การสร้างตัวแปรแบบ Array เราจะไปสร้างที่ Data block เป็นหลัก ไม่สามารถสร้างใน Default tag table ตามปกติได้
1. ทำการสร้าง Data block ใหม่ด้วยการ Add new block จากนั้นจะมีหน้าต่างให้เราเลือกชนิดของ block ที่ต้องการสร้าง ให้เราเลือกเป็น Data block ชนิด Global DB แล้วตั้งชื่อของ block นี้
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 มาให้เราเลย ดังรูป
จากตัวอย่างดังรูปข้างล่าง เราได้ทำการสร้างตัวแปรชื่อว่า DataSource ซึ่งเป็น array ที่มี index ตั้งแต่ 1 ถึง 20 และมีชนิดเป็น UInt
และเราสามารถกระจายข้อมูลของ index ที่อยู่ภายใน array มาดูได้ดังนี้ ซึ่งก็จะมีข้อมูลตั้งแต่ DataSource[1] ถึง DataSoruce[20] นอกจากนี้เรายังสามารถกำหนด Start value ของตัวแปรแต่ละตัวได้ด้วย
3. เราสามารถสร้าง Array หลายๆตัวใน Data block เดียวกันได้ด้วย เช่น ตัวแปร Array อีกชุดหนึ่งชื่อว่า DataMonitor โดยมีข้อมูลภายใน Array ทั้งหมด 5 ตัว และมีชนิดข้อมูลแบบ UInt
คำสั่ง FiledRead
เป็นคำสั่งที่ใช้อ่านค่าจาก array จากตัวแปร MEMBER โดยกำหนดตัวแปร INDEX ที่ต้องการไปยังตัวแปร VALUE ทางขวามือ
สังเกตว่าในตัวแปร MEMBER นั้นเราจะระบุแค่ index ตัวเริ่มต้นเท่านั้น และใช้ตัวแปร INDEX เพื่อกำหนดว่าจะอ่านค่าจาก Array index ไหนไปยัง VALUE นั้น สมมติให้ข้อมูล Watch Table ข้างล่างนี้ เป็นข้อมูลที่เก็บค่าดั้งเดิมของ Array เอาไว้
จะเห็นว่า ค่า VALUE จะเปลี่ยนไป ตาม INDEX ที่ระบุเพื่อชี้ไปยัง Array ตำแหน่งต่างๆ
คำสั่ง FieldWrite
เป็นคำสั่งที่ใช้เขียนค่าจาก VALUE ทางด้านซ้ายมือ ไปยัง array ที่ตัวแปร MEMBER โดยกำหนด index จากตัวแปร INDEX
สังเกตว่าในตัวแปร MEMBER นั้นเราจะระบุแค่ตัวแปร index ตัวเริ่มต้นเท่านั้น และใช้ตัวแปร INDEX กำหนดว่าจะเขียนค่าจาก VALUE ไปยังตัวแปร Array index ไหน
คำสั่ง MOVE_BLK
เป็นคำสั่งที่ใช้ move ค่าจาก array ฝั่งซ้ายไปยัง array ฝั่งขวา โดยจำนวนข้อมูลที่จะการ move ไปนั้นขึ้นอยู่กับตัวแปร COUNT นอกจากนี้คำสั่ง MOVE_BLK ยังสามารถกำหนดตัวแปร index เข้าไปในตัวแปร array ได้อีกด้วย (เช่น แทนที่จะ fix ว่าเป็น DataMonitor[1], DataMonitor[6] หรือ DataMonitor[9] เราจะสร้างตัวแปรขึ้นมา 1 ตัวเป็นตัวระบุ index แล้วใช้เป็น DataMonitor[“INDEX”] นั่นเอง)
ตัวอย่างนี้ ทำการ move ข้อมูลใน DataSource[“Index”] ไปยัง DataMonitor[1] เป็นต้นไป จำนวนเท่ากับ COUNT คือ 5 ตัว เนื่องจากตัวแปร I์NDEX มีค่าเป็น 1 จึงทำการ move DataSource[1]-DataSource[5] ไปยัง DataMonitor[1] ถึง DataMonitor[5]
ตัวอย่างนี้ เนื่องจากตัวแปร I์NDEX มีค่าเป็น 6 จึงทำการ move DataSource[6]-DataSource[10] ไปยัง DataMonitor[1] ถึง DataMonitor[5]
ตัวอย่างนี้ เนื่องจากตัวแปร I์NDEX มีค่าเป็น 11 จึงทำการ move DataSource[11]-DataSource[15] ไปยัง DataMonitor[1] ถึง DataMonitor[5]
ตัวอย่างนี้ เนื่องจากตัวแปร I์NDEX มีค่าเป็น 16 จึงทำการ move DataSource[16]-DataSource[20] ไปยัง DataMonitor[1] ถึง DataMonitor[5]
การจัดการ Array ด้วย SCL
การเขียนโปรแกรมแบบ SCL นั้นจะไม่มีคำสั่ง FieldRead หรือ FieldWrite มาให้เหมือนการเขียน Ladder เพราะเราสามารถประยุกต์คำสั่งการเขียนโปรแกรมเช่น FOR..TO…DO เพื่อวนลูปในการสั่งงาน array ได้ค่อนข้างอิสระอยู่แล้ว
ดังตัวอย่างดังรูปจะเห็นว่าเราทำการวนลูปตัวแปร Index ตั้งแต่ 1 – 5 ก็คือโปรแกรมจะทำการ move ค่าจาก DataSource[1]-DataSource[5] ไปยัง DataMonitor[1]-DataMonitor[5] ตามลำดับ
![]() |
![]() |
![]() |
PLC, HML, TIA, Siemens, Technical Information, IOT
INDUSTRIAL ELECTRICAL CO., LTD.
© 2014 Copyright by ie.co.th . All Rights Reserved. |
GOOGLE MAP |
SITE MAP |
|