Home ICONICS (SCADA)
การ Redundant ข้อมูลจาก PLC 2 ชุดด้วย GENESIS32 PDF Print E-mail
Wednesday, 16 October 2013 00:49

จากตัวอย่างดังรูปมี OPC Server ที่ต่อกับ PLC 2 ชุดที่มี IO ต่าง ๆ เหมือนกัน ถ้า PLC ชุดที่1 (Device1)ติดต่อไม่ได้ให้ใช้ข้อมูลจาก PLC ชุดที่ 2 (Device2)

image

 

 

ในที่นี้จะกล่าวถึงหลักการและรายละเอียดโดยสังเขปดังนี้

 

เราจะตรวจสอบ Quality ของสัญญาณDevice1ว่า Good หรือ Bad โดยใช้ AlarmWorX ถ้า Bad ก็ให้ GraphWorX สั่งให้ Global Alias Theme จาก 1 เป็น 2 ถ้า Good เมื่อไหร่ค่อยให้กลับมาเป็น 1 เหมือนเดิม

 

โดยปกติเมื่อเราเอา OPC tag มาใช้งานเราจะลิงค์โดยตรงเช่น

 

KEPware.KEPServerEx.V4\Mod.Device1.test

 

แทนที่เราจะใช้ OPC tag ตรงตัวดังAddressด้านบนเราจะใช้ Global Alias เช่น

 

KEPware.KEPServerEx.V4\Mod.Device<#DeviceNo#>.test

 

ซึ่ง <#DeviceNo#> สามารถเปลี่ยนเป็น 1 หรือ 2 ตามที่เราต้องการ (จะเป็นตัวเลขหรือStringหรือใช้ปนกันก็ได้) เราเรียกว่า Global Alias ซึ่งเราสามารถสร้าง Global Alias ในโมดูลชื่อ Global Alias Configurator

 

สาเหตุที่เราใช้ AlarmWorX ในการตรวจจับ Quality เนื่องจากสามารถกำหนด Delay time ได้ ซึ่งมีประโยชน์กรณีที่ต้องการแน่ใจว่า Quality ของสัญญาณนั้นเป็น BAD จริง ๆ จากบทความเรื่อง GENESIS32 : เปลี่ยน IP ของ OPC tag อัตโนมัติตาม IP ที่ใช้งานได้ (Advance) เราสามารถสร้างAlarm tag ใน AlarmWorX32 โดยใช้AlarmแบบDigitalซึ้งมีเงื่อนไขดังนี้

 

x= {{สัญญาณที่ต้องการตรวจจับ#quality}} != 192

 

คือการตรวจสอบว่าสัญญาณนั้นมีค่าQualityเป็นฺBADหรือไม่(ไม่เท่ากับ192ซึ่งเป็นค่าปกติเมื่อสัญญาณนั้นมีQualityเป็นGood) เช่น

 

x= {{tag:KEPware.KEPServerEx.V4\Mod.Device1.test#quality}} != 192

 

ให้ตั้ง Delay ของ Alarm ไว้เช่น 3 – 5 วินาทีแล้วแต่ความต้องการเพื่อให้แน่ใจว่า Quality จะเป็น BAD จริง ๆ

 

จากโค้ดในบทความ GENESIS32 : เปลี่ยน IP ของ OPC tag อัตโนมัติตาม IP ที่ใช้งานได้ (Advance) เราเปลี่ยนOPC Tag ในProcess Pointให้เป็นAlarm Tag เช่น

ICONICS.AlarmServer_.1\Quality.Active

เมื่อ Quality หมายถึงAlarm Tagที่เราสร้างขึ้นใน AlarmWorX32 Configurator ด้วยเงื่อนไขข้างต้น

และเปลี่ยนโค้ดในTimerเป็น

 

Sub Timer(o As GwxPick) Dim txt As GwxPoint, qty As Integer  Set txt = ThisDisplay.GetPointObjectFromName(ThisDisplay.GetDynamicObjectFromName("ppt1").dataSource) qty = txt.Value  If qty = 1 Then     ThisDisplay.SetGASThemes "DeviceNo=2/0; Else     ThisDisplay.SetGASThemes "DeviceNo=1/0; End If  End Sub
 

จากโค้ดจะเป็นการเปลี่ยน Global Alais เมื่อ AlarmWorXพบว่าQualityของสัญญาณที่ติดต่อกับPLC1เป็นBad (AlarmจะActive) ทำให้สัญญาณของเราที่ใช้Global Aliasเปลี่ยนไปใช้สัญญาณจาก PLC ตัวที่ 2 แทน และเมื่อ PLC1 กลับมาติดต่อได้ปกติก็จะกลับมาติดต่อเหมือนเดิม โดยโปรดอย่าลืมว่าเราใช้สัญญาณทุกตัวในรูปแบบการใช้AliasแทนสัญญาณตรงๆบนSCADA เช่น

KEPware.KEPServerEx.V4\Mod.Device<#DeviceNo#>.test

รูปแบบข้างต้นสามารถเอาไปใช้ในทุกโมดูลของ GENESIS32 ทั้ง GraphWorX, Alarm, Trend, ฯลฯ

Last Updated ( Wednesday, 16 October 2013 14:05 )
 

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

Universal Input | Isolators | DC mV, V, mA Input | Temperature Input
Potentiometer Input | Frequency I/O | Pneumatic Transducers จาก M-System