Code Beispiele PLCcom für S7
Die Einbindung des PLCcom-Treibers für S7 ist sehr einfach und benutzerfreundlich.
Die nachfolgenden Beispiele veranschaulichen die wichtigsten Funktionalitäten.
Weiterführende umfangreiche Dokumentationen mit direkt ausführbaren Code-Beispielen finden Sie in der Beispielanwendung in unserem Downloadpaket oder online.
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); } }
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
import PLCCom.*; import javax.swing.JOptionPane; public class NewClass { //declare the Device PLCcomDevice Device; private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) { //Connecting Device //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.setConnecttimeout(1000); Device.setReadtimeout(2000); ConnectResult res = Device.Connect(); JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.OK_CANCEL_OPTION); } }
Beispiel: Verbinden einer Anwendung mit einer SPS
Beispiel: Schließen der Verbindung zu einer SPS
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); } }
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
import PLCCom.*; import javax.swing.JOptionPane; public class NewClass { //declare the Device PLCcomDevice Device; private void btnConnectActionPerformed(java.awt.event.ActionEvent evt) { //Connecting Device //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); //Enter User here authentication.User(""); //Enter Serial here authentication.Serial(""); Device.setConnecttimeout(1000); Device.setReadtimeout(2000); // Set Auto Connect State //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)); } }
Beispiel: Die Verbindung wird automatisch geöffnet, wenn sie benötigt wird. Wenn nach Ablauf der übergebenen Zeitspanne keine Anfragen mehr gesendet wurden, wird die Verbindung automatisch geschlossen.
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); } } } }
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
import PLCCom.*; public class main { private void btnreadRawDataActionPerformed(java.awt.event.ActionEvent evt) { //set the request parameters //in this case => read 10 Bytes from DB1 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 //read from device System.out.println("begin Read..."); ReadDataResult res = Device.readData(myReadDataRequest); //evaluate results if (res.Quality() == OperationResult.eQuality.GOOD) { int Position = 0; for (Object item : res.getValues()) { ystem.out.println("read Byte " + String.valueOf(Position) + " " + item.toString()); Position++; } } else { System.out.println("read not successfull! Message: " + res.Message()); } } }
Beispiel:
Lesen von Daten aus einer SPS.
Weitere Beispiele zum Lesen von bestimmen Datentypen (String, DINT, etc.) entnehmen Sie bitte der Dokumentation oder der Beispielanwendung aus dem Downloadpaket!
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); } } }
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
using PLCcom.*; private PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device private void btnWrite_Click(object sender, EventArgs e) { WriteDataRequest myWriteRequest = new WriteDataRequest(eRegion.DataBlock, // Region Integer.valueOf(100), // DB / only for data block operations otherwise 0 Integer.valueOf(0), // write start address Byte.valueOf(txtBit.getText())); // Bit/only for bit operations //set the request parameters //write 4 bytes in DB100 WriteRequest[] myWriteRequest = new WriteRequest[1]; myWriteRequest[0] = new WriteRequest(); //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[0].Message; if (res[0].Quality.Equals(OperationResult.eQuality.GOOD)) { MessageBox.Show("OK", "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show(res[0].Message, "Result:", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
Beispiel:
Schreiben von Daten in eine SPS.
Weitere Beispiele zum Schreiben von bestimmen Datentypen (String, DINT, etc.) entnehmen Sie bitte der Dokumentation oder der Beispielanwendung aus dem Downloadpaket!
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 } } } }
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
import PLCCom.*; public class main { //declare the Device private PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device private void btnOptReadWriteActionPerformed(java.awt.event.ActionEvent evt) { 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... for (ReadDataResult res : results.getReadDataResults()) { // for getting read results see chapter simple read } // ...and evaluate the results of write operations for (WriteDataResult res : results.getWriteDataResults()) { // for getting write results see chapter simple write } } }
Beispiel:
optimiertes Lesen und Schreiben von Daten mehrerer unterschiedlicher Bereiche aus einer SPS in einem gemeinsamen Zugriff. Hierzu wird eine ReadWriteRequestSet erzeugt und zum Lesen/Schreiben an das Device übergeben. Die hierzu notwendigen Lesezugriffe werden automatisch auf das Notwendigste reduziert und optimiert.
Weitere Beispiele zum Lesen von bestimmen Datentypen (String, DINT, etc.) entnehmen Sie bitte der Dokumentation oder der Beispielanwendung aus dem Downloadpaket!
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); } } } }
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
import PLCCom.*; import javax.swing.JOptionPane; public class NewClass { PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device private void btngetPLCBasicInfoActionPerformed(java.awt.event.ActionEvent evt) { //execute function BasicInfoResult res = Device.GetBasicInfo(); //evaluate results if (res.Quality().equals(OperationResult.eQuality.GOOD)) { StringBuilder sb = new StringBuilder(); sb.append("Device Name: "); sb.append(res.Name()); sb.append(System.getProperty("line.separator")); sb.append("Order Number: "); sb.append(res.Ordernumber()); sb.append(System.getProperty("line.separator")); sb.append("Module Version: "); sb.append(res.ModuleVersion()); sb.append(System.getProperty("line.separator")); sb.append("Firmware Version: "); sb.append(res.FirmwareVersion()); sb.append(System.getProperty("line.separator")); JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE); } } }
Beispiel:
Lesen von Basisinformationen wie z.B. Bestellnummer, Model, Firmware, etc. von der SPS
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); } } } }
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
import PLCCom.*; import javax.swing.JOptionPane; public class NewClass { PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device private void btngetCPUModeActionPerformed(java.awt.event.ActionEvent evt) { //execute function CPUModeInfoResult res = Device.GetCPUMode(); //evaluate results if (res.Quality().equals(OperationResult.eQuality.GOOD)) { StringBuilder sb = new StringBuilder(); sb.append("CPU Mode = "); sb.append(String.valueOf(res.CPUModeInfo())); sb.append(System.getProperty("line.separator")); sb.append("CPU State = "); sb.append(String.valueOf(res.CPUStateInfo())); JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE); } } }
Beispiel:
Lesen von Betriebsart und Status der SPS (Run, Stop, Schlüsselschalterstellung, etc.)
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 } }
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
import PLCCom.*; import java.util.Calendar; import javax.swing.JOptionPane; public class NewClass { PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device //read PLC time private void btnGetPLCTimeActionPerformed(java.awt.event.ActionEvent evt) { //execute function PLCClockTimeResult res = Device.GetPLCClockTime(); //evaluate results if (res.Quality().equals(OperationResult.eQuality.GOOD)) { Calendar c = res.getPLCClockTime(); JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE); } } //set PLC time private void btnSetPLCTimeActionPerformed(java.awt.event.ActionEvent evt) { Calendar data = new GregorianCalendar(); //adjust and set hour data.set(Calendar.HOUR_OF_DAY, data.get(Calendar.HOUR_OF_DAY) - 0); //execute function OperationResult res = Device.SetPLCClockTime(data); //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); } } }
Beispiel:
Lesen und Schreiben der SPS-Systemzeit
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); } } } }
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
import PLCCom.*; import javax.swing.JOptionPane; public class NewClass { PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device private void btnReadSSL_SZLActionPerformed(java.awt.event.ActionEvent evt) { // 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 if (res.Quality().equals(OperationResult.eQuality.GOOD)) { StringBuilder sb = new StringBuilder(); for (SystemStatusListItemEntry ssle : res.getSZLItemEntrys()) { for (byte b : ssle.getBuffer()) { sb.append(String.valueOf(b)); sb.append(" "); } sb.append(System.getProperty("line.separator")); } JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE); } } }
Beispiel:
Lesen von Daten aus der Systemzustandsliste (wenn vorhanden)
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); } } } }
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
import PLCCom.*; import javax.swing.JOptionPane; public class NewClass { PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device private void btnDiagnoseBufferActionPerformed(java.awt.event.ActionEvent evt) { //read the diagnosticinfo into DiagnosticInfoResult-object //execute function DiagnosticInfoResult res = Device.GetDiagnosticInfo(); //evaluate results if (res.Quality().equals(OperationResult.eQuality.GOOD)) { //step through the entries StringBuilder sb = new StringBuilder(); for (DiagnosticInfoEntry myDiagnosticInfoEntry : res.getDiagnosticInfoEntrys()) { sb.append("Timestamp: "); sb.append(myDiagnosticInfoEntry.getDiagnosticTimestamp().toString()); sb.append(" "); sb.append("ID: "); sb.append(String.valueOf(myDiagnosticInfoEntry.getDiagnosticID())); sb.append(" "); sb.append("Message: "); sb.append(myDiagnosticInfoEntry.getDiagnosticText()); sb.append(System.getProperty("line.separator")); } JOptionPane.showMessageDialog(null, "OK", "", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(null, res.Message(), "", JOptionPane.ERROR_MESSAGE); } } }
Beispiel:
Lesen der Diagnosedaten von der SPS
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); } } } }
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
import PLCCom.*; import javax.swing.JOptionPane; public class NewClass { PLCcomDevice Device; //see section 'connect' for declare and connect a PLCcom-Device private void btnsendPWActionPerformed(java.awt.event.ActionEvent evt) { OperationResult res = Device.sendPassWord("EnterPW"); //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); } } }
Beispiel:
Senden eines Passwortes zum Freischalten der Verbindung bei passwortgeschützten SPSsen
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 } }
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
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); } } }
Beispiel:
Starten oder Stoppen einer SPS (RUN >> STOPP oder STOPP >> RUN)
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); } } } }
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
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); } } }
Beispiel:
Auslesen einer Aufzählung der angelegten Objekte aus einer SPS. In diesem Beispiel werden alle Blöcke gelesen, es kann aber auch nur ein bestimmter Blocktyp (OB, DB, etc) ausgewählt werden!
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); } } } }
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
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); } } }
Beispiel:
Auslesen der Länge eines bestimmten Blockes.
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); } } } }
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
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); } } }
Beispiel:
Auslesen eines bestimmten Blockes im MC7-Format mit nachfolgender Speicherung in einer auswählbaren Datei!
Im Rückgabe-Objekt ReadPLCBlockResult werden unter anderem auch im Unterobjekt BlockInfo Informationen des Blocks in Klartext ausgegeben (z.B. Sprache, Author, etc.)!
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); } } } }
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
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); } } }
Beispiel:
Beschreiben eines Blockes mit den Daten aus einer auswählbaren Datei im MC7-Format!
Optional ist es möglich abweichende Zielinformationen zu übergeben. Sie könnten also zum Beispiel DB100 unter DB200 speichern.
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); } } } }
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
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); } } }
Beispiel:
Löschen eines bestimmten Blocks!