Showing posts with label PLC. Show all posts
Showing posts with label PLC. Show all posts

Wednesday, February 1, 2023

Contoh Mengakses PLC Dengan Visual Basic.Net - IV

 

13. Start and stop a PLC

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

#Region "StartPLC"

    Private Sub btnStartPLC_Click(sender As Object, e As EventArgs) Handles btnStartPLC.Click

        'execute function

        Dim res As OperationResult = Device.StartPLC()

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality.Equals(OperationResult.eQuality.GOOD) Then

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

#End Region

 

#Region "StopPLC"

    Private Sub btnStopPLC_Click(sender As Object, e As EventArgs) Handles btnStopPLC.Click

        'execute function

        Dim res As OperationResult = Device.StopPLC()

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality.Equals(OperationResult.eQuality.GOOD) Then

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

#End Region

End Class


14. Reading block list from PLC

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnGetBlockList_Click(sender As Object, e As EventArgs) Handles btnGetBlockList.Click

        Dim BlockType As eBlockType = eBlockType.AllBlocks

        Dim res As BlockListResult = Device.GetBlockList(BlockType)

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        txtResult.Text = String.Empty

        If res.Quality = OperationResult.eQuality.GOOD Then

            Dim sb As New System.Text.StringBuilder()

            For Each ble As BlockListEntry In res.BlockList

                sb.Append(ble.BlockType.ToString())

                sb.Append(ble.BlockNumber.ToString())

                sb.Append(Environment.NewLine)

            Next

            txtResult.Text = sb.ToString()

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


15. Get length of block

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnGetBlockLen_Click(sender As Object, e As EventArgs) Handles btnGetBlockLen.Click

        'get Len from DB100

        Dim BlockNumber As Integer = 100

        Dim BlockType As eBlockType = eBlockType.DB

 

        'evaluate results

        Dim res As BlockListLengthResult = Device.GetBlockLenght(BlockType, BlockNumber)

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        txtMessage.ForeColor = If(res.Quality = OperationResult.eQuality.GOOD, Color.Black, Color.Red)

        txtResult.Text = String.Empty

        If res.Quality = OperationResult.eQuality.GOOD Then

            Dim sb As New System.Text.StringBuilder()

            sb.Append(res.BlockType.ToString())

            sb.Append(res.BlockNumber.ToString())

            sb.Append(" Len:")

            sb.Append(res.BlockLength.ToString())

            sb.Append(Environment.NewLine)

            txtResult.Text = sb.ToString()

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


