📑 개요 | EDUKiT을 활용하여 디지털 트윈 화면 및 MES 서비스, 원격 제어 시스템 구축 |
---|---|
📅 진행기간 | 2022/03/16 ~ 진행 중 |
🛠 사용 기술 | Node.js, Sequelize, Vue.js, PostgreSQL, InfluxDB, Grafana, .NET, MQTT. OpenCV |
🤹♀️ 팀 구성 | Back-End 1명 |
Infra & sub_Back-End 1명 | |
Front-End 1명 | |
IoT & sub_Front-End 1명 | |
🚩 관련 활동 | UVC 디지털 트윈 부트캠프 |
🔗 링크 | 본 문서의 원본 링크는 https://joyful-ji0.develofolio.com/ - Projects에서 찾으실 수 있습니다. 더 자세한 내용을 확인할 수 있습니다. |
계획문서 첨부
사용대상
제공 서비스
서비스 화면
로그인 후 메인 대쉬보드 화면
작업 지시서 등록 및 작업현황 확인 화면
계획문서 - 프로세스 구조도와 서비스 플로우차트 작성
SmartConnector 프로그래밍 수정을 통해 MQTT 통신을 통한 기기 제어 기능 구현
Web 서버에서 Publish 하는 시작, 정지, 리셋 등에 해당하는 메세지를 받아 PLC 해당 메모리에 write
Subscribe 중인 topic에 해당하는 메세지 들어오면 처리하여 PLC에 write > 기기 동작 제어
hehe-front-iot\edge\SmartConnector\Program.cs
mqttClient.Subscribe(new string[] { edgeConfigResult.FromOutside }, new byte[] { 0 });
mqttClient.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
...
private void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
string ReceivedMessage = Encoding.UTF8.GetString(e.Message);
// Console.WriteLine( "ReceivedMessage = " + ReceivedMessage); // {"tagId":"37", "value":"1"}
XGTClass xGTClass = new XGTClass(edgeConfigResult.EdukitIP, 2004);
XGTWrite(xGTClass, ReceivedMessage);
}
private void XGTWrite(XGTClass xGTClass, string ReceivedMessage)
{
xGTClass.Connect(edgeConfigResult.EdukitIP, 2004);
// 쓸 데이터를 XGTAddressData로 생성
XGTAddressData pAddress2 = new XGTAddressData();
dynamic test = JsonConvert.DeserializeObject(ReceivedMessage); // 여기서 json 형식으로 변환
if (test.tagId == "1") //start
{
if (test.value == "0")
{
pAddress2.Address = "0";
pAddress2.Data = "0";
xGTClass.Write(XGT_DataType.Bit, pAddress2, XGT_MemoryType.SubRelay_M, 0);
}
else if (test.value == "1")
{
pAddress2.Address = "0";
pAddress2.Data = "1";
xGTClass.Write(XGT_DataType.Bit, pAddress2, XGT_MemoryType.SubRelay_M, 0);
}
}
else if (test.tagId == "50") //stop
{
...
Vision 카메라를 통한 주사위 값 인식 및 해당 값 PLC에 전달
hehe-front-iot\edge\vision\DiceValue.py