วันอังคารที่ 28 มีนาคม พ.ศ. 2560

เรียนรูระบบ DCS (Distributed Control System)

ระบบ DCS (Distributed Control System) เบื้องต้น
             ระบบDCS(Distributed Control System)คือ ระบบควบคุม(Control)และเฝ้าดู(monitor)ที่ใหญ่ที่สุดเมื่อเทียบกับระบบควบ คุมทั้งหมดและใช้กันอย่างแพร่หลายที่สุดในอุตสาหกรรมขนาดใหญ่เช่น โรงกลั่นน้ำมัน แท่นขุดเจาะน้ำมันและก๊าส อุตสาหกรรมปิโตรเคมีและเคมิคอลทั้งหลาย ทั้งนี้ระบบDCSยังมีให้เลือกใช้หลายยี่ห้อด้วยกัน เช่น Honeywell Yokogawa Siemens Emerson ABB เป็นต้น และระบบDCS นั้นยังมีความเสถียรและแม่นยำค่อนข้างสูงมาก จึงเป็นที่นิยมในอุตสาหกรรมที่มีความเสี่ยงสูงเช่น อุตสาหกรรมปิโตรเคมีเป็นต้น ดังนั้นไม่ต้องสงสัยเลยว่าทำไมระบบDCSนั้นถึงมีราคาค่อนข้างแพง

ตัวอย่างของระบบ DCS ของ Honeywell ข้อดีของระบบ DCS (Distributed Control System)
1.สามารถควบคุมกระบวนการผลิตต่างๆได้จากหน้าจอคอมพิวเตอร์ ซึ่งจะช่วยทำให้ลดเวลาและมีประสิทธิภาพมากกว่าการใช้แรงงานคนหลายเท่าตัว
2.สามารถ เชื่อมต่ออุปกรณ์การวัดและควบคุม เช่น เครื่องวัดอุณหภูมิ(Temp Transmitter) เครื่องวัดแรงดัน(Pressure Transmitter) เครื่องวัดระดับของเหลว(Level Transmitter) เครื่องวัดระดับการไหล(Flow Transmitter) คอนโทรลวาล์ว ปั้มป์ หรือมอเตอร์เป็นต้น
3.สามารถ มีการเชื่อมต่อกับระบบอื่นๆเช่น PLC FSC เป็นต้น และยังสามารถควบคุมหรือMonitorระยะไกล(SCADA)ผ่านNetwokชนิดต่างๆ เช่นWireless หรือดาวเทียมได้อีกด้วย
4.สามารถแจ้งเตือนทั้งบนหน้าจอคอมพิวเตอร์และสัญญาณเสียงเมื่อมีความผิดปกติของกระบวนการผลิตเกิดขึ้น
5.ระบบDCS ยังมีฟังก์ชั่นเก็บข้อมูล(History) เพื่อให้สามารถย้อนกลับไปดูข้อมูล(Trend)ต่างๆของกระบวนการผลิตในอดีตที่มา และนำไปปรับปรุงกระบวนการผลิตในอนาคตได้ ข้อเสียของระบบ DCS (Distributed Control System)

1.ระบบDCSเป็นระบบที่ค่อนข้างใหญ่และมีความซับซ้อนจึงจำเป็นต้องใช้ผู้เชี่ยวชาญเท่านั้นในการตรวจสอบเมื่อระบบเกิดปัญหา
2.อะไหล่(Part)ของDCS Controller ต้องนำเข้าจากต่างประเทศเท่านั้นจึงอาจใช้เวลาในการสั่งซื้อ แต่ผู้ใช้ส่วนใหญ่จะสั่งซื้อมาเก็บไว้เป็นSpareไว้ล่วงหน้า
3.ระบบDCS มีราคาค่อนข้างแพง
ส่วนประกอบหลักของระบบDCS(Distributed Control System)

ส่วนประกอบหลักของระบบDCSมีอยู่ 4 ส่วนดังต่อไปนี้
DCS Servers
DCS Stations
Networks/LAN (Fault Tolerant Ethernet)
Controllers




DCS Architecture DCS ServerServer ในระบบDCSนั้นสามารถเป็นได้ทั้งแบบเดี่ยว(Single Server)และแบบคู่(RedundancyServer)ซึ่งส่วนใหญ่จะเป็นแบบหลังเพราะถ้า มีServerตัวใดตัวนึงเสียหรือหยุดการทำงาน Serverอีกตัวก็จะขึ้นมาทำงานแทนในทันทีและจะทำให้กระบวนการผลิตนั้นไม่หยุด ชะงักหรือสร้างความเสียหายให้กับกระบวนการผลิตได้ ซึ่งหน้าที่หลักของServerจะมีดังต่อไปนี้.

Server เป็นศูนย์กลางการเชื่อมต่อระหว่าง Controller กับ Station.
Server เป็นตัวเก็บฐานข้อมูล(Database) และข้อมูลย้อนหลัง(History)
Server เป็นศูนย์กลางการออกแบบกระบวนการผลิต(Engineering)ก่อนที่จะส่งต่อ(Download)ไปยัง Controller
Server ยังป็นศูนย์กลางการเชื่อมต่อระหว่าง DCS กับระบบอื่นๆเช่น ระบบSCADA หรือ OPC เป็นต้น



Redundancy ServerDCS ControllerController ถือเป็นส่วนสำคัญที่สุดของระบบDCS เพราะเป็นตัวที่เชื่อมต่อโดยตรงกับเครื่องวัดหรืออุปกรณ์(Device)ในกระบวน การผลิต นอกจากนี้Controllerยังถือเป็นสมองของระบบDCSเลยก็ว่าได้เพราะมีCPU Processorที่ทำหน้าRunning Programmingที่รับมาจากServerนั่นเอง Controllerนั้นมีมากมาหลายรุ่นและหลายยี่ห้อ การเลือกใช้ก็ขึ้นอยู่กับลักษณะการใช้งาน ในตัวอย่างก็จะเป็นของHoneywell รุ่นC200 และC300

Honeywell รุ่นC200
Fault Tolerant Ethernet (FTE)
ระบบการเชื่อมต่อ(Communications networks) จะมีลักษณะเหมือนกับระบบLANทั่วไป(standard Ethernet) แต่ที่แตกต่างก็คือสายLAN(LAN Cable)ที่เชื่อมต่อจะมี 2 เส้น(Redundancy)เพื่อป้องกันการLoss Connectionเมื่อมีการขาดหรือชำรุดของสายLANเส้นใดเส้นนึง





ตัวอย่าง FTE Network DCS StationsDCS Station คือ เครื่องคอมพิวเตอร์(PC)ที่รับข้อมูลจากServerให้ผุ้ควบคุมดูแลการ ผลิต(Operator)นั้นใช้ในการเฝ้าดู(Monitoring)และควบคุม(Control)กระบวนการ ผลิตทั้งหมด ทั่งนี้DCS Station สามารถมีได้มากกว่า 1 เครื่อง ขึ้นอยู่กับความเหมาะสม
1 DCS Station มีAccessoriesดังนี้:

Display Monitorมีได้ถึง1-4 Display



คีย์บอร์ด(Standard PC keyboard)


คีร์บอร์ดเฉพาะทาง(Special operator keyboard)



Pointing device such as a mouse, track ball, touch pad, etc.



DCS Graphic
DCS Graphic เป็นSoftwareบนDCS Station สำหรับช่วยให้ผู้ควบคุมการผลิต(Operator)สามารถควบคุมระบบการผลิตได้ง่าย ยิ่งขึ้น เพราะGraphicเป็นโปรแกรมที่จำลองรูปแบบกระบวนการผลิตออกมาเป็นรูปถาพเสมือน จริงซึ่งมีตัวอย่างดังต่อไปนี้


ตัวอย่างGraphicแบบMulti Window


ตัวอย่างGraphicแบบSingle Window
DCS Trend
DCS Trend คือSoftware Programที่ติดตั้งอยู่บนServerและStation ใช้สำหรับเรียกดูค่าการวัดและควบคุมออกมาในลักษณะProcess Line หรือ Trend ซึ่งทำให้ง่ายต่อการวิเคราะห์ระบบการผลิตเพื่อพัฒนาระบบการผลิตหรือ วิเคราะห์หาสาเหตุเมื่อเกิดปัญหา



ตัวอย่าง DCS Trend
DCS Events
DCS Event คือSoftware Programที่ติดตั้งอยู่บนServerและStationใช้สำหรับบัญทึกเหตุการทั้งหมดที่ เกิดขึ้นกับระบบ(System)และกระบวนการผลิต(Process) ซึ่งช่วยให้สามารถวิเคราะห์หาสาเหตุเมื่อระบบเกิดขัดข้องหรือมีปัญหาและยัง สามารถเก็บข้อมูลได้หลายปีขึ้นอยู่กับขนาดของMemory



