2024. 6. 14. 17:52ใDevelopment๐ฉ๐ป๐ฆณ/C#
1. ActUtlType ๊ฐ์ฒด ์ด๊ธฐํ ๋ฐ ์ค์
๋จผ์ , PLC์์ ํต์ ์ ์ํด ActUtlType ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ณ ๋ก์ง์ปฌ ์คํ ์ด์ ๋ฒํธ๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private ActUtlType plc;
public Form1()
{
InitializeComponent();
plc = new ActUtlType();
plc.ActLogicalStationNumber = 1; // ๋ก์ง์ปฌ ์คํ
์ด์
๋ฒํธ ์ค์
}
2. PLC ์ฐ๊ฒฐ (Open Port)
PLC์ ์ฐ๊ฒฐํ๋ ๋ฉ์ปค๋์ฆ์ btnOpenPort_Click ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ๊ตฌํ๋ฉ๋๋ค. ์ด ๋ฉ์๋๋ ActUtlType ๊ฐ์ฒด์ Open ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ PLC์์ ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private void btnOpenPort_Click(object sender, EventArgs e)
{
int result = plc.Open(); // PLC์ ์ฐ๊ฒฐ ์๋
if (result == 0)
{
MessageBox.Show("PLC์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค."); // ์ฐ๊ฒฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("PLC์ ์ฐ๊ฒฐ ์คํจ: " + result.ToString()); // ์ฐ๊ฒฐ ์คํจ ๋ฉ์์ง
}
}
3. PLC ์ฐ๊ฒฐ ์ข ๋ฃ (Close Port)
PLC์์ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ๋ฉ์ปค๋์ฆ์ btnClosePort_Click ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ๊ตฌํ๋ฉ๋๋ค. ์ด ๋ฉ์๋๋ ActUtlType ๊ฐ์ฒด์ Close ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ฐ๊ฒฐ์ ์ข ๋ฃํฉ๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private void btnClosePort_Click(object sender, EventArgs e)
{
int result = plc.Close(); // PLC ์ฐ๊ฒฐ ์ข
๋ฃ ์๋
if (result == 0)
{
MessageBox.Show("PLC ์ฐ๊ฒฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข
๋ฃ๋์์ต๋๋ค."); // ์ฐ๊ฒฐ ์ข
๋ฃ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("PLC ์ฐ๊ฒฐ ์ข
๋ฃ ์คํจ: " + result.ToString()); // ์ฐ๊ฒฐ ์ข
๋ฃ ์คํจ ๋ฉ์์ง
}
}
4. ๋ฐ์ดํฐ ์ฝ๊ธฐ (Read Data)
PLC์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ฉ์ปค๋์ฆ์ btnReadData_Click ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ๊ตฌํ๋ฉ๋๋ค. ์ด ๋ฉ์๋๋ ActUtlType ๊ฐ์ฒด์ GetDevice ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํน์ ๋ ์ง์คํฐ(D100)์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private void btnReadData_Click(object sender, EventArgs e)
{
int data;
int result = plc.GetDevice("D100", out data); // D100 ๋ ์ง์คํฐ ์ฝ๊ธฐ ์๋
if (result == 0)
{
txtReadData.Text = data.ToString(); // ์ฝ์ ๋ฐ์ดํฐ ํ
์คํธ ๋ฐ์ค์ ํ์
MessageBox.Show("์ฝ์ ๋ฐ์ดํฐ: " + data.ToString()); // ์ฝ๊ธฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("๋ฐ์ดํฐ ์ฝ๊ธฐ ์คํจ: " + result.ToString()); // ์ฝ๊ธฐ ์คํจ ๋ฉ์์ง
}
}
5. ๋ฐ์ดํฐ ์ฐ๊ธฐ (Write Data)
PLC์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๋ฉ์ปค๋์ฆ์ btnWriteData_Click ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ๊ตฌํ๋ฉ๋๋ค. ์ด ๋ฉ์๋๋ ActUtlType ๊ฐ์ฒด์ SetDevice ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํน์ ๋ ์ง์คํฐ(D100)์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private void btnWriteData_Click(object sender, EventArgs e)
{
int data;
if (int.TryParse(txtWriteData.Text, out data)) // ํ
์คํธ ๋ฐ์ค์์ ์ซ์ ์
๋ ฅ ํ์ธ
{
int result = plc.SetDevice("D100", data); // D100 ๋ ์ง์คํฐ์ ๋ฐ์ดํฐ ์ฐ๊ธฐ ์๋
if (result == 0)
{
MessageBox.Show("๋ฐ์ดํฐ ์ฐ๊ธฐ ์ฑ๊ณต"); // ์ฐ๊ธฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("๋ฐ์ดํฐ ์ฐ๊ธฐ ์คํจ: " + result.ToString()); // ์ฐ๊ธฐ ์คํจ ๋ฉ์์ง
}
}
else
{
MessageBox.Show("์ ํจํ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์."); // ์
๋ ฅ๊ฐ์ด ์ ํจํ์ง ์์
}
}
์ ์ฒด ์ฝ๋ ์์ฝ
์๋๋ ์ฃผ์ ๋ฉ์ปค๋์ฆ์ ํฌํจํ ์ ์ฒด ์ฝ๋๋ฅผ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
using System;
using System.Windows.Forms;
using ActUtlTypeLib; // ActUtlTypeLib ๋ค์์คํ์ด์ค ์ฐธ์กฐ
namespace PLCCommunication
{
public partial class Form1 : Form
{
private ActUtlType plc;
public Form1()
{
InitializeComponent();
plc = new ActUtlType();
plc.ActLogicalStationNumber = 1; // ๋ก์ง์ปฌ ์คํ
์ด์
๋ฒํธ ์ค์
}
// Open Port ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ
private void btnOpenPort_Click(object sender, EventArgs e)
{
int result = plc.Open(); // PLC์ ์ฐ๊ฒฐ ์๋
if (result == 0)
{
MessageBox.Show("PLC์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค."); // ์ฐ๊ฒฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("PLC์ ์ฐ๊ฒฐ ์คํจ: " + result.ToString()); // ์ฐ๊ฒฐ ์คํจ ๋ฉ์์ง
}
}
// Close Port ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ
private void btnClosePort_Click(object sender, EventArgs e)
{
int result = plc.Close(); // PLC ์ฐ๊ฒฐ ์ข
๋ฃ ์๋
if (result == 0)
{
MessageBox.Show("PLC ์ฐ๊ฒฐ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข
๋ฃ๋์์ต๋๋ค."); // ์ฐ๊ฒฐ ์ข
๋ฃ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("PLC ์ฐ๊ฒฐ ์ข
๋ฃ ์คํจ: " + result.ToString()); // ์ฐ๊ฒฐ ์ข
๋ฃ ์คํจ ๋ฉ์์ง
}
}
// Read Data ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ
private void btnReadData_Click(object sender, EventArgs e)
{
int data;
int result = plc.GetDevice("D100", out data); // D100 ๋ ์ง์คํฐ ์ฝ๊ธฐ ์๋
if (result == 0)
{
txtReadData.Text = data.ToString(); // ์ฝ์ ๋ฐ์ดํฐ ํ
์คํธ ๋ฐ์ค์ ํ์
MessageBox.Show("์ฝ์ ๋ฐ์ดํฐ: " + data.ToString()); // ์ฝ๊ธฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("๋ฐ์ดํฐ ์ฝ๊ธฐ ์คํจ: " + result.ToString()); // ์ฝ๊ธฐ ์คํจ ๋ฉ์์ง
}
}
// Write Data ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ
private void btnWriteData_Click(object sender, EventArgs e)
{
int data;
if (int.TryParse(txtWriteData.Text, out data)) // ํ
์คํธ ๋ฐ์ค์์ ์ซ์ ์
๋ ฅ ํ์ธ
{
int result = plc.SetDevice("D100", data); // D100 ๋ ์ง์คํฐ์ ๋ฐ์ดํฐ ์ฐ๊ธฐ ์๋
if (result == 0)
{
MessageBox.Show("๋ฐ์ดํฐ ์ฐ๊ธฐ ์ฑ๊ณต"); // ์ฐ๊ธฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("๋ฐ์ดํฐ ์ฐ๊ธฐ ์คํจ: " + result.ToString()); // ์ฐ๊ธฐ ์คํจ ๋ฉ์์ง
}
}
else
{
MessageBox.Show("์ ํจํ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์."); // ์
๋ ฅ๊ฐ์ด ์ ํจํ์ง ์์
}
}
}
}
์ด ์ฝ๋๋ PLC์์ ํต์ ์ ์ค์ ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ชจ๋ ์ฃผ์ ๋ฉ์ปค๋์ฆ์ ํฌํจํ๊ณ ์์ต๋๋ค. ๊ฐ ๋ฉ์๋์๋ ์ฃผ์์ ์ถ๊ฐํ์ฌ ๊ธฐ๋ฅ์ ์ค๋ช ํ์์ต๋๋ค ์ด ์ฝ๋๋ฅผ ํตํด PLC์์ ํต์ ์ด ์ ์์ ์ผ๋ก ์ค์ ๋๊ณ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
ํต์ ๋ฐฉ์์ ๋ฐ์ดํฐ ์ ์ก์ ์ ๋ฐ์ ์ธ ๋ฉ์ปค๋์ฆ์ ๋ํ๋ด๋ฉฐ, ๋ค์ํ ํ๋กํ ์ฝ๊ณผ ๋ฌผ๋ฆฌ์ ๋งค์ฒด๋ฅผ ํฌํจํฉ๋๋ค.
์ฌ๊ธฐ์ ์ฌ์ฉ๋ ํต์ ๋ฐฉ์์ Mitsubishi์ PLC์ PC ๊ฐ์ ํต์ ์ ์ค์ ํ๊ธฐ ์ํ ActUtlType ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ CC-Link๋ฅผ ์ฌ์ฉํฉ๋๋ค. CC-Link๋ ์ฐ์ ์๋ํ ์์คํ ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋๋ฒ์ค ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋๋ค.
(ํด๋น๋ฐฉ์์ผ๋ก ๊ตฌํํ๊ณ ํ๋ก์ ํธ์งํํ ์์ ) ํต์ ๋ฐฉ์์ ์์: CC-Link
CC-Link (Control & Communication Link)๋ ๊ณ ์ ํ๋ ๋คํธ์ํฌ๋ก, ๋ค์ํ ์๋ํ ๊ธฐ๊ธฐ ๊ฐ์ ๋ฐ์ดํฐ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. CC-Link๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- CC-Link Network: ๋คํธ์ํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฌผ๋ฆฌ์ ๋ฐ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ.
- Master-Slave ๊ตฌ์กฐ: ๋ง์คํฐ ์ฅ์น์ ์ฌ๋ ์ด๋ธ ์ฅ์น ๊ฐ์ ํต์ ๋ฐฉ์. ๋ง์คํฐ๋ ๋คํธ์ํฌ๋ฅผ ์ ์ดํ๊ณ ์ฌ๋ ์ด๋ธ ์ฅ์น์ ๋ช ๋ น์ ๋ณด๋ ๋๋ค.
- ํต์ ํ๋ ์: ๋ฐ์ดํฐ ํจํท์ ๊ตฌ์กฐ๋ก, ์ฃผ์, ๋ช ๋ น, ๋ฐ์ดํฐ ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
CC-Link๋ฅผ ์ฌ์ฉํ ํต์ ์์
CC-Link๋ฅผ ์ฌ์ฉํ์ฌ Mitsubishi PLC์ PC ๊ฐ์ ํต์ ์ ์ค์ ํ๋ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์๋ C#๊ณผ ActUtlType ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ CC-Link ๋คํธ์ํฌ์์ PLC์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
1. ActUtlType ๊ฐ์ฒด ์ด๊ธฐํ ๋ฐ ์ค์
csharp์ฝ๋ ๋ณต์ฌ
private ActUtlType plc;
public Form1()
{
InitializeComponent();
plc = new ActUtlType();
plc.ActLogicalStationNumber = 1; // ๋ก์ง์ปฌ ์คํ
์ด์
๋ฒํธ ์ค์
}
2. PLC ์ฐ๊ฒฐ (Open Port)
PLC์ ์ฐ๊ฒฐํ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private void btnOpenPort_Click(object sender, EventArgs e)
{
plc.ActLogicalStationNumber = 1; // ๋ก์ง์ปฌ ์คํ
์ด์
๋ฒํธ ์ค์
int result = plc.Open(); // PLC์ ์ฐ๊ฒฐ ์๋
if (result == 0)
{
MessageBox.Show("PLC์ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋์์ต๋๋ค."); // ์ฐ๊ฒฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("PLC์ ์ฐ๊ฒฐ ์คํจ: " + result.ToString()); // ์ฐ๊ฒฐ ์คํจ ๋ฉ์์ง
}
}
3. ๋ฐ์ดํฐ ์ฝ๊ธฐ (Read Data)
PLC์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private void btnReadData_Click(object sender, EventArgs e)
{
int data;
int result = plc.GetDevice("D100", out data); // D100 ๋ ์ง์คํฐ ์ฝ๊ธฐ ์๋
if (result == 0)
{
txtReadData.Text = data.ToString(); // ์ฝ์ ๋ฐ์ดํฐ ํ
์คํธ ๋ฐ์ค์ ํ์
MessageBox.Show("์ฝ์ ๋ฐ์ดํฐ: " + data.ToString()); // ์ฝ๊ธฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("๋ฐ์ดํฐ ์ฝ๊ธฐ ์คํจ: " + result.ToString()); // ์ฝ๊ธฐ ์คํจ ๋ฉ์์ง
}
}
4. ๋ฐ์ดํฐ ์ฐ๊ธฐ (Write Data)
PLC์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
csharp์ฝ๋ ๋ณต์ฌ
private void btnWriteData_Click(object sender, EventArgs e)
{
int data;
if (int.TryParse(txtWriteData.Text, out data)) // ํ
์คํธ ๋ฐ์ค์์ ์ซ์ ์
๋ ฅ ํ์ธ
{
int result = plc.SetDevice("D100", data); // D100 ๋ ์ง์คํฐ์ ๋ฐ์ดํฐ ์ฐ๊ธฐ ์๋
if (result == 0)
{
MessageBox.Show("๋ฐ์ดํฐ ์ฐ๊ธฐ ์ฑ๊ณต"); // ์ฐ๊ธฐ ์ฑ๊ณต ๋ฉ์์ง
}
else
{
MessageBox.Show("๋ฐ์ดํฐ ์ฐ๊ธฐ ์คํจ: " + result.ToString()); // ์ฐ๊ธฐ ์คํจ ๋ฉ์์ง
}
}
else
{
MessageBox.Show("์ ํจํ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์."); // ์
๋ ฅ๊ฐ์ด ์ ํจํ์ง ์์
}
}
์์ฝ
- ๋ ์ง์คํฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ: ํน์ ๋ ์ง์คํฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์์ ์ผ๋ก, ์ด๋ ํต์ ๋ฐฉ์์ ์์ ๋ถ๋ถ์ ๋๋ค.
- ํต์ ๋ฐฉ์: CC-Link๋ฅผ ์ฌ์ฉํ์ฌ PLC์ PC ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ ๊ด๋ฆฌํฉ๋๋ค.
- CC-Link ๋คํธ์ํฌ: ๊ณ ์ ํ๋ ๋คํธ์ํฌ๋ก, ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๊ตฌ์กฐ์ ํต์ ํ๋ ์์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
์ด ์์๋ฅผ ํตํด CC-Link๋ฅผ ์ฌ์ฉํ์ฌ Mitsubishi PLC์ PC ๊ฐ์ ํต์ ์ ์ค์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ฐฉ๋ฒ์ ์ดํดํ ์ ์์ต๋๋ค. ํต์ ๋ฐฉ์์ ๋ฐ์ดํฐ ์ ์ก์ ์ ๋ฐ์ ์ธ ๋ฉ์ปค๋์ฆ์ ๋ํ๋ด๋ฉฐ, ๋ ์ง์คํฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๋ ๊ทธ ์ผ๋ถ๋ก ์๋ํฉ๋๋ค.
์๋ํ ๋ถ์ผ์์๋ ๋ค์ํ ํต์ ๋ฐฉ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
๊ฐ๊ฐ์ ํต์ ๋ฐฉ์์ ํน์ ๋ชฉ์ ๊ณผ ํ๊ฒฝ์ ์ต์ ํ๋์ด ์์ผ๋ฉฐ, ์ฐ์ ์๋ํ ์์คํ ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ ํ๋ฉ๋๋ค. ์๋๋ ์ฃผ์ ํต์ ๋ฐฉ์๋ค์ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
1. Ethernet/IP (Ethernet Industrial Protocol)
- ์ค๋ช : Ethernet/IP๋ ์ฐ์ ์ฉ ์ด๋๋ท ํ๋กํ ์ฝ๋ก, ํ์ค ์ด๋๋ท ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ฐ์ ์ฉ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ํน์ง:
- ๊ณ ์ ๋ฐ์ดํฐ ์ ์ก
- ๋๊ท๋ชจ ๋คํธ์ํฌ ์ง์
- CIP (Common Industrial Protocol) ๊ธฐ๋ฐ
2. PROFINET (Process Field Net)
- ์ค๋ช : PROFINET์ ์ง๋ฉ์ค(Siemens)์์ ๊ฐ๋ฐํ ์ฐ์ ์ฉ ์ด๋๋ท ํ์ค์ ๋๋ค.
- ํน์ง:
- ์ค์๊ฐ ๋ฐ์ดํฐ ์ ์ก
- ๊ณ ์ ๋ฐ ์ ์ ์ฅ์น ๋ชจ๋ ์ง์
- ๊ฐ๋ ฅํ ์ง๋จ ๋ฐ ์ ์ง๋ณด์ ๊ธฐ๋ฅ
3. Modbus
- ์ค๋ช : Modbus๋ Modicon (ํ์ฌ๋ Schneider Electric)์์ ๊ฐ๋ฐํ ํต์ ํ๋กํ ์ฝ๋ก, ์ฐ์ ์๋ํ ์์คํ ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง:
- ์คํ ํ๋กํ ์ฝ
- ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๊ตฌ์กฐ
- ๋ค์ํ ๋ฌผ๋ฆฌ์ ๋งค์ฒด(RS-232, RS-485, TCP/IP) ์ง์
4. CC-Link (Control & Communication Link)
- ์ค๋ช : CC-Link๋ Mitsubishi Electric์์ ๊ฐ๋ฐํ ํ๋ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋๋ค.
- ํน์ง:
- ๊ณ ์ ํต์
- ์ฃผ๋ก ์์์ ์ง์ญ์์ ์ฌ์ฉ
- ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๊ตฌ์กฐ
5. DeviceNet
- ์ค๋ช : DeviceNet์ CAN (Controller Area Network) ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ฐ์ ์ฉ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋๋ค.
- ํน์ง:
- ๋น์ฉ ํจ์จ์
- ๊ฐ๋จํ ๋ฐฐ์
- ๋์ ์ ๋ขฐ์ฑ
6. CANopen
- ์ค๋ช : CANopen์ CAN (Controller Area Network) ๊ธฐ๋ฐ์ ํต์ ํ๋กํ ์ฝ๋ก, ์ฃผ๋ก ์ฐ์ ์๋ํ ๋ฐ ์ ์ด ์์คํ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง:
- ์ค์๊ฐ ํต์ ์ง์
- ๋์ ์ ๋ขฐ์ฑ
- ๋ณต์กํ ๋คํธ์ํฌ ๊ตฌ์ฑ ๊ฐ๋ฅ
7. HART (Highway Addressable Remote Transducer)
- ์ค๋ช : HART๋ ์๋ ๋ก๊ทธ ์ ํธ์ ๋์งํธ ์ ํธ๋ฅผ ๋์์ ์ ์กํ ์ ์๋ ํ๋กํ ์ฝ์ ๋๋ค.
- ํน์ง:
- ๊ธฐ์กด 4-20mA ์๋ ๋ก๊ทธ ๋ฐฐ์ ์ ์ฌ์ฉ
- ๋์งํธ ํต์ ์ถ๊ฐ
- ์๋ฐฉํฅ ํต์ ๊ฐ๋ฅ
8. Profibus (Process Field Bus)
- ์ค๋ช : Profibus๋ ์ง๋ฉ์ค(Siemens)์์ ๊ฐ๋ฐํ ํ๋๋ฒ์ค ํ๋กํ ์ฝ๋ก, ๊ณต์ฅ ์๋ํ ๋ฐ ๊ณต์ ์๋ํ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง:
- ๊ณ ์ ๋ฐ์ดํฐ ์ ์ก
- ๊ฐ๋ ฅํ ์ง๋จ ๊ธฐ๋ฅ
- ๋ค์ํ ์ฅ์น์ ํธํ์ฑ
9. AS-Interface (Actuator Sensor Interface)
- ์ค๋ช : AS-Interface๋ ๊ฐ๋จํ ๋์งํธ ๋ฐ ์๋ ๋ก๊ทธ ์ผ์/์ก์ถ์์ดํฐ์ ์ ์ด ์์คํ ๊ฐ์ ์ ๊ฐํ ๋คํธ์ํฌ์ ๋๋ค.
- ํน์ง:
- ๊ฐ๋จํ ๋ฐฐ์
- ์ ๋น์ฉ
- ์ค์น ๋ฐ ์ ์ง๋ณด์ ์ฉ์ด
10. SERCOS (Serial Real-time Communication System)
- ์ค๋ช : SERCOS๋ ์ฃผ๋ก ๋ชจ์ ์ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ์ค์๊ฐ ํต์ ํ๋กํ ์ฝ์ ๋๋ค.
- ํน์ง:
- ์ค์๊ฐ ํต์
- ๊ณ ์ ๋ฐ์ดํฐ ์ ์ก
- ๋ชจ์ ์ ์ด์ ์ต์ ํ
11. BACnet (Building Automation and Control Networks)
- ์ค๋ช : BACnet์ ๋น๋ฉ ์๋ํ ๋ฐ ์ ์ด ์์คํ ์ ์ํ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋๋ค.
- ํน์ง:
- ํ์คํ๋ ํ๋กํ ์ฝ
- HVAC, ์กฐ๋ช , ํ์ฌ ๊ฒฝ๋ณด ์์คํ ํตํฉ
- ์ํธ ์ด์ฉ์ฑ
12. EtherCAT (Ethernet for Control Automation Technology)
- ์ค๋ช : EtherCAT์ ๊ณ ์ ์ด๋๋ท ๊ธฐ๋ฐ ํ๋๋ฒ์ค ์์คํ ์ผ๋ก, ์ฃผ๋ก ์ฐ์ ์๋ํ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง:
- ๋งค์ฐ ์งง์ ์ฌ์ดํด ํ์
- ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋
- ์ ๋ฐํ ๋๊ธฐํ
์์ฝ
์ด๋ฌํ ๋ค์ํ ํต์ ๋ฐฉ์๋ค์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ๊ณผ ํน์ ์ฉ๋์ ๋ง๊ฒ ์ค๊ณ๋์์ต๋๋ค. ์์คํ ์๊ตฌ์ฌํญ๊ณผ ํ๊ฒฝ์ ๋ฐ๋ผ ์ ์ ํ ํต์ ๋ฐฉ์์ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณ ์ ๋ฐ์ดํฐ ์ ์ก๊ณผ ์ค์๊ฐ ํต์ ์ด ํ์ํ ๊ฒฝ์ฐ EtherCAT์ด๋ SERCOS๋ฅผ ๊ณ ๋ คํ ์ ์์ผ๋ฉฐ, ๋จ์ํ๊ณ ์ ๋น์ฉ ์๋ฃจ์ ์ด ํ์ํ ๊ฒฝ์ฐ AS-Interface๋ฅผ ์ ํํ ์ ์์ต๋๋ค.