Membuat Program Koneksi ke PLC menggunakan C#
Kali ini saya mencoba membuat program untuk mengetes koneksi ke PLC (Programmable Logic Controller) menggunakan C# dengan IDE Visual Studio 2010. PLC adalah suatu perangkat elektronik digital yang mampu menyimpan memori dan menjalankan fungsinya sesuai fungsi spesifik: aritmatika, logika, timing, sequence dan counting yang mengatur operasional mesin industri baik yang di jalankan sendiri-sendiri (unlock) maupun yang berjalan bersamaan dan saling terkait (interlock). Mungkin untuk lebih lengkap, Anda dapat membaca di sini.

Ok, tanpa bertele-tele. Berikut yang diperlukan untuk membuat koneksi dengan PLC (kebetulan yang saya sudah coba adalah PLC Omron CS1GH). Pertama siapkan form pada C# seperti pada gambar berikut ini:

Untuk menggunakan library serial port, drag drop Windows Component SerialPort. Untuk koneksi hardware serial port PLC ke komputer Anda, Anda dapat menggunakan RS-232 to USB yang sudah terinstall drivernya.
Sekarang mulai untuk kodingnya. Untuk form Load isikan koding berikut:
private void Form1_Load(object sender, EventArgs e)
{
//menset event handler untuk DataReceived event
serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(DataReceived);
//menampilkan nama serialport yang tersedia pada komputer
string[] portNames = System.IO.Ports.SerialPort.GetPortNames();
for (int i = 0; i <= portNames.Length - 1; i++)
{
cbbCOMPorts.Items.Add(portNames[i]);
}
btnDisconnect.Enabled = false;
}
Untuk button Connect
private void btnConnect_Click(object sender, EventArgs e)
{
//menutup akses serialport apabila akses serialport terbuka
if (serialPort.IsOpen)
{
serialPort.Close();
}
try
{
//mengatur beberapa parameter untuk koneksi serialport
serialPort.PortName = cbbCOMPorts.Text;
serialPort.BaudRate = 9600;
serialPort.Parity = System.IO.Ports.Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = System.IO.Ports.StopBits.One;
//buka serial port
serialPort.Open();
//—menampilkan status dari serial port dan enable/disable kan tombol
lblMessage.Text = cbbCOMPorts.Text + " connected.";
btnConnect.Enabled = false;
btnDisconnect.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
untuk catatan pada PLC baud rate bernilai 9600 dan data bit 8 atau 7 dengan parity even
Untuk button Disconnect:
private void btnDisconnect_Click(object sender, EventArgs e)
{
try
{
//tutup serial port
serialPort.Close();
//menampilkan status dari serial port dan enable/disable -kan tombol
lblMessage.Text = serialPort.PortName + " disconnected.";
btnConnect.Enabled = true;
btnDisconnect.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Untuk button Kirim:
private void btnKirim_Click(object sender, EventArgs e)
{
try
{
//menulis tipe data string pada serial port
serialPort.Write(txtDataToSend.Text + Environment.NewLine);
//menambahkan string yang telah dikirim pada TextBox control
txtDataReceived.AppendText(">" + txtDataToSend.Text + Environment.NewLine);
txtDataReceived.ScrollToCaret();
//bersihkanTextBox control
txtDataToSend.Text = string.Empty;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
dan sisanya untuk beberapa handler untuk tiap data yang dikirim dan diterima:
private void txtDataReceived_TextChanged(object sender, EventArgs e)
{
//memanggil delegasi untuk mengambil data yang diterima
txtDataReceived.BeginInvoke(new myDelegate(updateTextBox));
}
//Event handler untuk DataReceived event
private void DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//memanggil delegasi untuk mengambil data yang diterima
txtDataReceived.BeginInvoke(new myDelegate(updateTextBox));
}
//Delegate and subroutine untuk ditampilkan pada TextBox control
public delegate void myDelegate();
public void updateTextBox()
{
//menambahkan data pada TextBox control
txtDataReceived.AppendText(serialPort.ReadExisting());
txtDataReceived.ScrollToCaret();
}
dan berikut hasil eksekusinya:

Sekian untuk isi blog kali ini. Semoga bermanfaat,