ตัวอย่าง DCS Events


TCP(transfer control protocol) Socket Programming

           การสร้างลิงค์ติดต่อสื่อสารแบบ TCP/IP ที่เป็น sockets เป็นการเชื่อมต่อแบบ connection-orientated ซึ่งนั้นก็หมายความว่าการสนทนาระหว่างเครื่อง client กับ server จะทำการเชื่อมต่อตลอดเวลาที่สนทนานอกเสียจากมันจะเสีย ซึ่งการสนทนากันหรือการแลกเปลี่ยนข้อมูลระหว่าง client กับ server นั้นจะต้องเป็นไปตามกฎของ protocol 
          สำหรับตัวอย่างการติดต่อ TCP/IP  ที่เป็น sockets ผมจะให้
- โทรศัพท์มือถือ android ให้เป็น client 
- notebook เป็น server 

รูปแสดงไดอะแกรมแสดงการติดต่อสื่อสารกันระหว่าง client และ server ด้วย TCP Socket

รูปแสดงลำดับขั้นตอนในการติดต่อสื่อสารข้อมูล TCP Socket
Java Code
package com.tomkrub.app.simpleconnect;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;

public class SimpleConnectActivity extends Activity {
    /** Called when the activity is first created. */
   
    private Button btnConnect;
    private EditText editIP;
    private EditText editPort;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);     
                
        editIP = (EditText)findViewById(R.id.editIP);
        editPort = (EditText)findViewById(R.id.editPort);       
        btnConnect = (Button)findViewById(R.id.btnConnect);
       
        btnConnect.setOnClickListener(new OnClickListener()
                {    public void onClick(View v){   
                    connect(editIP.getText().toString(),Integer.parseInt(editPort.getText().toString()));
                 }
                });      
       
       // connectIP();
    }

   public void connect (String IP,int Port)
    {
        Socket clientSocket = null;
        try {
            //clientSocket = new Socket("localhost", 5000);//127.0.0.1
            clientSocket = new Socket(IP,Port);
           
            Toast.makeText(this, clientSocket.getInetAddress().toString(),
                    Toast.LENGTH_LONG).show();
            //clientSocket.close();
           
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
             Toast.makeText(this, "UnknownHostException "+e,
                        Toast.LENGTH_LONG).show();
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
             Toast.makeText(this, "IOException "+e,
                        Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
                      
          PrintWriter outToServer = null;
        try {
            outToServer = new PrintWriter(clientSocket.getOutputStream(),true);
            outToServer.println ("test sentence na krub") ; //ประโยคที่ทำการส่งให้ server
            Toast.makeText(this, "test",Toast.LENGTH_LONG).show();
            clientSocket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
                       
    }
   
}
   

Server  TCP chat program Download TCPChat.jar หรือ Gui.java 

ผลการทดลอง
ขณะรอการเชื่อมต่อจาก client

ป้อน IP กับ Port ของ Server พร้อมกด Connect

Server เชื่อมต่อกับ client พร้อมได้รับข้อมูล

PROFIBUS (Process Field Bus)

PROFIBUS (Process Field Bus)


  • PROFIBUS เป็นมาตรฐานแบบหนึ่งสำหรับการติดต่อแบบอนุกรมกับอุปกรณ์ต่างๆภายในโรงงาน ทำให้สามารถลดจำนวนสายลงแต่สามารถเพิ่มความเร็วในการสื่อสารข้อมูลได้มาก ขึ้น โดยได้ค่าที่ถูกต้องเที่ยงตรง
  • PROFIBUS เป็นมาตรฐานระบบเปิดสำหรับการผลิตและควบคุมอัตโนมัติ ที่ไม่ถูกผูกมัดกับผู้ผลิตใดๆ
  • PROFIBUS จะเป็นไปตามข้อกำหนดมาตรฐานระหว่างประเทศ(IEC61158,EN50170,50240)เพื่อให้ อุปกรณ์ต่างๆที่ใช้มาตรฐานนี้สามารถติดต่อกัน และใช้งานร่วมกันได้อย่างสมบูรณ์
PROFIBUS-DP
  • PROFIBUS-DP (Profibus Decentral Peripherals) เป็น PROFIBUS ที่ใช้สำหรับงานควบคุมเครื่องจักร(Factory automation) จากข้อมูลการตลาด PROFIBUS ถือได้ว่าเป็นผู้นำทางด้าน Field Bus เลยก็ว่าได้เพราะมีคนนิยมใช้มากกว่าครึ่งหนึ่งของตลาด Field Bus
  • ใช้สำหรับการส่งข้อมูลที่มีความเร็วมากเช่น อุปกรณ์ควมคุมมอเตอร์(control drives),PLC ระบบไฟฟ้ากำลัง และอุปกรณ์อื่นๆที่ต้องการการต่อเชื่อมด้วยความเร็วสูง
PROFIBUS-PA
  • PROFIBUS-DP (Profibus Process Automation) เป็น PROFIBUS ที่ใช้สำหรับงานควบคุมกระบวนการผลิต(Process Control)โดยเฉพาะซึ่งจำเป็นต้องมีความปลอดภัยสูงมาก
  • ใช้เพื่อทดแทนระบบที่ใช้การสื่อสัญญาณแบบ 4-20mA,และแบบ HART ถูกออกแบบมาให้ใช้ได้ทั้งในส่วนที่ต้องการความปลอดภัยจากการระเบิด โดยเพิ่มความสามารถในการ ถอดลดและเพิ่มได้โดยไม่มีผลต่ออุปกรณ์อื่น ๆ ในบัส 

HMI คืออะไร ?

HMI คืออะไร ?

            HMI HMI เป็นอุปกรณ์ที่นำเสนอข้อมูลจากการประมวลผลให้กับผู้ปฏิบัติการที่เป็นมนุษย์ และมนุษย์จะนำข้อมูลนี้ไปใช้ในการควบคุมขบวนการ Typical basic SCADA animation HMI (Human–Machine Interface) มักจะมีการเชื่อมโยงไปยังฐานข้อมูลระบบ SCADA และโปรแกรมซอฟแวร์เพื่อหาแนวโน้ม, ข้อมูลการวินิจฉัย, และข้อมูลการจัดการเช่นขั้นตอนการบำรุงรักษาตามตารางที่กำหนด, ข้อมูลโลจิสติก, แผนงานโดยละเอียดสำหรับเครื่องตรวจจับหรือเครื่องจักรตัวใดตัวหนึ่ง, และแนวทางการแก้ปัญหาที่เกิดจากระบบผู้เชี่ยวชาญ (expert system)

             ระบบ HMI มักจะนำเสนอข้อมูลให้กับบุคลากรในการดำเนินงานในรูปกราฟิกแบบแผนภาพเลียนแบบ ซึ่งหมายความว่าผู้ปฏิบัติสามารถดูแผนผังแสดงโรงงานที่ถูกควบคุม ยกตัวอย่างเช่นภาพของเครื่องสูบน้ำที่เชื่อมต่อกับท่อสามารถแสดงการทำงานและ ปริมาณของน้ำที่กำลังสูบผ่านท่อในขณะนั้น ผู้ปฏิบัติงานก็สามารถปิดการทำงานของเครื่องสูบน้ำได้ ซอฟแวร์ HMI จะแสดงอัตราการไหลของของเหลวในท่อที่ลดลงในเวลาจริง แผนภาพเลียนแบบอาจประกอบด้วยกราฟิกเส้นและสัญลักษณ์วงจรเพื่อเป็นตัวแทนของ องค์ประกอบของกระบวนการหรืออาจประกอบด้วยภาพถ่ายดิจิตอลของอุปกรณ์ในกระบวน ถูกทับซ้อนด้วยสัญลักษณ์ภาพเคลื่อนไหว

            แพคเกจ HMI สำหรับระบบ SCADA มักจะมีโปรแกรมวาดภาพเพื่อผู้ปฏิบัติการหรือบุคลากรบำรุงรักษาระบบที่สามารถ ใช้ในการเปลี่ยนวิธีการที่จุดเหล่านี้จะแสดงในอินเตอร์เฟซ การแสดงเหล่านี้อาจจะเป็นสัญญาณไฟจราจรง่ายๆซึ่งแสดงสถานะของสัญญาณไฟจราจร ที่เกิดขึ้นจริงในสนามหรืออาจซับซ้อนยิ่งจึ้นในการแสดงผลบนจอแบบหลายโป รเจ็กเตอร์ที่แสดงตำแหน่งทั้งหมดของลิฟท์ในตึกระฟ้าหรือแสดงรถไฟทั้งหมดของ ระบบการขนส่งทางราง

            ส่วนที่สำคัญของการใช้งานระบบ SCADA ส่วนใหญ่คือการจัดการเรื่องการเตือนภัย ระบบจะจับภาพตลอดไม่ว่าเงื่อนไขของสัญญาณเตือนจะเป็นอย่างไรเพื่อใช้พิจารณา เมื่อมีเหตุการณ์การเตือนภัยเกิดขึ้น เมื่อเหตุการณ์เตือนภัยได้รับการตรวจจับ มีสิ่งที่ต้องกระทำหลายอย่าง (เช่นสร้างตัวชี้วัดสัญญาณเตือนภัยเพิ่มอีกตัวหรือมากกว่าหรือส่งข้อความอี เมลหรือข้อความเพื่อแจ้งให้ผู้ปฏิบัติการหรือผู้จัดการระบบ SCADA ระยะไกลจะได้รับทราบ) ในหลายกรณีที่ผู้ปฏิบัติการ SCADA อาจจะต้องรับทราบเหตุการณ์เตือนที่เกิดขึ้นเพื่อยกเลิกสัญญาณเตือนบางตัวใน ขณะที่สัญญาณเตือนตัวอื่น ๆ ยังคงใช้งานจนกว่าเงื่อนไขของสัญญาณเตือนทั้งหมดจะถูกแก้ไข เงื่อนไขการเตือนปลุกต้องสามารถชี้ชัดอย่างชัดเจน ตัวอย่างเช่นจุดเตือนภัยเป็นจุดสถานะแบบค่าดิจิตอลที่มีทั้ง'ปกติ'หรือ 'ALARM' ที่คำนวณตามสูตรขึ้นอยู่กับค่าในอนาล็อกและดิจิตอลโดยปริยาย: ระบบ SCADA อาจจะตรวจสอบโดยอัตโนมัติว่า ค่าอนาล็อกอยู่นอกค่าต่ำสุดหรือสูงสุด หรือไม่ ตัวอย่างของสัญญาณเตือนภัยรวมถึงไซเรน, กล่องป๊อปอัพขึ้นบนหน้าจอหรือพื้นที่สีระบายหรือสีกระพริบบนหน้าจอ (ที่อาจจะกระทำในลักษณะที่คล้ายกันกับไฟ "น้ำมันหมด" ในรถยนต์); ในแต่ละกรณี บทบาทของตัวสัญญาณเตือนภัยก็เพื่อดึงความสนใจของผู้ปฏิบัติการ ในการออกแบบระบบ SCADA, จะต้องดำเนินการเมื่อมีเหตุการณ์สัญญาณเตือนภัยที่เกิดขึ้นต่อเนื่องในช่วง เวลาสั้น ๆ มิฉะนั้นสาเหตุพื้นฐาน (ซึ่งอาจจะไม่ใช่เหตุการณ์แรกที่ตรวจพบ) อาจหาไม่พบ

ระบบ BAS

        ระบบ BAS เป็นการนำเอาการทำงานการสั่งการทำงานของอุปกรณ์ระบบสาธารณูปโภคทั้งหมดของ อาคาร ให้อยู่ในความควบคุมของคอมพิวเตอร์เพื่ออำนวยความสะดวก และจัดการงานระบบโดยมีประสิทธิภาพสูงสุด ซึ่งเป็นระบบเครือข่าย Network แบบLAN (Local Area Network) รูปแบบของการเชื่อมต่อระบบ Network ของระบบ BAS เป็นแบบ Bus มีลักษณะเป็นเส้นตรงและมีเครื่องคอมพิวเตอร์อยู่เป็นกิ่งก้านออกจากเส้นตรง หลักข้อดีคือสามารถใช้ Software,ข้อมูล,อุปกรณ์ทางด้าน Hard Ware ร่วมกันได้ในส่วนระบบ LAN ของระบบ BAS ประกอบไปด้วย
1. File Serve คือ คอมพิวเตอร์ที่ใช้สำหรับทำหน้าที่บริการสิ่งต่างๆให้กับ Work Station เช่น จัดการระบบการใช้ไฟล์ข้อมูลและทรัพยากรต่างๆร่วมกันของระบบ Network แทนที่จะเก็บไว้ใน Hard Disk ของ Work Station แต่ละเครื่อง
2. Work Station เป็นเครื่องคอมพิวเตอร์ที่ผู้ใช้ใช้งานเป็นระบบ Network โดยจะต้องติดต่อกับ Server เพื่อขอใช้ไฟล์ข้อมูลที่ถูกเก็บไว้ใน File Server ออกมาใช้งานและหากต้องการเปลี่ยนแปลงข้อมูลก็สามารถแก้ไขได้จาก Work Station และข้อมูลที่มีการเปลี่ยนแปลงแล้วก็จะถูกเก็บไว้ใน File Server อีกครั้งหนึ่ง
Processor
เป็นอุปกรณ์ที่ต่อเข้ากับระบบ LAN เป็นตัวประมวลผลค่าต่างๆที่ส่งมาจาก Work Station เพื่อทำการประมวลผลแล้วจึงส่งค่าที่ได้จากการประมวลผลให้กับตัว Controller อีกครั้งหนึ่งซึ่งตัว Controller ก็จะส่งค่าไปยัง Point ให้ทำงานตามที่ Processor ประมวลผลมาหรือรับค่ามาจากตัว Controller เพื่อทำการประมวลผลแล้วส่งค่าให้กับ Work Station หรือส่งค่าให้กับตัว Controller ทำงานตามคำสั่งที่ผู้ใช้งานเป็นคนเขียน Program ลงไป Processor มีอยู่ด้วยกัน 2ชนิด คือ
1. Alarm Schedule Processor (ASP-II) ทำหน้าที่เกี่ยวกับการจัดการเก็บ Alarm ในระบบของ BAS การทำงานของ ASP-II จะทำงานโดยอิสระขณะนี้ได้มีการ UP DATE อยู่ในรูปของ Software
2. Contek DPC Processor (CDP-II ทำหน้าที่เป็นตัวควบคุมการทำงานของตัว Controller การต่อ Network จากตัว CDP-II ไปยังตัว Controller สามารถต่อได้ 4 บัส ซึ่งแต่ละบัสต่อController ได้มากสุด 31 ตัว ดังนั้นใน CDP-II แต่ละตัวสามารถต่อกับตัว Controller ได้ทั้งหมด 124 ตัว โดยในการต่อแต่ละบัสจะใช้การติดต่อแบบ RS-485 การต่อจะเป็นแบบ Multi Drop
Controller จะใช้อยู่ 2 ชนิด
  1. CEC(Contek Extended Controller) เป็นตัวรับคำสั่งมาจากตัว CDP-II ซึ่งจะทำงานตาม Process ของ CDP-II และยังเป็นตัวส่งข้อมูลจาก Point ต่างๆไปยัง CDP-II เพื่อให้ทาง CDP-II ทำการประมวลผลต่อไป โดยที่ตัว CEC นี้จะมี Point อยู่ในตัวมัน 16 Point ซึ่งสามารถแบ่ง ชนิดของ Point ต่างๆได้ดังนี้ 1.ขนาด 8 บิต DI/DO/AI
  1. 2.ขนาด 4 บิต DI/DO/AO
    3.ขนาด 4 บิต DI/DO
    ซึ่ง CEC นี้จะสามารถเพิ่ม Point ได้โดยการติดตั้งตัว CDU(Contek Digital Unit) หรือตัว CQU (Contek Quad Unit) โดยที่ CDU และ CQU แต่ละตัวจะมี Point ดังนี้
    CDU 8 บิต DI/DO
    CQU 4 บิต DI/DO/AO
    และจำนวน Maximum มากที่สุดของ CDU และ CQU ที่สามารถต่อได้ในหนึ่ง CEC คือ
    Maximum CDU คือ 6
    Maximum CQU คือ 4
  2. VAV(Variable Air Volume) ขณะนี้ไม่ได้ใช้งานเป็นตัว Controller ที่ใช้สำหรับควบคุมปริมาณลมที่จ่ายให้กับ Office โดยจะมี Damper เป็นตัวควบคุมปริมาณลมจะเปิดมากหรือน้อยขึ้นอยู่กับอุณหภมิที่วัดได้จาก พื้นที่นั้นโดยทาง BAS สามารถที่จะควบคุมอุณหภูมิได้และกำหนดการตั้งเวลาสำหรับเปิดและปิดได้
Point
Point คือ จุดๆหนึ่งที่ใช้สำหรับต่อเข้ากับอุปกรณ์ต่างๆเพื่อรับ Status,Control,Alarm อย่างใดอย่างหนึ่งซึ่งชนิดของ Point สามารถแบ่งออกเป็น 4 ชนิดคือ
  1. DI คือ Digital Input จะเป็นตัวรับค่า 0 หรือ 1 เท่านั้น โดยส่วนใหญ่จะใช้กับ Point ที่ต้องการทราบ Status การทำงาน หรือเป็นค่า Alarm
  2. DO คือ Digital Output จะเป็นตัวส่งค่า 0 หรือ 1 เท่านั้น โดยส่วนใหญ่จะใช้เมื่อต้องการจะใช้ Point นี้ Control อุปกรณ์เช่น เป็นตัว On/Off AHU เป็นต้น
  3. AI คือ Analogne Input โดยจะเป็นการรับค่าสัญญาณไฟฟ้าจากอุปกรณ์ที่ต้องการทราบค่าเช่น อุณหภูมิ เป็นต้น
  4. AO คือ Analogne Output โดยจะเป็นตัวสับสัญญาณไฟฟ้าไปให้อุปกรณ์โดยจะส่งค่าสัญญาณ 4-20 mA หรือ 0-10 VDC
Software ของระบบ Building Automation System (BAS)
Software ของระบบ BAS จะประกอบด้วยส่วนใหญ่ๆ 2 ส่วน
  1. Command Statio เป็น Software ที่เป็น Main หลักที่ใช้ ในการ RUN Program ในส่วนต่างๆหลายส่วนดังนี้คือ
    1. Contek เป็น Software ที่ใช้สำหรับการสร้าง Database ในระบบเช่น จำนวน ProcessorและController ในระบบ,Address ของ ProcessorและController,ชนิดของ Point ที่เชื่อมต่อเข้ากับระบบ BAS และใช้ดูสถานะการทำงานของตัว Processor,Controller และ Pointต่างๆซึ่งสามารถตรวจสอบหรือสั่งการเปิด-ปิดในเรื่องของAIR&VENT ตามกำหนดการ สามารถตั้งSchedule หรือสั่งการเปิด-ปิดในขณะนั้นได้
    2. Event เป็น Software ที่ทำหน้าที่จัดการเกี่ยวกับ Alarm ต่างๆ ที่เกิดขึ้นในระบบ โดยจะมีการเก็บบันทึก Alarm ต่างๆ ที่เกิดขึ้นลงใน File และลักษณะการเก็บบันทึก Event จะมีการเก็บบันทึก,วัน,เดือน,ปี ,เวลา,ลักษณะ Alarm ที่เกิด ตำแหน่งอุปกรณ์ที่เกิด Alarm โดยจะมีลักษณะการเก็บเรียงตามวันเวลาที่เกิด Alarm ขึ้น
    3. Trendlog เป็นโปรแกรมที่ทำหน้าที่เกี่ยวกับการบันทึกค่าต่างๆที่เกิดขึ้นในระบบ เพื่อจะเก็บสถิติในลักษณะของ Graphโดยที่สามารถเช็คค่าต่างๆ ย้อนหลังในลักษณะ Graph ของการทำงานของอุปกรณ์ต่างๆที่มาเชื่อมต่อกับระบบ BAS เช่น การเก็บค่าอุณภูมิในห้องต่างๆ การเก็บค่าปริมาณน้ำใช้ น้ำดับเพลิง การเก็บบันทึกเกี่ยวกับการใช้พลังงานไฟฟ้าทั้งหมดภายในอาคาร
    4. Mimic จะทำหน้าที่เกี่ยวกับการแสดงสถานะการทำงานของอุปกรณ์ต่างๆ ที่เชื่อมต่อกับระบบ BAS ในลักษณะของ Graphics เช่นแสดงสภาวะการทำงานของ ระบบElectical, Mechanical, Sanitary, Gas alarm, Fire alarm, Temperature, Pump station, Lift, Escalator, Carpark,หรืออุปกรณ์ไฟฟ้าตามชั้นต่างๆและยังสามารถที่จะ Control เปิด-ปิดอุปกรณ์ต่างๆที่เชื่อมต่อเข้ากับระบบ BAS ผ่านทาง Mimic ได้ด้วย
    5. System Administration เป็นส่วนที่ทำหน้าที่เกี่ยวกับการสร้างและกำหนดสิทธิของ User ที่จะเข้ามาใช้ในระบบว่าสามารถจะเข้าไปใช้ Menu ในส่วนใดได้บ้างและ User คนนั้นอยู่ในระดับไหนซึ่งการกำหนดระดับความสำคัญของ User สามารถกำหนดได้ 5 ระดับ
    6. Sentr เป็นโปรแกรมที่จะใช้กับระบบรักษาความปลอดภัยภายในอาคาร เช่นระบบ Access Control ในกรณีที่เกิดของหายภายในFL.สามารถตรวจสอบสถิติการเข้าออกประตู Access Control ตามวันเวลาที่ต้องการว่ามีใครเข้าออกพื้นที่บ้าง
2.SQLBas เป็นข้อมูลของ Database ของระบบซึ่งจะเก็บข้อมูลนี้ไว้ใน File Server ซึ่งสามารถที่จะเพิ่มจำนวนหรือลดจำนวนได้จาก Workstation
ระบบ ACCESS CONTROL,CARPARK MANAGER
เป็นระบบป้องกันความปลอดภัยที่ติดตั้งภายในอาคารโดย ใช้บัตรแถบแม่เหล็ก(Magnetic Card)พร้อมกับรหัสผ่าน (PIN CODE) สำหรับบุคคลที่ต้องการเข้า-ออกภายในอาคารเพื่อสร้างความปลอดภัยต่อทรัพย์สิน บุคคลากร ความสะดวกรวดเร็วในการจัดการดูแลรักษาระบบและเพิ่มประสิทธิภาพในการทำงานของ องค์กรและสามารถสั่ง Manual เปิดระบบ ACCESS CONTROL ที่ประตูต่างๆได้ที่ PC MONITOR ของระบบ ACCESS CONTROL จะทำการเก็บบันทึกข้อมูลในกรณีที่ต้องการทราบการเข้าออกย้อนหลัง สามารถเรียกดูได้ ในวันเวลานั้นๆ

แนะนำ 8 Open Source สำหรับสร้างระบบ SCADA

แนะนำ 8 Open Source สำหรับสร้างระบบ SCADA

ระบบ Supervisory Control and Data Acquisition หรือเรียกย่อๆ ว่า SCADA นั้นถือเป็นหัวใจสำคัญของหลายๆ องค์กร ในการจัดการเครื่องจักร หรืออุปกรณ์ต่างๆ ผ่านทางระบบคอมพิวเตอร์จากศูนย์กลาง และการมาของ Internet of Things และ Big Data Analytics ก็จะเป็นปัจจัยในการส่งเสริมให้ระบบ SCADA นั้นพัฒนาต่อเนื่องไปได้อย่างรวดเร็วเช่นกัน

วันนี้ทีมงาน TechTalkThai ไปพบบทความแนะนำ 8 Open Source สำหรับใช้ทำ SCADA มาจากเว็บไซต์ electornisforu.com เผื่อเป็นแนวทางให้หลายๆ องค์กรได้ลองศึกษาใช้งานกันดูนะครับ
1. Free Scada ใช้งานได้บน Windows ตามเงื่อนไขแบบ Freeware
2. IndigoSCADA ใช้งานได้บน Windows/Linux ตามเงื่อนไขแบบ GPL
3. openDAX ใช้งานได้บน Linux ตามเงื่อนไขแบบ GPL
4. openSCADA ใช้งานได้บน Windows/Linux ตามเงื่อนไขแบบ GPL
5. S.E.E.R. 2 ใช้งานได้บน Linux ตามเงื่อนไขแบบ GPL
6. SCADA ProcessViewer ใช้งานได้บน Windows ตามเงื่อนไขแบบ GPL
7. ScadaBR ใช้งานได้บน Windows ตามเงื่อนไขแบบ GPL
8. Szarp ใช้งานได้บน Windows/Linux ตามเงื่อนไขแบบ GPL
ที่มา: http://electronicsforu.com/newelectronics/default.asp
from:https://www.techtalkthai.com/8-open-source-softwares-for-scada-system/

วันจันทร์ที่ 27 มีนาคม พ.ศ. 2560

SCADA คือ

SCADA คืออะไร
SCADA นั้นย่อมาจากคำว่า Supervisory Control And Data Acquisition เป็นระบบตรวจสอบและวิเคราะห์ข้อมูลแบบ Real-time ใช้ ในการตรวจสอบสถานะตลอดจนถึงควบคุมการทำงานของระบบควบคุมในอุตสาหกรรมและงาน วิศวกรรมต่าง ๆ เช่น งานด้านโทรคมนาคมสื่อสาร การประปา การบำบัดน้ำเสีย การจัดการด้านพลังงาน อุตสาหกรรมการกลั่นน้ำมันและก็าซ อุตสาหกรรมเคมี อุตสาหกรรมประกอบรถยนต์ การขนส่ง กระบวนการนิวเคลียร์ในโรงไฟฟ้าเป็นต้น  ตัวอย่างการใช้งานเช่นใช้ SCADAตรวจ สอบข้อมูลเช่นการรั่วไหลของของเหลวที่เกิดขึ้นในท่อขนส่งจากตัวตรวจจับแล้ว ส่งสัญญาณแจ้งเตือนให้พนักงานทราบ โดยส่งข้อมูลสู่ส่วนกลางของระบบ SCADA เป็นต้น นอกจากนั้น SCADA อาจทำหน้าที่คำนวนและประมวลผลข้อมูลที่ได้จากฮาร์ดแวร์ต่าง ๆ เช่น PLC, Controller, DCS, RTU แล้ว แสดงข้อมูลทางหน้าจอ หรือส่งสัญญาณควบคุมฮาร์ดแวร์ดังกล่าว เช่นหากอุณหภูมิของอุปกรณ์สูงเกินพิกัด ให้ทำการปิดอุปกรณ์นั้นเป็นต้น โดยสั่งงานผ่าน PLC หรือ Controller ที่ติดต่ออยู่ ทั้งนี้ SCADA สามารถเก็บรวบรวมข้อมูลที่ได้จากระบบควบคุมทั้งหมดไว้ในฐานข้อมูลเพื่อให้พนักงานหรือโปรแกรมอื่น ๆ สามารถนำไปใช้งานได้ SCADA นั้น เข้าไปมีส่วนในงานควบคุมทั้งเล็กและใหญ่ที่ต้องการแสดงผล แลกเปลี่ยนข้อมูล หรือควบคุมระบบต่าง ๆ จากส่วนกลาง เพื่อการทำงานของระบบรวมที่สัมพันธ์กัน มองเห็นภาพรวมได้อย่างชัดเจนและมีความรวดเร็วต่อเหตุการณ์ต่าง ๆ ที่เกิดขึ้น ระบบ SCADA ในปัจจุบันมีความสามารถในการสื่อสาร ควบคุม และประมวลผลข้อมูลจาก I/O ของอุปกรณ์เช่น PLC, DCS, RTU ได้ถึงระดับที่เกินหนึ่งแสน I/O แล้ว และได้รับการพัฒนาให้มีความสามารถรองรับความต้องการใหม่ ๆ ของผู้ใช้งานอย่างต่อเนื่องตลอดมา
           SCADA เริ่มใช้งานในคอมพิวเตอร์ตั้งแต่ระบบปฏิบัติการ DOS, VMS และ UNIX จนมาถึงระบบปฏิบัติการ Windows NT, XP, Server 2003 และ LINUX
                 ในที่นี้จะแสดงลักษณะสำคัญของ SCADA ตามโครงสร้าง (Architecture) หน้าที่การทำงาน (Functionality) และ การพัฒนาโปรเจ็ค (Application Development) เพื่อให้คุณผู้อ่านได้เข้าใจส่วนสำคัญของ SCADA ได้อย่างละเอียด
    
        โครงสร้างของ SCADA (Architecture)

      โครงสร้างด้านฮาร์ดแวร์ (Hardware Architecture)

                    SCADA แบ่งตามโครงสร้างฮาร์ดแวร์ได้สองระดับคือ Client และ Data Server หรือเรียกสั้น ๆ ว่า Server โดยที่ Client คือคอมพิวเตอร์ที่รับและส่งข้อมูลไปยัง Data Server โดยฝั่ง Client นี้ จะแสดงผลการทำงานของระบบควบคุมเช่น แสดงเป็นกราฟิก กราฟแบบต่อเนื่อง หรือระบบแจ้งเตือนเมื่อเกิดเหตุการณ์ฉุกเฉินหรือต้องการแจ้งเตือน เป็นต้น ฝั่ง Client สามารถสั่งงานควบคุมไปยัง Data Server เพื่อส่งสัญญาณไปยัง PLC, DCS หรือ Controller อีกทอดหนึ่ง ส่วน Data Server จะทำหน้าที่ติดต่อกับ PLC, DCS, Controller หรือ RTU ต่าง ๆ เพื่อรับสัญญาณและส่งสัญญาณไปยัง Client และรับการร้องขอจาก Client เพื่อควบคุมอุปกรณ์ PLCและ Controller ต่าง ๆ   Client และ Data Server ส่วนใหญ่ติดต่อกันผ่านระบบเครือข่าย Ethernet ดังรูปที่ 1-01
รูปที่ 1-01 แสดงโครงสร้างแบบฮาร์ดแวร์ของระบบ SCADA
จากรูปที่ 1-01 นั้น Controller จะติดต่อกับอุปกรณ์ Field Instrument ต่าง ๆ เช่นเซ็นเซอร์ รีเลย์ เป็นต้นเพื่อนำสัญญาณมาให้กับ Data Server
   โครงสร้างด้านซอร์ฟแวร์ (Software Architecture)
         โครงสร้างด้านซอร์ฟแวร์ของระบบ SCADA นั้นมีข้อที่ต้องทราบคือ SCADA ใช้เทคโนโลยีในการสื่อสารกับฮาร์แวร์ (เช่น PLC, DCS) ต่าง ๆ กันไปตามผู้ผลิต เช่นการใช้ Driver เฉพาะของผู้ผลิต SCADA เพื่อสื่อสารกับ PLC, DCS เป็นต้น ซึ่งในปัจจุบันมีการกำหนดมาตรฐานกลางคือ OPC ขึ้นมาเพื่อยุติปัญหาการใช้เทคโนโลยีเฉพาะด้านในการสื่อสาร นอกจากนั้นยังมีความสามารถในการบริการข้อมูลให้กับ Client ที่รวดเร็วและมีเสถียรภาพ
 โครงสร้างด้านซอร์ฟแวร์ของ SCADA แสดงได้ดังรูปที่ 1-02
จากรูป 1-02 จะพบว่าในส่วนของ SCADA Server นั้น การติดต่อกับ PLC หรือ Controller นั้น ทำได้ทั้งผ่าน Driver หรือ OPC โดยที่ OPC และ Driver สามารถรับคำสั่งแบบ Read / Write เพื่ออ่านข้อมูลจาก PLC หรือ เขียนข้อมูลเพื่อสั่งงานไปยัง PLC ได้
          SCADA Server จะทำหน้าที่จัดการข้อมูล RTDB (Real Time Data Base) ที่ได้จาก PLC แล้วส่งให้กับ SCADA Client โดยที่ SCADA Server บางประเภทจะติดต่อกับ SCADA Client ผ่าน DDE Server ซึ่งทำให้สามารถนำเข้าข้อมูลจาก PLC เข้าสู่โปรแกรมเช่น MS Excel หรือ โปแกรม Client อื่น ๆ ที่ติดต่อกับ DDE Server ได้
         SCADA บางตัวจะออกแบบให้ SCADA Server ทำหน้าที่ตรวจจับ Alarm และเก็บไว้ใน Alarm DB หรือเก็บข้อมูลที่เป็น Historian ไว้ใน Log DB เป็นต้นเพื่อส่งให้ Alarm Display และ Log Display ทางฝั่ง SCADA Client ต่อไป
          สำหรับส่วน Development Environment นั้นจะขึ้นอยู่กับการออกแบบของ SCADA ซอร์ฟแวร์นั้น ๆ ซึ่งโดยทั่วไปก็จะมีเครื่องมือในการสร้างและจัดการกราฟิก (Graphic Editor) เครื่องมือในการจัดการโปรเจ็คที่สร้างขึ้นมา (Project Editor) มีเครื่องมือในการนำเข้าและส่งออก Text file ที่เก็บค่าคอนฟิกูเรชั่นของการติดต่อกับ Driver หรือ OPC Server ไว้
     โครงสร้างด้านการสื่อสาร (Communications) 
         การสื่อสารระหว่าง Client-Server จะสื่อสารผ่านโปรโตคอลโดยทั่วไปเช่น TCP/IP โดย Client จะติดต่อกับพารามิเตอร์หรือ Tag ภายใน Server ที่บริการข้อมูลด้วยรูปแบบที่แตกต่างกันไปตามผู้ผลิต เช่นมีการส่งค่าจาก Server เมื่อค่าของ I/O ของ PLC มีการเปลี่ยนแปลง เป็นต้น
         การสื่อสารกับอุปกรณ์นั้น Server จะทำการตรวจสอบค่าจากอุปกรณ์ตามช่วงเวลาที่ผู้ใช้งานกำหนดไว้ (Defined polling rate) โดยอาจจะต่างกันไปตามพารามิเตอร์ประเภทต่าง ๆ โดยตัว Controller จะส่งค่าพารามิเตอร์ตามที่ถูกร้องขอให้กับ Data Server พร้อมค่าเวลาขณะนั้น (Time Stamp) การสื่อสารกับอุปกรณ์ของ Data Server นั้นอาจเป็นการสื่อสารแบบ Modbus, Profibus, CAN bus เป็นต้น ขึ้นอยู่กับมาตรฐานการสื่อสารของอุปกรณ์นั้น ๆ ว่าเป็นแบบใด ในปัจจุบันมีการสร้าง OPC Server ที่ สนับสนุนการติดต่อด้วยมาตรฐานต่างๆเพิ่มขึ้นมากมายจนครอบคลุมอุปกรณ์ทุก ประเภท และมีการพัฒนาให้ทั่วถึงไปยังอุปกรณ์ใหม่ ๆ อย่างต่อเนื่อง
      โครงสร้างอินเทอร์เฟส (Interface)
            การติดต่อระหว่าง Data Server กับอุปกรณ์หรือระหว่าง Data Server และ Data Server และกับ Client นั้น มีการผลิตเป็น Driver ออกมามากมายตามเทคนิคเฉพาะของแต่ละผู้ผลิต ต่อมาจึงมีการกำหนดมาตรฐานของอินเทอร์เฟสขึ้นมาเป็น OPC (OLE for Process Control) ซึ่งมีความรวดเร็วในการสื่อสารและบริการข้อมูลโดยมีการจัดตั้ง OPC Foundation ขึ้นเป็นองค์กรณ์หลักในการกำหนดมาตรฐานและถ่ายทอดเทคโนโลยีให้แก่สมาชิก OPC จึงเป็นมาตรฐานกลางที่เปิดกว้างมากที่สุด

         การติดต่อกับฐานข้อมูลภายนอกของ SCADA Software นั้น มีการสร้างให้สามารถติดต่อได้ผ่าน ODBC (Open Data Base Connectivity), OLEDB (Linking and Embedding Data Base), DDE (Dynamic Data Exchange) เป็น ต้น เพื่อให้สามารถแลกเปลี่ยนข้อมูลหรือทำการเก็บข้อมูลไว้ในฐานข้อมูลรูปแบบ ต่าง ๆ ในปัจจุบันมีการพัฒนาให้สามารถติดต่อกับโปรแกรม ERP ต่าง ๆ เช่น SAP เป็นต้นได้ด้วย
       โครงสร้างความสามารถในการขยายระบบ (Scalability)

             Scalability คือความสามารถในการรองรับและต่อขยายระบบ SCADA กับส่วนต่าง ๆ เช่น I/O ของอุปกรณ์ Controller และจำนนเครื่อง SCADA Client ที่เพิ่มขึ้น หรือการต่อพ่วงกับระบบ SCADA ของยี่ห้ออื่น ๆ เป็นต้น ถ้าหาก Data Server เป็นแบบ Driver ที่สร้างด้วยเทคโนโลยีเฉพาะในการติดต่อกับอุปกรณ์ ก็เป็นเรื่องลำบากในการต่อขยาย เพราะ Driver บางประเภทสามารถติดต่อได้เฉพาะ SCADA Software บางยี่ห้อเท่านั้น ปัญหานี้เป็นที่วิพากวิจารณ์กันอย่างกว้างขวาง ซึ่งปัจจุบันได้หันมาใช้มาตรฐานกลางคือ OPC เพื่อแก้ไขปัญหานี้
          โครงสร้างการสำรองระบบ (Redundancy)
              SCADA Software ส่วนใหญ่มีความสามารถในการทำสำรองระบบของ Data Server โดยที่เมื่อ Data Server เกิดความขัดข้องก็จะสั่งงานให้ Data Server อีกตัวหนึ่งทำงานแทนที่ โดยจะมีการกำหนดคอนฟิกูเรชั่นไว้ที่ Client ว่าจะให้เลือกติดต่อกับ Data Server ตัวไหนเมื่อเกิดความขัดข้องเกิดขึ้น
             ในบางครั้งโมดูลที่ทำหน้าที่จัดการด้าน Redundancy นี้อาจจะทำหน้าที่อีกประการหนึ่งคือเป็นจุดพักข้อมูลที่รับมาจาก Data Server เพื่อนำไปส่งให้กับ Client ต่าง ๆ เพราะในกรณีที่มี Client จำนวนมากติดต่ออยู่กับ Data Server ตัวเดียวนั้นอาจมีความล่าช้าในการบริการข้อมูลของ Data Server เพราะต้องให้บริการข้อมูล Client ให้ครบจำนวนก่อนที่จะไปรับข้อมูลใหม่จากอุปกรณ์มาได้ ดังนั้นโมดูลที่ทำหน้าที่ Redundant จึงทำหน้าที่เป็นจุดรับข้อมูลแล้วช่วยส่งต่อให้ Client ต่างๆ  อีกทอดหนึ่ง Data Server จะได้ทำหน้าที่บริการข้อมูลให้แก่โหนดเพียงจุดเดียว จึงมีความรวดเร็วในการบริการข้อมูล
      หน้าที่การทำงาน (Functionality)
     การเข้าถึงพารามิเตอร์ของอุปกรณ์
            หมายถึงความสามารถในการเข้าถึงกลุ่มของพารามิเตอร์ในอุปกรณ์เช่น I/O ของ PLC เป็นต้น ความสามารถของ Data Server ในการกำหนดว่าพารามิเตอร์ใด อ่านได้อย่างเดียว เขียนได้อย่างเดียว หรือทั้งอ่านทั้งเขียน เป็นต้น
    ระบบแสดงผลแบบ MMI (Man Machine Interface)
            คือความสามารถในการแสดง ผลการทำงานของอุปกรณ์ในรูปแบบ กราฟิก ข้อความ สัญลักษณ์ แผนภาพ เป็นต้น โดยสามารถเชื่อมโยงลักษณะการเปลี่ยนแปลงของกราฟิกเหล่านี้กับพารามิเตอร์จาก Data Serverได้ ความสามารถในการสั่งงานผ่านระบบกราฟิกเช่น การปิด/เปิด สวิทซ์บนจอมอนิเตอร์ส่งผลไปยัง I/O ของ PLC เป็นต้น
               ความสามารถในการจัดการกราฟิกเช่น การย่อ ขยาย การกำหนดการเคลื่อนไหวแบบต่าง ๆ เช่น การหมุน การเคลื่อนที่แบบซิกแซกตามสัญญาณของ Data Server การ แสดงผลสัญญาณในรูปแบบมิเตอร์และเกจวัดแบบต่าง ๆ การนำเข้ากราฟิกประเภทต่างๆ การจัดแบ่งเลเยอร์ เป็นต้น เหล่านี้เป็นข้อเปรียบเทียบความสามารถของ SCADA Software ทั้งสิ้น
     ระบบแสดงกราฟสัญญาณแบบต่อเนื่อง (Trending)
             Trending เป็นความสามารถในการพล็อตกราฟต่อเนื่องกันไปบนจอภาพเพื่อแสดงค่าสัญญาณจาก Data Server โดยอาจจะสามารถพล็อตสัญญาณได้หลายสัญญาณเช่น 8 – 24 สัญญาณ พร้อมกันในหน้าต่างเดียว เพื่อให้สามารถเปรียบเทียบสัญญาณที่พล็อตได้ และไม่จำกัดว่าจะสร้างหน้าต่างพล็อตจำนวนเท่าใด
               
Trending อาจ มีความสามารถในการ ซูมสัญญาณที่พล็อต และหยุดการพล็อตเพื่อเลื่อนดูค่าที่พล็อตในแต่ละช่วงเวลาได้ด้วยตัวของผู้ ใช้งานเอง นอกจากนั้นการพล็อตอาจสามารถเลือกได้ว่าจะให้เป็นการพล็อตแบบใดเช่น Time plot, Logarithmic plot, Strip Chart, Bar Chart, Circular, X-Y plot เป็นต้น นอกจากนั้นบางผู้ผลิตยังสามารถนำค่า Historian หรือข้อมูลสัญญาณที่เก็บไว้ในฐานข้อมูลออกมาพล็อต ได้อีกด้วย
            โดย Trending Module นี้อาจเป็นแบบ ActiveX Control คือสามารถนำไปใช้งานในแอปลิเคชั่นอื่นที่สนับสนุนการนำเข้า ActiveX ได้
    ระบบแจ้งเตือน (Alarm)
            SCADA Software ส่วนใหญ่มีระบบแจ้งเตือนโดย Alarm Display จะรับสัญญาณมาจาก Alarm DB ในฝั่ง SCADA Server โดย Alarm DB สามารถที่จะทำการกำหนดคอนฟิกูเรชั่นว่าจะนำสัญญาณตัวใดมาเป็นตัวพารามิเตอร์ในการแจ้งเตือนบ้าง และมีการแบ่งระดับของ Priority, Limit อย่างไร เป็นต้น
            ระบบแจ้งเตือนยังสามารถที่จะเก็บข้อมูลการแจ้งเตือนไว้ในฐานข้อมูลประเภทต่าง ๆ ได้เช่น
MS SQL Server, MS Access, Oracle, MS Excel เป็นต้น และบางยี่ห้อสามารถแสดงออกมาเป็นรายงานในรูปแบบตารางหรือ แผนภูมิได้อีกด้วย
    การทำงานแบบ Automation
            เป็นความสามารถที่ SCADA ทำหน้าที่ต่าง ๆ ตามที่กำหนด เช่น ส่งอีเมล์ แสดงข้อความแบบ Instance Messageบนหน้าจอ เปิดไปยังหน้าจออื่น ๆ เก็บข้อมูลลงฐานข้อมูล เปิดโปรแกรม หรือรันคำสั่งสคริปต์ เป็นต้น ตามสัญญาณที่ได้รับจาก Data Server และข้อกำหนดที่สร้างขึ้น
           
    การสร้างและพัฒนา (Application Development)
     การกำหนดคอนฟิกูเรชั่น
             การกำหนดคอนฟิกูเรชั่น ขั้นแรกต้องมีการกำหนดว่าจะติดต่อกับพารามิเตอร์หรือ
Tag ใดบ้างจาก Data Server ดังนั้นจะต้องทำการ Define หรือสร้าง Tag ที่ Data Server ก่อนว่า Tag แต่ละตัวหมายถึง Address ที่เท่าใดของอุปกรณ์ (PLC, DCS, RTU, Controller ต่างๆ) โดยทั่วไปสามารถทำการนำเข้าคอนฟิกูเรชั่นไฟล์ที่สร้างไว้ก่อนเข้ามาได้ และสามารถ Export ไปยัง Data Server อื่น ๆ ได้ จากนั้นโปรแกรมย่อยอื่น ๆ ของ SCADA Software ฝั่ง ไคลเอนท์ จึงทำคอนฟิกูเรชั่นตามหน้าที่การทำงานของตนเอง เช่น โมดูลที่มีหน้าที่แสดงผลกราฟิกก็ต้องกำหนดว่ากราฟิกนั้น ๆ จะเชื่อมโยงกับ Tag ใดจาก Data Server ส่วนโมดูลที่ทำหน้าที่แจ้งเตือนก็ต้องทำคอนฟิกูเรชั่นว่าจะนำ Tag ใด มาเป็นสัญญาณแจ้งเตือน และกำหนดระดับสัญญาณ Limit เป็นต้น
     เครื่องมือในการพัฒนา (Development Tool)  
            เครื่องมือในการสร้างและพัฒนาระบบ SCADA โดยทั่วไปจะประกอบด้วย
          -     เครื่องมือในการ สร้างระบบกราฟิก ที่ประกอบด้วยเครื่องมือวาดภาพ เครื่องมือกำหนดเอ็ฟเฟ็คพิเศษต่าง ๆ ไลบรารี่ของกราฟิกสำเร็จรูปในอุตสาหกรรมด้านต่าง ๆ
         -     เครื่องมือในการสร้าง Trending
         -     เครื่องมือในการสร้างระบบAlarm
         -     เครื่องมือในการกำหนดการติดต่อกับฐานข้อมูลเพื่อทำการเก็บรวบรวมข้อมูลของ Trending และ Alarm ลงไว้ในฐานข้อมูล
         -     เครื่องมือในการช่วยสร้าง Script เช่น Java script, VB Script
         -     เครื่องมือจัดการด้านความปลอดภัย การแบ่งระดับ User และขอบเขตการใช้งานของ User
         -    เครื่องมือในการสร้าง Web application เพื่อให้สามารถควบคุมและตรวจสอบระบบควบคุมผ่าน Web browser ได้
     ที่กล่าวมาทั้งหมดนี้เป็นลักษณะของ SCADA และ SCADA Software ส่วนใหญ่ ทั้งนี้คุณผู้อ่านก็คงจะพอเห็นภาพว่า SCADA นั้น สามารถเป็นศูนย์กลางของระบบควบคุมทั้งหมดขององค์กร และมีส่วนช่วยในการตรวจสอบการทำงานของระบบให้เป็นไปตามปกติได้อย่างมี ประสิทธิภาพและทั่วถึง ภายในเวลาอันรวดเร็ว มีส่วนช่วยในการตัดสินใจในการดำเนินงานจากข้อมูลต่าง ๆ ที่ได้รับจากระบบ SCADA นอกจากนี้เรายังสามารถเชื่อมโยงข้อมูลที่ได้จาก SCADA เข้ากับข้อมูลทางธุรกิจอื่น ๆ เพื่อประมวลผลร่วมกัน เช่น ข้อมูลจำนวนของเสียเป็นกิโลกรัมที่ตรวจสอบได้จาก SCADA ถูกนำมาคำนวนร่วมกับค่าใช้จ่ายอื่น ๆ แบบ Real time เพื่อสรุปเป็นรายงานค่าใช้จ่ายประจำวันเป็นต้นได้อย่างรวดเร็ว

วันศุกร์ที่ 24 มีนาคม พ.ศ. 2560

การทดลองใช้โปรแกรม CodeBlocks แทน Arduino IDE

การทดลองใช้โปรแกรม CodeBlocks แทน Arduino IDE


Arduino IDE เป็นโปรแกรมสำหรับการเขียนโค้ดและอัพโหลด Arduino Sketch ไปยังบอร์ด Arduino และถือว่าเป็นตัวเลือกแรกในการเรียนรู้และใช้งาน Arduino นอกเหนือจากโปรแกรมนี้แล้ว ยังมีซอฟต์แวร์ที่เป็นตัวเลือกอื่นอีกและนำมาใช้งานได้ฟรี บทความนี้กล่าวถึง การทดลองติดตั้งและใช้งานโปรแกรมที่มีชื่อว่า CodeBlocks Arduino IDE (http://arduinodev.com/codeblocks/) เป็นซอฟต์แวร์แบบ Open Source และสามารถใช้งานได้ทั้งกับระบบปฏิบัติการ Windows และ Linux แต่ในบทความนี้จะกล่าวถึงการใช้งานสำหรับ Windows เท่านั้น

การดาวน์โหลดและติดตั้งโปรแกรม CodeBlocks Arduino IDE

ขั้นตอนแรกคือการดาวน์โหลด CodeBlocks Arduino IDE (https://sourceforge.net/projects/arduinodev/files/) และนำมาติดตั้งสำหรับเครื่องคอมพิวเตอร์ที่ใช้ระบบปฏิบัติการ Windows เวอร์ชันที่ทดลองใช้คือ CodeBlocks-Arduino-20131127.7z จากนั้นให้ทำขั้นตอน unzip ไฟล์ดังกล่าว ซึ่งจะได้ Folder ใหม่ที่ชื่อว่า CodeBlocks และภายในจะมีไฟล์ที่ชื่อว่า CodeBlocks.exe ที่เรียกใช้งานได้

การใช้งานโปรแกรม CodeBlocks Arduino IDE

เมื่อได้เปิดโปรแกรม CodeBlocks Arduino IDE แล้ว ขั้นตอนแรกคือการสร้างโปรเจคใหม่ (New Project Creation) โดยเลือกจากเมนูคำสั่ง File > New > Project ... และให้เลือกชนิดของโปรเจคเป็น "Arduino Project" และเข้าสู่ Arduino Project Wizard ต่อไป

รูปแสดงหน้าต่างหลักของ CodeBlocks Arduino IDE

รูปแสดงหน้าต่างตัวเลือกสำหรับชนิดของโปรเจคใหม่ (เลือก Arduino Project)

เมื่อเข้าสู่ Arduino Project Wizard ให้กำหนดค่าตัวเลือกสำหรับบอร์ด Arduino ที่จะใช้ เช่น ใช้สำหรับไมโครคอนโทรลเลอร์ 8 บิต ความถี่ 16 MHz เป็นต้น และในหน้าถัดไป ให้กำหนดชื่อโปรเจค และ Folder สำหรับโปรเจค

รูปแสดงการตั้งค่าสำหรับ Arduino Project

รูปแสดงการตั้งชื่อโปรเจคและเลือก Folder สำหรับโปรเจค

เมื่อได้สร้างโปรเจคใหม่แล้ว จะกลับเข้าสู่หน้าหลักของ IDE โดยจะมีโค้ด Arduino Sketch ถูกใส่ไว้โดยอัตโนมัติ (มาจาก Code Template) และอยู่ในส่วนของ Editor

รูปแสดงหน้าต่างหลักเมื่อได้สร้างโปรเจคแล้ว พร้อมโค้ดตัวอย่าง

โค้ดที่ถูกใส่มาเป็นตัวอย่างนั้น เป็นโค้ดที่ทำให้ LED ที่ขา D13 ของบอร์ด Arduino กระพริบ และมีการเปิดใช้พอร์ต Serial เพื่อส่งข้อมูลจากบอร์ด Arduino ไปยังคอมพิวเตอร์ผ่านสาย USB โค้ดนี้เป็นโค้ดตัวอย่าง และสามารถนำไปทดลองใช้ได้กับบอร์ด Arduino ... ถัดไปให้เลือกบอร์ดเป้าหมาย จากเมนูคำสั่ง Build > Select Target > Arduino Leonardo (ใช้บอร์ด Leonardo เป็นตัวอย่าง) แล้วทำขั้นตอน "Build" (หรือกด Ctrl+F9) ถ้าต้องการคอมไพล์เฉพาะไฟล์ที่ได้แก้ไขอย่างเดียว ให้เลือก Build > Compile current file

รูปแสดงเมนูคำสั่งสำหรับเลือกบอร์ด Arduino สำหรับใช้งาน

รูปแสดงข้อความในส่วน Build Log เมื่อทำขั้นตอน Build แล้ว

เมื่อได้ทำขั้นตอน Build เพื่อตรวจสอบความถูกต้องของ Arduino Sketch ขั้นตอนต่อไปคือการอัพโหลด โดยให้เชื่อมต่อบอร์ด Arduino กับคอมพิวเตอร์ ผ่าน USB แล้วจึงเลือกทำคำสั่ง Run (หรือกด Ctrl+F10) จากนั้นเมื่อได้คอมไพล์โค้ดแล้ว จะเข้าสู่หน้าต่างของ Arduino Builder และให้เลือกพอร์ต Serial ที่ตรงกับบอร์ด Arduino ในตัวอย่างนี้คือ COM49 และให้กดที่ปุ่มดังกล่าว และโปรแกรมจะทำการอัพโหลดไฟล์ .hex ของ Arduino Sketch ไปยังบอร์ดเป้าหมาย

รูปแสดงหน้าต่างของ Arduino Builder

รูปแสดงข้อความในหน้าต่างของ Arduino Builder หลังจากได้อัพโหลด Arduino Sketch สำเร็จแล้ว

ปัญหาที่พบ: จากการทดลองใช้งานกับบอร์ด Leonardo และ Pro Micro ซึ่งใช้ชิป ATmega32u4 พบว่า สามารถอัพโหลด Arduino Sketch ได้ แต่ไม่สามารถรับส่งข้อมูลได้ในหน้าต่างของ Arduino Builder แต่ถ้าใช้ Serial Monitor ของ Arduino IDE หรือโปรแกรมอย่างเช่น putty สามารถรับข้อมูลจาก Serial ได้ตามปรกติ (สำหรับบอร์ด Arduino Uno และ Arduino Mega 2560 สามารถใช้งานพอร์ต Serial ได้ตามปรกติ)

รูปแสดงข้อความจากพอร์ต Serial ของArduino Builder
แต่ทดลองใช้กับบอร์ด Arduino Pro Mini + USB-to-Serial module (FTDI chip) แล้วรับส่งข้อมูลได้

จุดเด่นของโปรแกรม CodeBlocks Arduino IDE

เมื่อเปรียบเทียบกับ Arduino IDE ผู้ใช้สามารถทดสอบการทำงานของ Arduino Sketch ในโหมด Debug ด้วย Simulator ของ CodeBlocks Arduino IDE ได้ และในการเขียนโค้ด มีโหมด Auto Code Complete และ Auto Save ให้ใช้งาน ทำให้สะดวกในการเขียนโค้ดมากขึ้น

รูปแสดงการเลือก Target เป็น Simulator เพื่อจำลองการทำงานและตรวจสอบการทำงานของโค้ด (Debug)
เมื่อเลือก Target เป็น Simulator แล้วให้ทำขั้นตอน Build อีกครั้ง

รูปแสดงการทดสอบการทำงานของโค้ดโดย Simulator
และเลือกทำคำสั่งไปจนถึงตำแหน่งของเคอร์เซอร์ใน Editor

รูปแสดงตัวอย่างเอาต์พุตที่ได้จากการทำงานของ Simulator สำหรับโค้ดตัวอย่าง

รูปแสดงตัวอย่างการทำ Auto-Complete ในขณะที่เขียนโค้ด

รูปแสดงตัวอย่างการทำ Auto-Complete ในขณะที่เขียนโค้ด

แก้ไขครั้งล่าสุด (Last Update): 9 Dec. 2013

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

การใช้งานโมดูอ่าน/เขียน SD Card

การใช้งานโมดูอ่าน/เขียน SD Card


โมดูลอ่าน / เขียน SD Card ใช้สำหรับการเก็บข้อมูลปริมาณมาก ที่ EEPROM ไม่สามารถเก็บไว้ได้หมด การนำไปใช้งานก็เช่น การเก็บค่าอุณหภูมิแบบต่อเนื่อง เป็นต้น
โมดูล SD Card เป็นโมดูลที่ช่วยในการนำ Arduino ไปเชื่อมต่อกับ SD Card ได้ง่ายมากยิ่งขึ้น ซึ่ง SD Card ที่เราใช้งานกับอยู่ทุกวันนี้ใช้การเชื่อมต่อ รับ-ส่งข้อมูลโดยใช้โปรโตคอล SPI ทำงานที่แรงดัน 3.3V โมดุลนี้ได้รวมวงจรเรกกูเลเตอร์ แปลงแรงดันไฟตรงจาก 5V เป็น 3.3V และมีวงจร Logic Level Converter บนบอร์ด เพื่อให้สามารถนำไปใช้งานกับบอร์ด Arduino ที่ทำงานที่แรงดัน 5V ได้ทันที
นอกจากนี้ โมดูลยังสามารถใช้งานกับบอร์ดไมโครคอนโทรเลอร์อื่นๆได้ อย่างเช่น นำไปใช้งานกับโมดูล ESP8266 เพื่อเก็บค่าอุณหภูมิย้อนหลังได้เป็นเดือนๆได้อีกด้วย

การต่อใช้งานโมดูอ่าน/เขียน SD Card กับบอร์ด Arduino

ต่อสายดังนี้
บอร์ด Arduinoโมดูอ่าน/เขียน SD Card
D13CLK
D12MISO
D11MOSI
D4CS
5V5V
GNDGND

 

การต่อใช้งานโมดูอ่าน/เขียน SD Card กับโมดูล ESP8266

โมดูล ESP8266โมดูอ่าน/เขียน SD Card
GPIO14 (CLK)CLK
GPIO12 (MISO)MISO
GPIO13 (MOSI)MOSI
GPIO15 (CS)CS
VCC - 3.3V3.3V
GNDGND

 

ตัวอย่างโค้ดใช้งาน

ในโปรแกรม Arduino IDE มีตัวอย่างโค้ดให้ทั้งหมด 6 ตัวอย่าง สามารถดูแต่ละตัวอย่างได้ โดยกดที่เมนู File > Examples > SD เลือกตัวอย่าง แล้วกด Upload เพื่อดูผลได้เลย

ส่งภาพจากเว็บแคมไปแสดงที่เว็บบราวเซอร์ด้วย Raspberry Pi