본문 바로가기

Program31

[Visual Studio] 프로젝트 이름 바꾸기 (프로젝트 파일을 로드할 수 없습니다) [개요] 프로젝트를 여러개 진행하다보면 개발 기간도 촉박하고 고객사가 제시하는 명확한 UI 디자인이 없는 경우가 허다하다. 그래서 기존 완료된 프로젝트의 인터페이스를 복사해와서 작업을 하는 경우가 있는데, 이럴 경우 솔루션과 프로젝트, 네임스페이스가 중구난방으로 섞여있어 오류를 뱉는 경우도 있고, 관리하기 어렵다. Visual Studio 최근 문서 불러오기에서 솔루션 이름으로 프로젝트 파일을 여는것도 경로를 항상 확인해야해서 번거롭다. 이를 해결하기 위해 솔루션 - 프로젝트 - 네임스페이스를 통일화하는 작업을 진행해본다. (단, 솔루션에 프로젝트가 다수 존재하거나, 프로젝트가 모듈화 되어있는 경우 솔루션 네임만 변경하는것을 추천한다.) [문제 상황] '솔루션의 프로젝트 중 하나 이상이 제대로 로드되지 .. 2023. 11. 15.
[LS PLC / C#] XGB/XGT FEnet Socket 통신 (2) - Header구성 이전글에서 XGB와 XGT 차이점, 그리고 대체 내 소켓프로그램은 왜 쓰레기값을 들고 오는가에 대해 잠깐 살펴봤다. 뭐 쓰레기값이던 말든 뭔가 들고 오는 거 자체가 안 되는 사람도 있을 테니까 그 사람들을 위한 정보부터 소개한다. 대부분의 PLC 소켓통신이 그렇듯 소켓에 헤더를 달아서 보내줘야 PLC도 헤더를 참조해서 리시브를 던져준다. (근데 이놈은 왜 막 주고 난리..) 헤더 타입에는 총 네구간이 있는데 중요한 건 'Company Header'와 'Data Type', 'Data' 세 가지이다. 쓰다 보니 다 중요하네? Company Header에는 통신하고자 하는 PLC 정보가 포함된다. Data Type과 Data는 이전 문서에서도 설명 했듯 연속으로 읽어올 경우 Byte로 구현해야 하기 때문에 .. 2023. 10. 24.
[LS PLC / C#] XGB/XGT FEnet Socket 통신 (1) 서론 현재 진행중인 프로젝트가 LS PLC XGT를 사용중이다. 이놈 보통놈들과 다르게 까다롭다. TCP 연결 개수 제한도 걸려있고 콜백을 안뱉고 소켓을 공중분해시켜버려 시퀀스상 필요로 동기로 소켓구현을 하였는데 Exception이 터져버리며 초단위동안 하트비트를 못읽어와 알람을 띄워주신다. 심지어는 같은 PLC에 설비가 여러개 묶여있으면 A설비에서 A1 달라하고 B설비에서 B1달라하는데 B설비가 때마침 달라한다고 B설비한테 A1을 줘버린다. 패킷분석 돌려봐도 원인을 찾을수가 없다. PLC제어 담당자는 자기도 모른단다 자기는 분명 비트 잘 올라오니 이상없단다. 배째라식이고 고객사는 열불터지니 누구라도 해결은 해야겠고 그게 결국 나라는게 스트레스를 받는다. 분명 헤더가 있으면 응답을 줄 때 매칭을 해서 줘.. 2023. 10. 18.