Back to Top

การสร้างตัวแปรแบบ Array และคำสั่งเบื้องต้น

 |  Technical Information - Siemens

การเขียนโปรแกรมเพื่ออ่านค่าพลังงานจาก Energy module SM1238

News & Articles

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

 

 

thx to siemens

click1 click2 click3

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

« Back
© Developed by CommerceLab