Link Search Menu Expand Document

MES Project

시작하면서…

첫번째로 하게 된 단체 프로젝트로 MES 생산관리 시스템을 개발하는 프로젝트를 시작하게 됐다. 우선 MES부터 뭔지부터 잘 모르는 상태…여서 MES가 뭔지, 어떤 체계로 구성되는지부터 공부하고 개발을 시작하려고 한다. 선생님이 나눠주신 파일들과 유튜브를 보면서 대충 감을 잡아나가는 중이지만 제대로 정리를 하고 나가야 나중에 딴길로 세지 않을 것 같아서 정리해보려고 한다.

MES Basic

What is MES?

제품주문에 의한 착수에서 완성품의 품질검사까지 전 생산활동을 관리하는 시스템

생산 현장의 각종 정보, 즉 생산실적, 작업자활동, 설비가동, 제품 품질정보 등을 실시간으로 수집하여 집계/분석/모니터링 및 생산공정을 제어

고품질의 수익 지향적 생산체제를 갖추게 하는 통합 생산관리시스템

생산 현장에서의 생산계획의 실행상태를 실시간으로 정확하게 관리함으로써 생산성을 향상시키고 생산제품의 품질 향상을 기대하는 고객사의 요구사항이 증대됨에 따라 기업의 업종과 현장의 특성을 반영하고 관리측면에서의 필요사항을 고려하여 구축되는 시스템

즉, MES는 제품주문에서 최종 제품의 완성까지 생산활동의 최적화를 위해 제조현장에서 발생하는 다양한 상황에 유기적으로 신속하게 대응할 수 있는 관리 지원 시스템

MES의 3계층 구조

장비, Moving 설비, PLC, 각종 device 등을 제어해 자동화를 가능하게 해주는 자동화 시스템과 인터페이스를 하고, 계획(Planning)시스템 또는 전사적 자원관리(ERP)시스템과 인터페이스를 하여 전사적인 자원관리부터 최하위 생산설비까지의 제어를 통합시켜주는 역할을 함

MES의 기능

MES는 주문 받은 제품이 최종 제품이 될 때까지 생산활동의 최적화를 위해

①정보를 제공

②정확한 실시간 데이터로 공장활동을 지시/시작

③공장활동에 대해 대응

④공장활동의 보고

MES는 양방향 통신으로 기업 전체 및 Supply Chain에 걸쳐 생산 활동에 대한 중요한 정보 들을 제공하며

또한 생산 현장에서 발생하는 데이터들을 보다 유용하고 체계적으로 제공하여 정형화(Formalization)하는 통합정보시스템 이라고도 할 수 있음

MES도입시 기대효과

MES 참고자료

MES란무엇인가.pdf

MES 자료화면 예시.pptx

iot활용 실시간 공정관리 추진사례.pdf

중소 제조기업 보급용 한국형 스마트공장 플랫폼 구축 및 시범 적용.pdf

MES와 FEMS를 활용한 생산공장 에너지 효율화.pdf


Login & Register

첫 번째로 모든 어플리케이션에서 필수적인 요소인 로그인, 회원가입 시스템을 구축했다.

처음으로 팀 프로젝트를 진행하기로 했을 떄 처음으로 우리들끼리 한 과제는 로그인, 회원가입을 각자 복습 형식으로 구축하는 것이였다. 나도 나 나름대로 구축하긴 했지만 조장님의 코드가 더 좋았고 나중에 유지보수하기 쉬울 것 같아서 다들 조장님 코드로 회원가입, 로그인 프로세스를 진행하기로 했다. 그래서 그 소스코드 위에 게시판을 얹기 위해 전체적인 프로세스에 대한 이해를 높히기 위해 정리를 해본다

