Mekanik Elektronik Informatika

Creating a Server Project Kepware (CItect SCADA conect To Siemns from OPC)

Konek PLC ke KEPWare

1. Buat Channel


2. Pilih SIEMENS TCP/IP




3. Masukan nama chanel


4. Pilih Network Adapter yang terhubung ke PLC


5. Next (default)


6. Next (default)


7. Summary setingan yg telah di buat. klik Finish


8. Maka Chanel akan mucul



BUAT IO-DEVICE

1. Klik add device lalu masukan nama devicenya


2. Masukan tipe PLCnya


3. Masukan IP address PLCnya


4. Next default


5. Next default


6. Next default


7. Next default


8. Next default


9. Next default


10. Next default

11. tidak usah import kalo tidak ada software nya


12. Dan summarynya. klik finish



BIKIN TAG


1. Dabel klik lalu isikan property tagnya

2.isi namanya, tipedatanya, terus addressnya



KONFIGURASI CITECT SCADA

1. Bikin project baru


2. Setting IO Device. pilih wwtp (nama projectnya)


3. piilh use existing io server


4. Masukan nama IO depicenya



5. Pilih external disk


6. Pilih OPC driver nya


7. Masukan ProgID kepware V6. ProgIDnya Kepware.KEPServerEx.V6


8. kemudian next


9. klik finish

10. masuk ke menu IO device. ubah OPC UA ke OPC



BUAT TAG

1. Buat Tag di SCADA


2. yang perlu di perhatikan adalah addressnya. Aturanya penamaanya digabung antara nama channel, nama iodevice dan nama variable dan dipisahkan dengan titik. contoh

WWTP.S7300.PH_EQ2



READMORE
 

Download Ecostruxure Machine Expert Basic v1.0 SP1


Product Ranges:
EcoStruxure Machine Expert (SoMachine), Modicon M221

READMORE
 

ODBC connection to SQL Database

1. Open SQL Server and New Query



2. Create Name Data Base , Example : CREATE DATABASE TEST_DB , => Execute => Refresh .



3. Open ODBC Data Sources (32-bit) in Windows Explore. And Add.



4. Add SQL Server and Finish.


5. Create new data source, Name : TEST_DB , Server : BAYURANGGA30\BAYU , Finish . (the Name adn Server must be the same as the one we created in SQL Server)


6. Next



7. Select : TEST_DB



8.  Finish



9. Test Data Source and Succes !




================================================


DSN : TEST_DB




READMORE
 

Auto Report HTML Citect SCADA

Langkah pertama desain HTML dengan file CSS, Bisa menggunakan Notepad dan di save file .css

berikut coding CSS via Notepad 

---------------------------------------------------------------------------------------

body{
    font-family: Arial, Helvetica, sans-serif;
}
 
table
{
    border-collapse: collapse;
    width: 35%;
}
 
table, th, td
{
    border: 1px solid black;
    padding: 5px;
    font-size: 14px;
    text-align: center;
    vertical-align: middle;
}
 
th
{
    background-color: grey;
    color: white;
    font-size: 12px;
    font-weight: lighter;
}
 
tr:nth-child(odd)
{
    background-color: Lavender;
}
.left{
    width: 100px;
    float: left;
}
.right{
    width: 900px;
    float: right;
}
.container{
    width: 70%;
    margin: auto;
    display: flex;
    flex-direction: row;
}
.header{
    width: 70%;
    margin: auto;
    display: flex;
    flex-direction: column;
}
.summary{
    width: 70%;
    margin: auto;
    padding: 20px;
    padding: 20px;
    display: flex;
    flex-direction: column;
}
span{
    padding-top: 5px;
    padding-bottom: 5px;
}

.ttd {
    table-layout : fixed;
    border: 1px solid black !important;
}

h2{
    border: 1px solid grey !important;
    width: 69%;
    margin: auto;
    margin-top:3px;
    background-color: grey;
    color: white;
    padding: 5px;
    padding: 5px;
}
.header_line{
    margin-top:20px;
    margin-bottom:20px;
}

---------------------------------------------------------------------------------------------------

Langkah ke dua yaitu test coding css kita dengan format .HTML


--------------------------------------------------------------------------------------------------------

Ketiga kita Coding SCADA Citect via CICODE

Berikut coding CICODE :

---------------------------------------------------------------------------------------------------------

