หน้าเว็บ

วันพฤหัสบดีที่ 12 มีนาคม พ.ศ. 2558

COPC DLL : ตรวจสอบสถานะของOPC Serverว่าติดต่อได้หรือไม่ในC#

ถ้าเราต้องการเช็คว่าOPC Serverที่ติดต่ออยู่นั้นติดต่อได้อยู่หรือไม่ก็สามารถใช้QualityของOPC Tagเป็นตัวบอกได้ครับ

 

ในICONICS OPC UA ServerหรือKepwareจะมีtagในกลุ่มSystemจำนวนมากที่ไม่เกี่ยวกับสัญญาณในHardwareซึ่งถ้าคอมพิวเตอร์เครื่องนั้นยังสามารถเชื่อมต่อได้Qualityของสัญญาณก็ตจะเป็นGoodหรือเท่ากับ192 เราสามารถเอาค่านี้มาแสดงสถานะของOPC Serverได้

image

ตัวอย่างโค้ดการแสดงสถานะของOPC ServerในC#โดยใช้COPC Dllอ่านค่าQualityของสัญญารในกลุมSystemมา

private void timer1_Tick(object sender, EventArgs e)
        {
            int qty=0;
            try
            {         
                qty = int.Parse(copc1.GetQuality(0).ToString());

            }
            catch (Exception err)
            {
            }

            if (qty == 192)
            {
                label2.Text = "Good" + qty.ToString();
            }
            else
            {
                label2.Text = "Bad" + qty.ToString();
            }
        }

จากโค้ดข้างต้นเป็นการให้COPCอ่านQualityของOPC Tagตัวที่ต้องการ ในตัวอย่างนี้ใช้ตัวแรก จึงระบุหมายเลขในฟังก์ชั่นGetQualityเป็น 0 (เราต้องไปกำหนดก่อนว่าOPC tagที่ต้องการใช้งานนั้นชื่ออะไร ดูตัวอย่างในVDOเรื่อง ใช้COPC DLLบนC# 2010 ) ถ้าQualityไม่ใช่192แสดงว่าเกิดปัญหาขึ้นให้แสดงคำว่าBadในlabel2พร้อมต่อท้ายด้วยค่าQuality ถ้าเป็น192ก็แสดงGood

การนำไปใช้ประโยชน์

เราสามารถนำสถานะของOPC Serverไปใช้ประโยชน์เช่น ในการแจ้งเตือน หรือใรนการทำRedundant เช่นถ้าQualityเป็น BADให้เปลี่ยนไปติดต่อOPC Serverสำรอง ในกรณีเช่นนี้เราให้OPC Serverทั้งสองชุดในคอมพิวเตอร์นั้นๆมีการคอนฟิกและtagต่าง ๆ ที่เหมือนกันและติดต่อกับPLCชุดเดียวกัน(Ethernet Communication) ส่วนในโปรแกรมC#ที่เราเขียนโดยใช้COPCนั้นเราก็มีOPC tagที่ติดต่ออยู่ชุดเดียว เมื่อOPC ServerตัวแรกBAD ก็เขียนเงื่อนไขให้เปลี่ยนIP AddressจากOPC Server ตัวแรกไปยัง OPC Server ตัวที่สองแทนโดยใช้คำสั่งกำหนดnodeNameเช่น

copc1.disconnec();
copc1.nodeName = “192.168.1.25”;
copc1.connectng();

ซึ่งเป็นการระบุุให้ติดต่อกับIPที่ต้องการ โดยเราจะต้องDisconnectกับการเชื่อมต่อปัจจุบันก่อน ซึ่งอาจจะต้องมีTimerตรวจสอบว่าฺBadกี่ครั้งติดกันแล้วค่อยเปลี่ยนIPเพื่อความแน่นอนและมีการกำหนดIntervalของTimerให้เหมาะสมไม่เร็วเกินไป นอกจากนั้นฟังกชั่นการเปลี่ยนIPนี้ต้องแยกจากหน้าที่การแสดงผลหรือสั่งการปกติเช่นเขียนแยกในTimerตัวอื่นต่างหากเพราะมันต้องมีช่วงเวลาการรอระหว่างConnectไปยังIPใหม่

หมายเหตุ: COPC dllเวอร์ชั่นเดโมใช้งานได้ต่อเนื่อง30วันเท่านั้น และสามารถสั่งซื้อได้ที่นี่

ไม่มีความคิดเห็น:

แสดงความคิดเห็น