Home
GENESIS32 SCADA : สั่งงานbitในWord (รวบDO16ตัวใช้เพียง1tag) PDF Print E-mail
Written by Administrator   
Sunday, 01 September 2019 15:56

image

การสั่งงานบิตในWordของOPC tagให้ONหรือOFFจะทำให้เราประหยัดtagของSCADAได้ และในGENESIS32ก็ทำได้เช่นกันถึงแม้จะไม่มีฟังก์ชั่นsetbitเหมือนในGENESIS64แต่ก็สามารถสร้างขึ้นได้เอง โดยในบทความนี้จะแสดงวิธีการให้ทราบครับ

 ชมเวอร์ชั่นVDO

หลักการ

เราจะสร้างฟังก์ชั่นSetbitไว้ในUDM(Unified Data Manager)เพื่อคำนวนค่าของWordถ้าbitที่สนใจมีการเปลี่ยนแปลง แล้วเอาค่าที่ได้จากฟังก์ชั่นนี้ส่งให้ค่าWordเดิม เท่านี้ก็จะเป็นการควบคุมบิตในตำแหน่งที่ต้องการได้

image

 

ลงมือ

เปิดUnified Data Manager แล้วสร้างExpressionใหม่ชื่อ setBit (เอาไว้เรียกใช้งานเมื่อต้องการคำนวนWordว่าถ้าbitที่สนใจเปลี่ยนเป็นOnหรือOff ค่าWordจะเป็นอย่างไร) โดยให้สร้างParameterสามตัวคือ tag, bit และ vl (วีแอล) เพื่อรับชื่อtag ตำแหน่งบิตที่สนใจ และค่าของบิตที่เราต้องการเซต(ว่าจะให้ONหรือOff)

 

image

 

ในแท็ป Read Expressionให้วางExpressionดังนี้ลงไป (คัดลอกจากข้อความด้านล่างนี้ลงไป)

 

x= <<tag>> – ( bittest(<<tag>>,<<bit>>) * pow(2 ,<<bit>>) )
+
(<<vl>> * pow( 2 , <<bit>>))

 

image

 

คลิ้ก Apply

คลิ้กไฟจราจรให้เป็นสีเขียว

 

image

 

เท่านี้ก็พร้อมเอาsetBitไปใช้

โปรดอย่าลืมว่า setBit ใช้เพื่อคำนวนค่าWORDหากbitตำแหน่งใดๆมีการเปลี่ยนแปลง ยังไม่ได้เป็นการสั่ง(Write) เราต้องเอาค่าที่คำนวนได้เขียนลงไปในWORDเดิมเอง

 

เรียกใช้setBit

เรียกใช้setBitจากUDMเมื่อเราต้องการสั่งให้bitในWordของOPC tagใดๆ ONหรือOff เช่นต้องการสั่งbitที่5ของOPC tagให้ONเป็นต้น เราสามารถใช้ปุ่มในGraphWorXเป็นตัวสั่งได้ หรือจะใช้RegisterในUDMเป็นตัวสั่งอัตโนมัติก็ได้ ในตัวอย่างนี้จะใช้ปุ่มในGraphWorXสั่ง

ดาวน์โหลดตัวอย่างไฟล์GraphWorXจากลิงค์นี้

 

https://sites.google.com/site/gen32exam/home/SetBit.gdf?attredirects=0&d=1

 

เปิดไฟล์ตัวอย่างที่ดาวน์โหลดมาซึ่งลิงค์กับOPC tagชื่อFloat5ในOPC SimulatorของICONICSอยู่ (เปลี่ยนไปติดต่อOPC tagอื่นได้ถ้าต้องการแต่ขอให้แน่ใจว่าOPC tagนั้นเป็นแบบRead & Write)

 

image

 

ในปุ่มON และOFFแต่ละตัวเริ่มจากตัวขวาสุดจะสั่งให้bit 0, 1 , 2 และ 3นั้น ONหรือOFF  (สั่งได้ถึงบิตที่ 15 ในWORDหรือบิตที่31ในDWORD)

ให้ลองเข้าโหมดRuntime( Ctrl + Mบนแป้นพิมพ์) แล้วคลิ้กปุ่มที่ต้องการ ค่าของบิตนั้นจะเปลี่ยนทำให้ค่าของOPC tagเปลี่ยนตาม

 

image

 

ลองออกจากRuntime(คลิ้กCtrl+Mบนแป้นพิมพ์)แล้วดูDynamicของปุ่มจะพบว่ามีการใช้ Action คือ Download Value โดยDataSourceคือOPC tagที่เราต้องการสั่งบิต และValue (On Up)คือฟังก์ชั่นsetBitที่เราสร้างไว้ซึ่งระบุOPC tagและตำแหน่งบิตและค่าของบิต

 

image

 

จากตัวอย่างจะมีการใช้Value (On Up)เป็น

 

exp:setBit("{{ICONICS.Simulator.1\SimulatePLC.OUTPUTS.FLOAT5}}",3,1)
 

หมายถึงเซตบิตที่3ของOPC tagชื่อ ICONICS.Simulator.1\SimulatePLC.OUTPUTS.FLOAT5 ให้ ON (1)

โดยเราCopyชื่อOPC tagมาจากProcesspointอื่นๆมาวางได้เพื่อความสะดวกไม่ต้องพิมพ์เอง

ถ้าต้องการสั่งบิตที่3ให้OFFก็จะใช้Value (On Up) เป็น

 

exp:setBit("{{ICONICS.Simulator.1\SimulatePLC.OUTPUTS.FLOAT5}}",3,0)

 

เท่านี้ก็สามารถสั่งบิตใดๆของWordได้แล้ว สามารถสั่งงานDigita OutputของPLCหรือRTUได้โดยใช้OPC tagตัวเดียว

Last Updated ( Monday, 02 September 2019 20:27 )
 

สิ่งที่น่าสนใจ

imageเขียนโค้ดง่ายๆให้ SCADA พูด

**สงวนลิขสิทธิ์ทั้งหมด โดย EDA International LTD.
สงวนลิขสิทธิ์ทั้งหมด ทุกข้อความ รูปภาพ งานกราฟฟิค และภาพเคลื่อนไหว ที่ปรากฎอยู่บนหน้าเว็บไซต์ อยู่ภายใต้การสงวนลิขสิทธิ์และได้รับการคุ้มครองตามกฎหมาย ไม่อนุญาต ให้ทำซ้ำ คัดลอก ดัดแปลง ส่วนหนึ่งส่วนใดหรือทั้งหมด โดยมิได้รับอนุญาตเป็นลายลักษณ์อักษรจากบริษัทฯ