FUNCTION SKM_L1_HEADER()
INT IFile;
STRING sFilename, sFilepath;
sFilename = "[RUN]:\Report\SKM_L1\SKM_L1_Report_" + IntToStr(Date(2)) + "_" + IntToStr(DateMonth(TimeCurrent())) + "_SHIFT_" + TagRead("PLC1_M1_INT_SHIFT") + ".html";
IFile = FileOpen(sFilename, "a");
FileWriteLn(IFile, "<html>");
FileWriteLn(IFile, "<head>");
FileWriteLn(IFile, "<title>Report SKM Line 1</title>");
FileWriteLn(IFile, "<link rel='stylesheet' type='text/css' href='./styles.css' />");
FileWriteLn(IFile, "</head>");
FileWriteLn(IFile, "<body>");
    FileWriteLn(IFile, "<div class='container'>");
        FileWriteLn(IFile, "<div class='left'><th width='150px'><img src='indolakto.jpg' width='150px'></th></div>");
        FileWriteLn(IFile, "<div class='right'><th><h1 align='center'>OEE SKM LINE 1 Report</h1></th></div>");
    FileWriteLn(IFile, "</div>");
    FileWriteLn(IFile, "<div style='width:70%' align='left' class='header'>");
        FileWriteLn(IFile, "<span>Tanggal :" + TimeToStr(TimeCurrent(), 4) + " </span>");
        FileWriteLn(IFile, "<span>Shift :" + TagRead("PLC1_M1_INT_SHIFT") + " </span>"); //Tag untuk status shift
        //FileWriteLn(IFile, "<span>Line : SKM LINE 1</span>"); //untuk nomor Line produksi
    FileWriteLn(IFile, "</div>");
    //FileWriteLn(IFile, "<div class='header_line'>");
        //FileWriteLn(IFile, "<h2 align='center'>LINE EFFICIENCY : " + TagRead("PLC1_M1_LE_PERSEN") + "</h2>"); //tag untuk line efficiency
        //FileWriteLn(IFile, "<h2 align='center'>PRODUCT QUALITY : " + TagRead("PLC1_M1_QUALITY_PROD") + "</h2>"); //tag untuk product quality
    //FileWriteLn(IFile, "</div>");
    
    FileWriteLn(IFile, "<table style='width:70%' align='center'>");
        FileWriteLn(IFile, "<tr>");
            FileWriteLn(IFile, "<th>Time</th>");
            FileWriteLn(IFile, "<th>Achieve Per H</th>");
            FileWriteLn(IFile, "<th>Breakdown</th>");
            FileWriteLn(IFile, "<th>Idle Time</th>");
            FileWriteLn(IFile, "<th>Downtime</th>");
            FileWriteLn(IFile, "<th>Line Efficiency</th>");
            FileWriteLn(IFile, "<th>Product Quality</th>");
        FileWriteLn(IFile, "</tr>");
FileClose(IFile);
sFilePath = PathToStr(sFileName);
END

FUNCTION SKM_L1_CONTENT()
INT IFile;
STRING sFilename, sFilepath;
sFilename = "[RUN]:\Report\SKM_L1\SKM_L1_Report_" + IntToStr(Date(2)) + "_" + IntToStr(DateMonth(TimeCurrent())) + "_SHIFT_" + TagRead("PLC1_M1_INT_SHIFT") + ".html";
IFile = FileOpen(sFilename, "a");
FileWriteLn(IFile, "<tr>");
            FileWriteLn(IFile, "<td>" + TimeToStr(TimeCurrent(),4) + "</td>"); // fungsi untuk ambil waktu aktual komputer
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_TOTAL_ACH") + " %</td>"); // tag untuk achivement per jam
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_VAL_BD_MIN") + " Min</td>"); // tag untuk breakdown
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_VAL_IDLE_MIN") + " Min</td>"); // tag untuk waktu idle
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_VAL_DT_MIN") + " Min</td>"); // tag untuk downtime 
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_LE_PERSEN") + " %</td>"); // tag untuk line efficiency     
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_QUALITY_PROD") + " %</td>"); // tag untuk product quality                 
        FileWriteLn(IFile, "</tr>");
        
FileClose(IFile);
sFilePath = PathToStr(sFileName);
END

