จากตัวอย่างดังรูปมี OPC Server ที่ต่อกับ PLC 2 ชุดที่มี IO ต่าง ๆ เหมือนกัน ถ้า PLC ชุดที่1 (Device1)ติดต่อไม่ได้ให้ใช้ข้อมูลจาก PLC ชุดที่ 2 (Device2) 
ในที่นี้จะกล่าวถึงหลักการและรายละเอียดโดยสังเขปดังนี้ เราจะตรวจสอบ 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, ฯลฯ |