16. Backup block

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnBackupBlock_Click(sender As Object, e As EventArgs) Handles btnBackupBlock.Click

        'Backup OB1

        Dim BlockNumber As Integer = 1

        Dim Blocktype As eBlockType = eBlockType.OB

        'open SaveFileDialog

        Dim sfd As New SaveFileDialog()

        sfd.Filter = "*.mc7|*.mc7|*.bin|*.bin|*.*|*'.*"

        Dim dr As DialogResult = sfd.ShowDialog()

        If dr = DialogResult.OK Then

            'read Block into ReadPLCBlockResult

            Dim res As ReadPLCBlockResult = Device.ReadPLCBlock_MC7(Blocktype, BlockNumber)

            txtMessage.Text = res.Message

            txtResult.Text = ""

            If res.Quality = OperationResult.eQuality.GOOD Then

                'save buffer in specified file

                Dim fs As New System.IO.FileStream(sfd.FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)

                fs.Write(res.Buffer, 0, res.Buffer.Length)

                fs.Close()

                MessageBox.Show(("Block " & Blocktype.ToString() & BlockNumber.ToString() & " successful saved in ") + sfd.FileName, "", MessageBoxButtons.OK, MessageBoxIcon.Information)

            Else

                MessageBox.Show("operation unsuccessful", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

            End If

        Else

            MessageBox.Show("operation aborted", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

        End If

    End Sub

End Class


17. Restore block

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnRestoreBlock_Click(sender As Object, e As EventArgs) Handles btnRestoreBlock.Click

        Dim ofd As New OpenFileDialog()

        ofd.Filter = "*.mc7|*.mc7|*.bin|*.bin|*.*|*'.*"

        Dim dr As DialogResult = ofd.ShowDialog()

        If dr = DialogResult.OK Then

            Dim fs As New System.IO.FileStream(ofd.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read)

            Dim buffer As Byte() = New Byte(fs.Length - 1) {}

            fs.Read(buffer, 0, CInt(fs.Length))

            fs.Close()

            'Write Buffer into PLC

            Dim Requestdata As New WritePLCBlockRequest(buffer, eBlockType.OB, 1)

            Dim res As OperationResult = Device.WritePLCBlock_MC7(Requestdata)

            txtMessage.Text = res.Message

            txtResult.Text = ""

            If res.Quality = OperationResult.eQuality.GOOD Then

                MessageBox.Show(("Block " & Requestdata.BlockInfo.Header.BlockType.ToString() & Requestdata.BlockInfo.Header.BlockNumber.ToString() & " successful saved in PLC from Source ") + ofd.FileName, "", MessageBoxButtons.OK, MessageBoxIcon.Information)

            Else

                MessageBox.Show("operation unsuccessful", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

            End If

        Else

            MessageBox.Show("operation aborted", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

        End If

    End Sub

End Class


18. Delete block

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnDeleteBlock_Click(sender As Object, e As EventArgs) Handles btnDeleteBlock.Click

        'Delete DB100

        Dim BlockNumber As Integer = 100

        Dim BlockType As eBlockType = eBlockType.DB

 

        Dim res As OperationResult = Device.DeleteBlock(BlockType, BlockNumber)

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality = OperationResult.eQuality.GOOD Then

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/

Contoh Mengakses PLC Dengan Visual Basic.Net - III

 

9. Get or set PLC time

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

#Region "getPLCClockTime"

    Private Sub btnGetPLCClockTime_Click(sender As Object, e As EventArgs) Handles btnGetPLCClockTime.Click

        'execute function

        Dim res As PLCClockTimeResult = Device.GetPLCClockTime()

 

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality.Equals(OperationResult.eQuality.GOOD) Then

            txtResult.Text = res.PLCClockTime.ToString()

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

#End Region

 

#Region "setPLCClockTime"

    Private Sub btnSetPLCClockTime_Click(sender As Object, e As EventArgs) Handles btnSetPLCClockTime.Click

        'execute function

        Dim res As OperationResult = Device.SetPLCClockTime(DateTime.Now)

 

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality.Equals(OperationResult.eQuality.GOOD) Then

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

#End Region

End Class


10. Reading system status list SSL

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnGetSSL_Click(sender As Object, e As EventArgs) Handles btnGetSSL.Click

        ' important!!! please search the id and index information in the plc-documentation

        ' You must convert the specified values hex in decimal

        Dim SSL_ID As Integer = 306

        'ID 132 (Hex) 

        Dim SSL_Index As Integer = 4

        'Index 4 (Hex) 

        'execute function

        Dim res As SystemStatusListResult = Device.GetSystemStatusList(SSL_ID, SSL_Index)

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality = OperationResult.eQuality.GOOD Then

            Dim sb As New System.Text.StringBuilder()

            For Each ssle As SystemStatusListResult.SystemStatusListItemEntry In res.SZLItemEntrys

                For Each b As Byte In ssle.buffer

                    sb.Append(b.ToString())

                    sb.Append(" ")

                Next

                sb.Append(Environment.NewLine)

            Next

            txtResult.Text = sb.ToString()

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


11. Get diagnostic data

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnDiagnosticInfo_Click(sender As Object, e As EventArgs) Handles btnDiagnosticInfo.Click

        'read the diagnosticinfo into DiagnosticInfoResult-object

        'execute function

        Dim res As DiagnosticInfoResult = Device.GetDiagnosticInfo()

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality = OperationResult.eQuality.GOOD Then

            Dim sb As New System.Text.StringBuilder()

            'step through the entries

            For Each myDiagnosticInfoEntry As DiagnosticInfoEntry In res.DiagnosticInfoEntrys

                sb.Append("Timestamp: " & myDiagnosticInfoEntry.DiagnosticTimestamp.ToString())

                sb.Append(" ")

                sb.Append("ID: " & myDiagnosticInfoEntry.DiagnosticID.ToString())

                sb.Append(" ")

                sb.Append("Message: " + myDiagnosticInfoEntry.DiagnosticText)

                sb.Append(Environment.NewLine)

            Next

            txtResult.Text = sb.ToString()

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


12. Send password

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnSendPW_Click(sender As Object, e As EventArgs) Handles btnSendPW.Click

        Dim res As OperationResult = Device.sendPassWord("EnterPW")

 

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality = OperationResult.eQuality.GOOD Then

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/

Contoh Mengakses PLC Dengan Visual Basic.Net - II

 

5. Simple writing data to PLC

Imports PLCcom

Imports System.Windows.Forms

 

Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

 

    Private Sub btnWrite_Click(sender As Object, e As EventArgs)

        'declare a WriteDataRequest object and

        'write 4 bytes in DB100 at Startbyte 0

        Dim myWriteRequest As New WriteDataRequest(eRegion.DataBlock, 100, 0)

        'add writable Data here

        myWriteRequest.addByte(New Byte() {11, 12, 13, 14})

        'write

        Dim res As WriteDataResult = Device.WriteData(myWriteRequest)

 

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality.Equals(OperationResult.eQuality.GOOD) Then

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


6. Optimized reading and writing of data

Imports PLCcom

 

Namespace CodeDokuCSharp

    Class newClass

        Private Device As PLCcomDevice 'see section 'connect' for declare and connect a PLCcom-Device

 

        Private Sub btnoptReadWrite_Click(sender As Object, e As EventArgs)

 

            Dim myRequestSet As ReadWriteRequestSet = New ReadWriteRequestSet()

             

            //set optimize options

            myRequestSet.SetOperationOrder(eOperationOrder.WRITE_BEVOR_READ)

            myRequestSet.SetReadOptimizationMode(eReadOptimizationMode.AUTO)

            myRequestSet.SetWriteOptimizationMode(eWriteOptimizationMode.CROSS_AREAS)

             

             

            'declare a ReadRequest object set the request parameters, 'in this case => read 10 Bytes from DB1 at Byte 0

            Dim myReadDataRequest As ReadDataRequest = New ReadDataRequest(eRegion.DataBlock, _

            1, _

            0, _

            eDataType.[BYTE], _

            10)

             

            'add the read request to the request set

            myRequestSet.AddRequest(myReadDataRequest)

            Dim myWriteRequest As WriteDataRequest = New WriteDataRequest(eRegion.DataBlock, 100, 0)

                           

            'add writable Data here

            'in  this case => write 4 bytes in DB100

            myWriteRequest.addByte(New Byte() { 11, 12, 13, 14 })

             

            'add the write request to the request set

            myRequestSet.AddRequest(myWriteRequest)

             

            '....... add more requests to request set

             

            'read, write and getting the results

            Dim results As ReadWriteResultSet = Device.ReadWriteData(myRequestSet)

             

            'evaluate results

            'evaluate the results of read operations...

            For Each res As ReadDataResult In results.GetReadDataResults()

                

            Next

             

            '...and evaluate the results of write operations

            For Each res As WriteDataResult In results.GetWriteDataResults()

                

            Next

 

        End Sub

    End Class

End Namespace


7. Get basic info from PLC

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub getGetPLCBasicInfo_Click(sender As Object, e As EventArgs) Handles getGetPLCBasicInfo.Click

        'execute function

        Dim res As BasicInfoResult = Device.GetBasicInfo()

 

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality = OperationResult.eQuality.GOOD Then

            Dim sb As New System.Text.StringBuilder()

            sb.Append("Device Name: ")

            sb.Append(res.Name)

            sb.Append(Environment.NewLine)

            sb.Append("Order Number: ")

            sb.Append(res.OrderNumber)

            sb.Append(Environment.NewLine)

            sb.Append("Module Version: ")

            sb.Append(res.ModuleVersion)

            sb.Append(Environment.NewLine)

            sb.Append("Firmware Version: ")

            sb.Append(res.FirmwareVersion)

            sb.Append(Environment.NewLine)

            txtResult.Text = sb.ToString()

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

 

End Class


8. Get mode and state from CPU

Imports PLCcom

Public Class newClass

    Private Device As PLCcomDevice

    'see section 'connect' for declare and connect a PLCcom-Device

    Private Sub btnGetCPUMode_Click(sender As Object, e As EventArgs) Handles btnGetCPUMode.Click

        'execute function

        Dim res As CPUModeInfoResult = Device.GetCPUMode()

 

        'evaluate results

        txtMessage.Text = (DateTime.Now.ToString() & ": ") + res.Message

        If res.Quality = OperationResult.eQuality.GOOD Then

            txtResult.Text = ("CPU Mode = " & res.CPUModeInfo.ToString()) + Environment.NewLine & "CPU State = " & res.CPUStateInfo.ToString()

            MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Else

            MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

        End If

    End Sub

End Class


Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/

Contoh Mengakses PLC Dengan Visual Basic.Net - I

 

Programmable Logic Controller, disingkat PLC merupakan peralatan elektronik yang dibangun dari mikroprosesor untuk memonitor keadaan dari peralatan input untuk kemudian di analisa sesuai dengan kebutuhan perencana (programmer) untuk mengontrol keadaan output. Sinyal input diberikan kedalam input card.

Ada 2 jenis input card, yaitu :

Analog input card

Digital input card


Contoh untuk mengakses PLC :

1. Connect to PLC

Imports PLCcom

 

Public Class myTestClass

    Private Device As PLCcomDevice 

    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click

 

            'create TCP_ISO_Device instance from PLCcomDevice

            Device = New TCP_ISO_Device("192.168.1.2", 0, 2, ePLCType.S7_300_400_compatibel)

            'or create MPI_Device instance from PLCcomDevice 

            'Device = New MPI_Device("COM2", 0, 2, eBaudrate.b38400, eSpeed.Speed187k, ePLCType.S7_300_400_compatibel) 

            'or create PPI_Device instance from PLCcomDevice 

            'Device = New PPI_Device("COM2", 0, 2, eBaudrate.b9600, ePLCType.S7_200_compatibel)

 

        authentication.User = "" 'Enter User here

        authentication.Serial = "" 'Enter Serial here

         

        Device.Connecttimeout = 1000

        Device.Readtimeout = 2000 

        Dim res As ConnectResult = Device.Connect()

         

        MessageBox.Show(res.Message)

 

    End Sub

End Class


2. Disconnect from PLC

Untuk memutuskan koneksi ke PCL hanya 1 baris perintah : Device.DisConnect()


3. Automatic connect to PLC

Imports PLCcom

 

Public Class myTestClass

    'declare the Device 

    Private Device As PLCcomDevice

    Private Sub btnConnect_Click(sender As Object, e As System.EventArgs)

        'create TCP_ISO_Device instance from PLCcomDevice

        Device = New TCP_ISO_Device("192.168.1.2", 0, 2, ePLCType.S7_300_400_compatibel)

        'or create MPI_Device instance from PLCcomDevice 

        'Device = new MPI_Device("COM2", 0, 2, eBaudrate.b38400, eSpeed.Speed187k, ePLCType.S7_300_400_compatibel); 

        'or create PPI_Device instance from PLCcomDevice 

        'Device = new PPI_Device("COM2", 0, 2, eBaudrate.b9600, ePLCType.S7_200_compatibel);

 

        authentication.User = ""

        authentication.Serial = ""

 

        'Set auto connect

        'The connection is opened automatically when it is needed. If after the expiry of the given period, no more requests are sent, the connection is automatically closed.

        Device.setAutoConnect(True, 10000)

    End Sub

End Class


4 . Simple reading data from PLC

Imports PLCcom

Imports System.Windows.Forms

 

Namespace CodeDokuCSharp

    Class newClass

        Private Device As PLCcomDevice

 

        Private Sub btnRead_Click(sender As Object, e As EventArgs)

            'declare a ReadRequest object

            'set the request parameters

            'read 10 Bytes from DB100

            Dim myReadRequest As New ReadDataRequest(eRegion.DataBlock, 100, 0, eDataType.[BYTE], 10)

 

            'read from device

            Dim res As ReadDataResult = Device.ReadData(myReadRequest)

 

            'evaluate results

            txtMessage.Text = res.Message

            If res.Quality = OperationResult.eQuality.GOOD Then

                For Each b As Byte In DirectCast(res.GetValues(), Byte())

                    txtResult.Text += b.ToString() & Environment.NewLine

                Next

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

            Else

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information)

            End If

        End Sub

    End Class

End Namespace



Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/


Contoh Mengakses PLC Dengan C# - IV

 


13. Start and stop a PLC

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        #region StartPLC

 

        private void btnStartPLC_Click(object sender, EventArgs e)

        {

            //execute function

            OperationResult res = Device.StartPLC();

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality.Equals(OperationResult.eQuality.GOOD))

            {

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

 

        #endregion

 

 

        #region StopPLC

 

        private void btnStopPLC_Click(object sender, EventArgs e)

        {

            //execute function

            OperationResult res = Device.StopPLC();

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality.Equals(OperationResult.eQuality.GOOD))

            {

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

 

        #endregion

 

    }

}


14. Reading block list from PLC

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnGetBlockInfo_Click(object sender, EventArgs e)

        {

 

            eBlockType BlockType = eBlockType.AllBlocks;

 

            BlockListResult res = Device.GetBlockList(BlockType);

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            txtResult.Text = string.Empty;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                StringBuilder sb = new StringBuilder();

                foreach (BlockListEntry ble in res.BlockList)

                {

                    sb.Append(ble.BlockType.ToString());

                    sb.Append(ble.BlockNumber.ToString());

                    sb.Append(Environment.NewLine);

                }

                txtResult.Text = sb.ToString();

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


15. Get length of block

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnGetBlockLen_Click(object sender, EventArgs e)

        {

            //get Len from DB100

            int BlockNumber = 100;

            eBlockType BlockType = eBlockType.DB;

 

            //evaluate results

            BlockListLengthResult res = Device.GetBlockLenght(BlockType, BlockNumber);

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            txtMessage.ForeColor = res.Quality == OperationResult.eQuality.GOOD ? Color.Black : Color.Red;

            txtResult.Text = string.Empty;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                StringBuilder sb = new StringBuilder();

                sb.Append(res.BlockType.ToString());

                sb.Append(res.BlockNumber.ToString());

                sb.Append(" Len:");

                sb.Append(res.BlockLength.ToString());

                sb.Append(Environment.NewLine);

 

                txtResult.Text = sb.ToString();

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


16. Backup block

using System;

using PLCcom;

using System.Windows.Forms;

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnBackupBlock_Click(object sender, EventArgs e)

        {

 

            //Backup OB1

            int BlockNumber = 1;

            eBlockType Blocktype = eBlockType.OB;

 

            //open SaveFileDialog

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "*.mc7|*.mc7|*.bin|*.bin|*.*|*'.*";

            DialogResult dr = sfd.ShowDialog();

            if (dr == DialogResult.OK)

            {

                //read Block into ReadPLCBlockResult

                ReadPLCBlockResult res = Device.ReadPLCBlock_MC7(Blocktype, BlockNumber);

                txtMessage.Text = res.Message;

                txtResult.Text = "";

                if (res.Quality == OperationResult.eQuality.GOOD)

                {

                    //save buffer in specified file

                    System.IO.FileStream fs = new System.IO.FileStream(sfd.FileName, System.IO.FileMode.Create, System.IO.FileAccess.Write);

                    fs.Write(res.Buffer, 0, res.Buffer.Length);

                    fs.Close();

                    MessageBox.Show("Block " + Blocktype.ToString() + BlockNumber.ToString() + " successful saved in " + sfd.FileName, "", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }

                else

                {

                    MessageBox.Show("operation unsuccessful", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                }

            }

            else

            {

                MessageBox.Show("operation aborted", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            }

        }

 

    }

}


17. Restore block

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnRestoreBlock_Click(object sender, EventArgs e)

        {

            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "*.mc7|*.mc7|*.bin|*.bin|*.*|*'.*";

            DialogResult dr = ofd.ShowDialog();

            if (dr == DialogResult.OK)

            {

 

                System.IO.FileStream fs = new System.IO.FileStream(ofd.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);

                byte[] buffer = new byte[fs.Length];

                fs.Read(buffer, 0, (int)fs.Length);

                fs.Close();

 

                //Write Buffer into PLC

                WritePLCBlockRequest Requestdata = new WritePLCBlockRequest(buffer, eBlockType.OB, 1);

                OperationResult res = Device.WritePLCBlock_MC7(Requestdata);

                txtMessage.Text = res.Message;

                txtResult.Text = "";

                if (res.Quality == OperationResult.eQuality.GOOD)

                {

 

                    MessageBox.Show("Block " + Requestdata.BlockInfo.Header.BlockType.ToString() + Requestdata.BlockInfo.Header.BlockNumber.ToString() + " successful saved in PLC from Source " + ofd.FileName, "", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }

                else

                {

                    MessageBox.Show("operation unsuccessful", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                }

            }

            else

            {

                MessageBox.Show("operation aborted", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

            }

        }

    }

}


18. Delete block

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnDeleteBlock_Click(object sender, EventArgs e)

        {

            //Delete DB100

            int BlockNumber = 100;

            eBlockType BlockType = eBlockType.DB;

 

            OperationResult res = Device.DeleteBlock(BlockType, BlockNumber);

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/

Contoh Mengakses PLC Dengan C# - III

 

9. Get or set PLC time

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        #region getPLCClockTime

 

        private void btnGetPLCClockTime_Click(object sender, EventArgs e)

        {

            //execute function

            PLCClockTimeResult res = Device.GetPLCClockTime();

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality.Equals(OperationResult.eQuality.GOOD))

            {

                txtResult.Text = res.PLCClockTime.ToString();

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

 

        #endregion

 

        #region setPLCClockTime

 

        private void btnSetPLCClockTime_Click(object sender, EventArgs e)

        {

            //execute function

            OperationResult res = Device.SetPLCClockTime(DateTime.Now);

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality.Equals(OperationResult.eQuality.GOOD))

            {

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

 

        #endregion

    }

}


10. Reading system status list SSL

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnGetSSL_Click(object sender, EventArgs e)

        {

            // important!!! please search the id and index information in the plc-documentation

            // You must convert the specified values hex in decimal

            int SSL_ID = 306; //ID 132 (Hex) 

            int SSL_Index = 4; //Index 4 (Hex) 

            //execute function

            SystemStatusListResult res = Device.GetSystemStatusList(SSL_ID, SSL_Index);

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                System.Text.StringBuilder sb = new System.Text.StringBuilder();

                foreach (SystemStatusListResult.SystemStatusListItemEntry ssle in res.SZLItemEntrys)

                {

                    foreach (byte b in ssle.buffer)

                    {

                        sb.Append(b.ToString());

                        sb.Append(" ");

                    }

                    sb.Append(Environment.NewLine);

                }

                txtResult.Text = sb.ToString();

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


11. Get diagnostic data

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnDiagnosticInfo_Click(object sender, EventArgs e)

        {

            //read the diagnosticinfo into DiagnosticInfoResult-object

            //execute function

            DiagnosticInfoResult res = Device.GetDiagnosticInfo();

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                System.Text.StringBuilder sb = new System.Text.StringBuilder();

                //step through the entries

                foreach (DiagnosticInfoEntry myDiagnosticInfoEntry in res.DiagnosticInfoEntrys)

                {

                    sb.Append("Timestamp: " + myDiagnosticInfoEntry.DiagnosticTimestamp.ToString());

                    sb.Append(" ");

                    sb.Append("ID: " + myDiagnosticInfoEntry.DiagnosticID.ToString());

                    sb.Append(" ");

                    sb.Append("Message: " + myDiagnosticInfoEntry.DiagnosticText);

                    sb.Append(Environment.NewLine);

                }

                txtResult.Text = sb.ToString();

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


12. Send password

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnSendPW_Click(object sender, EventArgs e)

        {

            OperationResult res = Device.sendPassWord("EnterPW");

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/

Contoh Mengakses PLC Dengan C# - II

 


5. Simple writing data to PLC

using System;

using PLCcom;

using System.Windows.Forms;

 

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnWrite_Click(object sender, EventArgs e)

        {

            //declare a WriteDataRequest object and

            //write 4 bytes in DB100 at Startbyte 0

            WriteDataRequest myWriteRequest = new WriteDataRequest(eRegion.DataBlock, 100, 0);

            //add writable Data here

            myWriteRequest.addByte(new byte[] { 11, 12, 13, 14 });

            //write

            WriteDataResult res = Device.WriteData(myWriteRequest);

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality.Equals(OperationResult.eQuality.GOOD))

            {

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }


6. Optimized reading and writing of data

using System;

using PLCcom;

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnOptReadWriteClick(object sender, EventArgs e)

        {

 

            ReadWriteRequestSet myRequestSet = new ReadWriteRequestSet();

             

            //set optimize options

            myRequestSet.SetOperationOrder(eOperationOrder.WRITE_BEVOR_READ);

            myRequestSet.SetReadOptimizationMode(eReadOptimizationMode.AUTO);

            myRequestSet.SetWriteOptimizationMode(eWriteOptimizationMode.CROSS_AREAS);

             

            //declare a ReadRequest object set the request parameters, //in this case => read 10 Bytes from DB1 at Byte 0

            ReadDataRequest myReadDataRequest = new ReadDataRequest(

            eRegion.DataBlock,  //Region                                                                       1,                  //DB only for datablock operations otherwise 0                                                                       0,                  //read start adress                                                                       eDataType.BYTE,     //desired datatype                                                                       10);                //Quantity of reading values

             

            //add the read request to the request set

            myRequestSet.AddRequest(myReadDataRequest);

            //declare a WriteRequest object set the request parameters, //in this case => write 4 bytes to DB100 at address 0

            WriteDataRequest myWriteRequest = new WriteDataRequest(eRegion.DataBlock, //Region

            100,             //DB

            0);              //startaddress

             

            //add writable Data here

            //in  this case => write 4 bytes in DB100

            myWriteRequest.addByte(new byte[] { 11, 12, 13, 14 });

             

            //add the write request to the request set

            myRequestSet.AddRequest(myWriteRequest);

             

            //....... add more requests to request set

             

            //read, write and getting the results

            ReadWriteResultSet results = Device.ReadWriteData(myRequestSet);

             

            // evaluate the results of read operations...

            foreach (ReadDataResult res in results.GetReadDataResults())

            {

               //for getting read results see chapter simple read

            }

             

            //...and evaluate the results of write operations

            foreach (WriteDataResult res in results.GetWriteDataResults())

            {

               //for getting write results see chapter simple write

            }

 

        }

    }

}


7. Get basic info from PLC

using System;

using PLCcom;

using System.Windows.Forms;

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void getGetPLCBasicInfo_Click(object sender, EventArgs e)

        {

            //execute function

            BasicInfoResult res = Device.GetBasicInfo();

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                StringBuilder sb = new StringBuilder();

                sb.Append("Device Name: ");

                sb.Append(res.Name);

                sb.Append(Environment.NewLine);

                sb.Append("Order Number: ");

                sb.Append(res.OrderNumber);

                sb.Append(Environment.NewLine);

                sb.Append("Module Version: ");

                sb.Append(res.ModuleVersion);

                sb.Append(Environment.NewLine);

                sb.Append("Firmware Version: ");

                sb.Append(res.FirmwareVersion);

                sb.Append(Environment.NewLine);

                txtResult.Text = sb.ToString();

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


8. Get mode and state from CPU

using System;

using PLCcom;

using System.Windows.Forms;

 

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

        //see section 'connect' for declare and connect a PLCcom-Device

 

        private void btnGetCPUMode_Click(object sender, EventArgs e)

        {

            //execute function

            CPUModeInfoResult res = Device.GetCPUMode();

 

            //evaluate results

            txtMessage.Text = DateTime.Now.ToString() + ": " + res.Message;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                txtResult.Text = "CPU Mode = " + res.CPUModeInfo.ToString() + Environment.NewLine + "CPU State = " + res.CPUStateInfo.ToString();

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}



Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/

Contoh Mengakses PLC Dengan C# - I

 


Programmable Logic Controller, disingkat PLC merupakan peralatan elektronik yang dibangun dari mikroprosesor untuk memonitor keadaan dari peralatan input untuk kemudian di analisa sesuai dengan kebutuhan perencana (programmer) untuk mengontrol keadaan output. Sinyal input diberikan kedalam input card.
Ada 2 jenis input card, yaitu :
  • Analog input card
  • Digital input card

Contoh untuk mengakses PLC :

1. Connect to PLC

using PLCcom;

public class myTestClass

{

    //declare the Device 

    private PLCcomDevice Device;

    private void btnConnect_Click(object sender, System.EventArgs e)

    {

        //create TCP_ISO_Device instance from PLCcomDevice

        Device = new TCP_ISO_Device("192.168.1.2", 0, 2, ePLCType.S7_300_400_compatibel);

        //or create MPI_Device instance from PLCcomDevice 

        //Device = new MPI_Device("COM2", 0, 2, eBaudrate.b38400, eSpeed.Speed187k, ePLCType.S7_300_400_compatibel); 

        //or create PPI_Device instance from PLCcomDevice 

        //Device = new PPI_Device("COM2", 0, 2, eBaudrate.b9600, ePLCType.S7_200_compatibel);

 

        authentication.User = "";   //Enter User here

        authentication.Serial = ""; //Enter Serial here

         

        Device.Connecttimeout = 1000;

        Device.Readtimeout = 2000;

        ConnectResult res = Device.Connect();

 

        MessageBox.Show(res.Message);

    }

}


2. Disconnect from PLC

Untuk memutuskan koneksi ke PLC cukup 1 baris perintah : Device.DisConnect();


3. Automatic connect to PLC

using PLCcom;

public class myTestClass

{

    //declare the Device 

    private PLCcomDevice Device;

    private void btnConnect_Click(object sender, System.EventArgs e)

    {

        //create TCP_ISO_Device instance from PLCcomDevice

        Device = new TCP_ISO_Device("192.168.1.2", 0, 2, ePLCType.S7_300_400_compatibel);

        //or create MPI_Device instance from PLCcomDevice 

        //Device = new MPI_Device("COM2", 0, 2, eBaudrate.b38400, eSpeed.Speed187k, ePLCType.S7_300_400_compatibel); 

        //or create PPI_Device instance from PLCcomDevice 

        //Device = new PPI_Device("COM2", 0, 2, eBaudrate.b9600, ePLCType.S7_200_compatibel);

 

        authentication.User = "";

        authentication.Serial = "";

 

        //Set auto connect

        //The connection is opened automatically when it is needed. If after the expiry of the given period, no more requests are sent, the connection is automatically closed.

        Device.setAutoConnect(true, 10000);

    }

}


4. Simple reading data from PLC

using System;

using PLCcom;

using System.Windows.Forms;

namespace CodeDokuCSharp

{

    class newClass

    {

        PLCcomDevice Device;

 

        private void btnRead_Click(object sender, EventArgs e)

        {

            //declare a ReadRequest object

            //set the request parameters

            //read 10 Bytes from DB100

            ReadDataRequest myReadRequest = new ReadDataRequest(eRegion.DataBlock, 100, 0, eDataType.BYTE, 10);

 

            //read from device

            ReadDataResult res = Device.ReadData(myReadRequest);

 

            //evaluate results

            txtMessage.Text = res.Message;

            if (res.Quality == OperationResult.eQuality.GOOD)

            {

                foreach (byte b in (byte[])res.GetValues())

                {

                    txtResult.Text += b.ToString() + Environment.NewLine;

                }

                MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

            else

            {

                MessageBox.Show(res.Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

    }

}


Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/


Contoh Mengakses PLC Dengan Java - IV

 


13. Start and stop a PLC

import PLCCom.*;

import javax.swing.JOptionPane;

 

public class NewClass {

 

    PLCcomDevice Device;

    //see section 'connect' for declare and connect a PLCcom-Device

 

    //Start PLC

    private void btnwriteRawDataActionPerformed(java.awt.event.ActionEvent evt) {

 

        //execute function

        OperationResult res = Device.StartPLC();

 

        //evaluate results

        if (res.Quality().equals(OperationResult.eQuality.GOOD)) {

            JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);

        } else {

            JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE);

        }

    }

     

    //Stop PLC

    private void btnwriteRawDataActionPerformed(java.awt.event.ActionEvent evt) {

 

        //execute function

        OperationResult res = Device.StopPLC();

 

        //evaluate results

        if (res.Quality().equals(OperationResult.eQuality.GOOD)) {

            JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);

        } else {

            JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE);

        }

    }

}


14. Reading block list from PLC

import PLCCom.*;

import javax.swing.JOptionPane;

 

public class NewClass {

 

    PLCcomDevice Device;

    //see section 'connect' for declare and connect a PLCcom-Device

 

    private void btngetPLCBlockListActionPerformed(java.awt.event.ActionEvent evt) {

 

        eBlockType BlockType = eBlockType.AllBlocks;

        BlockListResult res = Device.GetBlockList(BlockType);

 

        //evaluate results

        if (res.Quality().equals(OperationResult.eQuality.GOOD)) {

            StringBuilder sb = new StringBuilder();

            for (BlockListEntry ble : res.getBlockList()) {

                sb.append(ble.getBlockType().toString());

                sb.append(String.valueOf(ble.getBlockNumber()));

                sb.append(System.getProperty("line.separator"));

            }

            JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);

        } else {

            JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE);

        }

    }

}


15. Get length of block

import PLCCom.*;

import javax.swing.JOptionPane;

 

public class NewClass {

 

    PLCcomDevice Device;

    //see section 'connect' for declare and connect a PLCcom-Device

 

    private void btnBlockLenActionPerformed(java.awt.event.ActionEvent evt) {

 

        //get Len from DB100

        int BlockNumber = 100;

        eBlockType BlockType = eBlockType.AllBlocks;

 

        //evaluate results

        BlockListLengthResult res = Device.GetBlockLenght(BlockType, BlockNumber);

 

        //evaluate results

        if (res.Quality().equals(OperationResult.eQuality.GOOD)) {

            StringBuilder sb = new StringBuilder();

            sb.append(res.getBlockType().toString());

            sb.append(String.valueOf(res.getBlockNumber()));

            sb.append(" Len:");

            sb.append(String.valueOf(res.getBlockLength()));

            JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);

        } else {

            JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE);

        }

    }

}


16. Backup block

import PLCCom.*;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import javax.swing.JFileChooser;

import javax.swing.JOptionPane;

import javax.swing.filechooser.FileFilter;

import javax.swing.filechooser.FileNameExtensionFilter;

 

public class NewClass {

 

    PLCcomDevice Device;

    //see section 'connect' for declare and connect a PLCcom-Device

 

    private void btnBackup_BlockActionPerformed(java.awt.event.ActionEvent evt) {

 

        //Backup OB1

        int BlockNumber = 1;

        eBlockType BlockType = eBlockType.OB;

 

        //open SaveFileDialog

        final JFileChooser dr = new JFileChooser();

        FileFilter filter = new FileNameExtensionFilter("Binary Files *.mc7", "mc7");

        dr.addChoosableFileFilter(filter);

        int returnVal = dr.showSaveDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {

            //read Block into ReadPLCBlockResult

            ReadPLCBlockResult res = Device.ReadPLCBlock_MC7(BlockType, BlockNumber);

 

            //evaluate results

            if (res.Quality().equals(OperationResult.eQuality.GOOD)) {

                try {

                    //save buffer in specified file

                    File file = new File(dr.getSelectedFile().getAbsolutePath());

 

                    //rename file to .mc7, you can adjust the extension

                    if (!file.getAbsolutePath().endsWith(".mc7")) {

                        file = new File(dr.getSelectedFile().getAbsolutePath() + ".mc7");

                    }

                    // if file doesn´t exists, then create it

                    if (!file.exists()) {

                        file.createNewFile();

                    }

                    FileOutputStream fs = new FileOutputStream(file);

                    fs.write(res.getBuffer());

                    fs.close();

                    JOptionPane.showMessageDialog(null, "Block " + String.valueOf(String.valueOf(BlockType)) + String.valueOf(BlockNumber) + resources.getString("successful_saved") + dr.getSelectedFile().getName(), "", JOptionPane.INFORMATION_MESSAGE);

                } catch (IOException ex) {

                    JOptionPane.showMessageDialog(null, "operation unsuccessful", "", JOptionPane.ERROR_MESSAGE);

                }

                JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);

            } else {

                JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE);

            }

        } else {

            JOptionPane.showMessageDialog(null, "operation aborted", "", JOptionPane.ERROR_MESSAGE);

        }

    }

}


17. Restore block

import PLCCom.*;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.swing.JFileChooser;

import javax.swing.JOptionPane;

import javax.swing.filechooser.FileFilter;

import javax.swing.filechooser.FileNameExtensionFilter;

 

public class NewClass {

 

    PLCcomDevice Device;

    //see section 'connect' for declare and connect a PLCcom-Device

 

    private void btnRestore_BlockActionPerformed(java.awt.event.ActionEvent evt) {

        final JFileChooser dr = new JFileChooser();

        FileFilter filter = new FileNameExtensionFilter("Binary Files *.mc7, *.bin", "mc7", "bin");

        dr.addChoosableFileFilter(filter);

        int returnVal = dr.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {

            try {

                File file = new File(dr.getSelectedFile().getAbsolutePath());

                if (!file.exists()) {

                    JOptionPane.showMessageDialog(null, "operation unsuccessful, file not exist", "", JOptionPane.ERROR_MESSAGE);

                    return;

                }

                InputStream is = null;

                byte[] buffer = null;

                try {

                    is = new BufferedInputStream(new FileInputStream(file));

                    buffer = new byte[is.available()];

                    is.read(buffer);

                } finally {

                    is.close();

                }

                WritePLCBlockRequest Requestdata = new WritePLCBlockRequest(buffer);

                //Write Buffer into PLC

                OperationResult res = Device.WritePLCBlock_MC7(Requestdata);

 

                //evaluate results

                if (res.Quality().equals(OperationResult.eQuality.GOOD)) {

                    JOptionPane.showMessageDialog(null, "Block " + String.valueOf(Requestdata.getBlockInfo().getHeader().getBlockType()) + String.valueOf(Requestdata.getBlockInfo().getHeader().getBlockNumber()) + "successful saved in PLC! File:" + dr.getSelectedFile().getName(), "", JOptionPane.INFORMATION_MESSAGE);

                } else {

                    JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE);

                }

            } catch (IOException ex) {

                JOptionPane.showMessageDialog(null, "operation unsuccessful", "", JOptionPane.ERROR_MESSAGE);

            }

        } else {

            JOptionPane.showMessageDialog(null, "operation aborted", "", JOptionPane.ERROR_MESSAGE);

        }

    }

}


18. Delete block

import PLCCom.*;

import javax.swing.JOptionPane;

 

public class NewClass {

 

    PLCcomDevice Device;

    //see section 'connect' for declare and connect a PLCcom-Device

 

    private void btnDeleteBlockActionPerformed(java.awt.event.ActionEvent evt) {

 

        //Delete DB100

        int BlockNumber = 100;

        eBlockType BlockType = eBlockType.DB;

 

        OperationResult res = Device.DeleteBlock(BlockType, BlockNumber);

 

        //evaluate results

        if (res.Quality().equals(OperationResult.eQuality.GOOD)) {

            JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE);

        } else {

            JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE);

        }

    }

}


Reference : https://www.plccom.net/en/plccom/for-s7/fors7-code-examples/

Memunculkan Simbol & Emoji Pada OS Mac

  Memunculkan Simbol & Emoji  1. Buka aplikasi Pages / Notes pada Macbook. 2. Klik pada Menubar Edit --> Pilih Emoji and Symbols a...