Flow

  1. join.view페이지 : form 으로 값 보내기 (.do)

  2. web.xml

    web.xml 파일에서 servlet - init-param으로 commandHandlerURI 파일을 찾게 함(.properties)

    ▸.do값이 어디로 가는지 확인

     <servlet>
         <servlet-name>ControllerUsingURI</servlet-name>
         <servlet-class>member.controller.ControllerUsingURI</servlet-class>
         <init-param>
             <param-name>configFile</param-name>
             <param-value>/WEB-INF/commandHandlerURI.properties</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
     </servlet>
    
  3. commandHandlerURI.properties

    /join.do=member.command.JoinHandler 처럼 어느 클래스 파일을 찾으러 갈지 확인

  4. JoinHandler.java

    CommandHandler(모든 핸들러의 상위객체)를 implements하는 JoinHandler

    GET, POST 방식에 따라 처리해야 하는 형식을 정의함

    Post방식일때 만 값을 넣어주고, 유효성 검사를 한 후 데이터베이스에 넣어주기(JoinService.java)

  5. JoinService.java

    1. MemberDAO객체를 생성

    2. join메소드를 정의함 : id중복값을 확인한 후 문제가 없다면 데이터베이스 커넥션을 실행

Login

Database Create

create table member (
   memberid varchar2(50) primary key,
   name varchar2(50) not null,
   password varchar2(10) not null,
   regdate date not null);

Board

Before Starting

내가 메인으로 맡은 파트는 MES에서 메인이 될 공지사항 테이블 디자인이다. 우선 메인 테이블 디자인부터 차근차근 진행해가면서 살을 붙여나가는 식으로 진행할 예정이다. 화이팅!

Index.jsp

일단 먼저 메인 공지사항 테이블은 index페이지에서 작업을 해야해서 index.jsp를 수정해줬다. 부트스트랩을 많이 사용해보지 않아서.. 음 css가 어떻게 될지 잘 모르겠지만 일단 데이터를 받아오는 부분만 처리 해줬다.

Database Create

먼저, 테이블을 크게 잡고 필요한 부분만 보여주는게 나중에 수정하기 용이할 것 같아서 가장 필요하고, 중요한 데이터가 되는 부분만 테이블로 잡았다.

create table board(
    boardNum int,
    boardTitle varchar2(50) not null,
    boardContent varchar2(3000) not null,
    memberid varchar2(50) not null,
    boardDate date not null,
    boardFile varchar2(50),
    boardAvailable int,
    boardReadCount int default 0,
    primary key(boardNum)
)

board.class

package mainboard.model;

import java.util.Date;

//Board 테이블에서 데이터를 받을 객체
public class Board {
	
	private int boardNum; 
	private String boardTitle;
	private String boardContent;
	private String memberid;
	private Date boardDate;
	private String boardFile;
	private int boardAvailable;
	private int boardReadCount;
	
	public int getBoardNum() {
		return boardNum;
	}
	public void setBoardNum(int boardNum) {
		this.boardNum = boardNum;
	}
	public String getBoardTitle() {
		return boardTitle;
	}
	public void setBoardTitle(String boardTitle) {
		this.boardTitle = boardTitle;
	}
	public String getBoardContent() {
		return boardContent;
	}
	public void setBoardContent(String boardContent) {
		this.boardContent = boardContent;
	}
	public String getMemberid() {
		return memberid;
	}
	public void setMemberid(String memberid) {
		this.memberid = memberid;
	}
	public Date getBoardDate() {
		return boardDate;
	}
	public void setBoardDate(Date boardDate) {
		this.boardDate = boardDate;
	}
	public String getBoardFile() {
		return boardFile;
	}
	public void setBoardFile(String boardFile) {
		this.boardFile = boardFile;
	}
	public int getBoardAvailable() {
		return boardAvailable;
	}
	public void setBoardAvailable(int boardAvailable) {
		this.boardAvailable = boardAvailable;
	}
	public int getBoardReadCount() {
		return boardReadCount;
	}
	public void setBoardReadCount(int boardReadCount) {
		this.boardReadCount = boardReadCount;
	}
	
}

###


이 웹사이트는 jekyll로 제작되었습니다. Patrick Marsceill, Distributed by an MIT license.