FUNCTION SKM_L1_FOOTER()
INT IFile;
STRING sFilename, sFilepath;
sFilename = "[RUN]:\Report\SKM_L1\SKM_L1_Report_" + IntToStr(Date(2)) + "_" + IntToStr(DateMonth(TimeCurrent())) + "_SHIFT_" + TagRead("PLC1_M1_INT_SHIFT") + ".html";
IFile = FileOpen(sFilename, "a");
FileWriteLn(IFile, "<tr>");
            FileWriteLn(IFile, "<td>Total</td>");
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_TOTAL_ACH") + " %</td>"); // tag untuk total achivement per jam
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_VAL_BD_MIN") + " Min</td>"); // tag untuk total breakdown
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_VAL_IDLE_MIN") + " Min</td>"); // tag untuk total idle
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_VAL_DT_MIN") + " Min</td>"); // tag untuk total downtime
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_LE_PERSEN") + " %</td>"); // tag untuk total line efficiency
            FileWriteLn(IFile, "<td>" + TagRead("PLC1_M1_QUALITY_PROD") + " %</td>"); // tag untuk total product quality
        FileWriteLn(IFile, "</tr>");
FileWriteLn(IFile, "</table>");

    FileWriteLn(IFile, "<div class='summary'>");
        FileWriteLn(IFile, "<span>Target Produksi :" + TagRead("PLC1_M1_TRGT_PROD") + " karton</span>"); //Tag total produksi
        FileWriteLn(IFile, "<span>Aktual Produksi :" + TagRead("PLC1_M1_INT_CNT_KRT_OK") + " karton</span>"); //Tag actual produksi
    FileWriteLn(IFile, "</div>");

    FileWriteLn(IFile, "<table class='ttd' style='width:70%' style='table-layout:fixed' align='center'>");
        FileWriteLn(IFile, "<tr>");
            FileWriteLn(IFile, "<th>SPV Shift</th>");
            FileWriteLn(IFile, "<th>Operator</th>");
            FileWriteLn(IFile, "<th>Factory Manager</th>");
        FileWriteLn(IFile, "</tr>");
        FileWriteLn(IFile, "<tr>");
            FileWriteLn(IFile, "<td style='padding:50px'></td>");
            FileWriteLn(IFile, "<td style='padding:50px'></td>");
            FileWriteLn(IFile, "<td style='padding:50px'></td>");
        FileWriteLn(IFile, "</tr>");
        FileWriteLn(IFile, "<tr>");
            FileWriteLn(IFile, "<td style='vertical-align:bottom'><p align='center'>"+ cekNIK(TagRead("PLC1_M1_SPV_NAME")) +"</p></td>"); // nama SPV Shift
            FileWriteLn(IFile, "<td style='vertical-align:bottom'><p align='center'>"+ cekNIK(TagRead("PLC1_M1_OPR_NAME")) +"</p></td>"); // nama operator
            FileWriteLn(IFile, "<td style='vertical-align:bottom'><p align='center'>Bpk Syarief H</p></td>"); // nama FM
        FileWriteLn(IFile, "</tr>");
FileWriteLn(IFile, "</table>");
FileWriteLn(IFile, "</body>");
FileWriteLn(IFile, "</html>");
FileClose(IFile);
sFilePath = PathToStr(sFileName);
END


-----------------------------------------------------------------------------------------------

dan Coding Nomor Induk Karyawan

-----------------------------------------------------------------------------------------------

STRING FUNCTION cekNIK(INT NIK)
STRING nama;
IF(NIK = 1001) THEN
RETURN "Rangga";
END
IF(NIK = 1002) THEN
RETURN "Dodi";
END
IF(NIK = 1003) THEN
RETURN "Agus D";
END
IF(NIK = 1004) THEN
RETURN "Budi S";
END
IF(NIK = 1005) THEN
RETURN "Ahmad K";
END
IF(NIK = 1006) THEN
RETURN "Rizal";
END

END

-----------------------------------------------------------------------------------------------

Langkah ke empat jangan lupa bikin konfigurasi SCADA baik Tag, Event, dan graphic

seperti berikut




Langkah ke Lima membuat folder Report


Copy file CSS yang sudah kita bikin, dan beserta Logo Prusahaan


cara pengoprasiannya adalah ketika di PB_Start di SCADA maka report mulai menulis per 1 menit (Contoh) dan akan berakhir ketika di PB_Reset 


Dan hasil nya bisa muncul di Folder yang kita bikin






Semoga bermanfaat














READMORE