เทคนิคการรับค่าจากอุปกรณ์ซีเรียลที่ไม่มีโปรโตคอลเพื่อไม่ให้เปลืองTagในSCADAไม่ใช่จะทำได้ในทุกอุปกรณ์ครับ แต่โดยส่วนใหญ่สามารถทำได้ดังนี้
1. ตั้งให้อุปกรณ์ซีเรียลนั้นมีการส่งข้อมูลทางSerial PortแบบAutomatic
กล่าวคือให้ส่งข้อมูลออกมาเป็นช่วง ๆ ไม่ต้องรอRequestนั่นเอง
2. ตั้งให้อุปกรณ์ส่งข้อมูลทั้งหมดออกมาแบบต่อกันทีเดียว
โดยให้ส่งข้อมูลยาวเท่าที่จะทำได้ โดยไม่กระทบต่ออัตราการรับข้อมุูล ข้อมูลแต่ละอย่างจะต่อกันเป็นแถวยาว เช่น อุณหภูมิ ความชื้น หมายเลขStation ข้อความแจ้งเตือน ฯลฯ ซึ่งการส่งข้อมูลออกมาเป็นค่ายาวแบบนี้ OPC Serverจะใช้เพียงTagเดียว(ICONICS OPC UA Serverใช้UCON Driver) ทั้งนี้ควรกำหนดให้ขนาดข้อมูลมีความยาวคงที่ นั่นคือแต่ละข้อมูลที่ต่อกันต้องคงที่เท่าที่จะเป็นไปได้ หากไม่สามารถคงที่ได้ก็ต้องมีสัญญลักษ์บอกว่าข้อมูลย่อยนั้นๆเริ่มและสิ้นสุดตรงไหนซึ่งส่วนใหญ่จะคั่นข้อมูลด้วยคอมม่าหรือ”:”หรือ”;”หรือสัญลักษ์อื่น ๆ ที่แน่นอน (/, \, ‘, ฯลฯ)
3. มีสัญญลักษณ์บอกจุดสิ้นสุดข้อมูล
ทั้งนี้เมื่อส่งข้อมูลออกมาแต่ละครั้งควรต้องมีสัญลักษณ์บอกว่าสิ้นสุดการส่งข้อมุลแล้วเช่น เครื่องหมายขึ้นบรรทัดใหม่(Chr13)เป็นต้น ทั้งนี้เพื่อให้UCONสามารถตัดข้อมูลได้ดีโดยใช้เงื่อนไขการขึ้นบรรทัดใหม่ หรือเครื่องหมายอื่น ๆ ก็ได้ที่แน่นอน เช่น OK, ///, ฯลฯ
4. ตัดข้อมูลในSCADA
เมื่อSCADAอย่างGENESIS32หรือGENESIS64อ่านค่าจากOPC tagมาแล้วซึ่งจะยังเป็นค่าข้อมูลรวม เราสามารถใช้Expressionหรือ Global Expressionเพื่อตัดค่าข้อมูลออกมาจากข้อมูลรวมกันเป็นข้อมูลย่อยตามตำแหน่งที่แน่นอนของข้อมูลหรือตามสัญญลักษ์ที่บอกตำแหน่งของข้อมูลได้ การตัดขจ้อมูลแบบนี้จะถือว่าแหล่งข้อมูลOPC tagหลัก(ก่อนตัด)เป็นตัวเดียวกัน ดังนั้นเมื่อตัดออกมาเป็นตัวที่สอง สาม สี่ หรือมากกว่านั้น ก็จะถูกมองว่ามีSourceเดียวกันทั้งหมด ทำให้Tagไม่ถูกนับเพิ่ม เพราะซฮร์ฟแวร์GENESISจะถือว่าเป็นสัญญาณที่มาจากOPC tagเดียวกันนั่นเอง
ข้อมูลเพิ่มเติม
- เล่นกับUCON (จำลองข้อมูลซีเรียลส่งให้UCONเพื่อเรียนรู้การรับค่าจากอุปกรณ์ซีเรียล)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น