글 목록

전체 글

103개의 글

PLC 사이클 타임으로 설비 이상 감지하기 — 중앙값·IQR·EWMA [설비 신호 4]

시리즈 안내 · 이 글은 설비 신호 4입니다.예지보전·설비 데이터 전체 글 보기 →완료 신호는 정상인데 설비가 조금씩 느려질 때설비는 멈추지 않았고 알람도 없습니다. 그런데 같은 제품을 만들 때 걸리는 시간이 31초, 32초, 34초처럼 조금씩 길어질 수 있습니다. 한 번의 사이클만 보면 작업 편차처럼 보이지만, 며칠치 흐름으로 놓으면 설비가 보내는 초기 신호일 수 있습니다.시작 신호와 완료 신호가 있다면 두 시각의 차이로 사이클 타임을 만들 수 있습니다. 문제는 평균 하나만 그어 놓으면 제품 종류, 교체 작업과 수동 운전까지 모두 섞인다는 것입니다. 정상적인 조건 차이가 이상으로 잡히고, 긴 정지가 평균을 끌어올리기도 합니다.이번 글에서는 유효한 사이클을 먼저 정의한 뒤 중앙값과 IQR로 튀는 값을 찾..

MSSQL 연결 안 됨 해결 — TCP/IP·1433 포트·방화벽 점검 [MSSQL 32]

시리즈 안내 · 이 글은 MSSQL 32입니다.SQL·MES 전체 글 보기 →연결 오류에서 방화벽부터 끄면 안 되는 이유SSMS에 서버 이름을 넣었는데 한참 기다린 뒤 “서버를 찾을 수 없거나 액세스할 수 없습니다”라는 메시지가 뜹니다. 이때 가장 먼저 나오는 말이 “1433 포트를 열어 보자”입니다.그런데 SQL Server 서비스가 멈춰 있거나 TCP/IP가 꺼져 있다면 포트를 열어도 달라지는 것이 없습니다. 명명된 인스턴스가 동적 포트를 쓰는데 1433만 확인하고 있을 수도 있습니다. 방화벽 전체를 끄면 원인은 그대로인데 보호만 사라집니다.이번 글에서는 서비스 실행 → 로컬 연결 → TCP/IP → 실제 수신 포트 → 원격 포트 테스트 → 로그인 순서로 확인합니다. 어디까지 성공했는지를 기준으로 다..

Python에서 MSSQL 연결하기 — pyodbc 설치·연결 오류 해결 [Python 실무 4]

시리즈 안내 · 이 글은 Python 실무 4입니다.Python Automation 전체 글 보기 →pyodbc를 설치했는데도 연결되지 않을 때pip install pyodbc까지 끝냈는데 SQL Server에는 연결되지 않을 때가 있습니다. 어떤 PC에서는 IM002가 뜨고, 드라이버를 설치하고 나면 이번에는 08001, 서버에 도착하고 나면 18456이 나옵니다.오류 메시지가 계속 바뀌면 문제가 더 생긴 것처럼 보입니다. 그런데 연결 과정으로 보면 한 단계를 통과할 때마다 다음 오류가 보이는 것입니다. Python 패키지, ODBC Driver, 서버·포트, 암호화와 로그인은 서로 다른 층입니다.이번 글에서는 이 순서를 그대로 따라갑니다. 먼저 설치된 드라이버를 확인하고, Windows 인증으로 가장..

Tableau 날짜별·월별 그룹화 — DATEPART·DATETRUNC 차이 [Tableau 6]

시리즈 안내 · 이 글은 Tableau 6입니다.Tableau 전체 글 보기 →월별 차트인데 여러 해의 1월이 합쳐진 이유Tableau에서 날짜 필드를 열에 놓고 월을 선택했더니 2025년 1월과 2026년 1월이 하나로 합쳐질 수 있습니다.이 경우 월을 1~12라는 날짜 부분으로 사용했을 가능성이 큽니다. 월별 추세를 보려면 2026-08-01처럼 연도까지 포함된 날짜 값으로 묶어야 합니다.시리즈 안내 이 글은 「Tableau 실무」 시리즈의 6번째 글입니다. 5편에서 비어 있는 값을 구분했다면, 이번에는 값은 있는데 날짜 수준을 잘못 골라 서로 다른 해의 같은 달이 합쳐지는 문제를 다룹니다.DATEPART: 날짜의 한 부분을 숫자로 반환DATEPART('month', [기록시각])결과는 1부터 12까..

Windows 작업 스케줄러로 Python 자동 실행하기 [데이터 자동화 6]

시리즈 안내 · 이 글은 데이터 자동화 6입니다.예지보전·설비 데이터 전체 글 보기 →터미널에서는 되는데 예약 실행만 실패하는 이유Python 파일을 직접 실행하면 정상인데 Windows 작업 스케줄러에서는 바로 종료되거나 결과 파일이 생기지 않을 수 있습니다.가장 흔한 차이는 다음과 같습니다.작업 스케줄러의 현재 작업 폴더가 다름사용한 Python 인터프리터가 다름가상환경이 적용되지 않음로그인한 사용자와 작업 실행 계정의 권한이 다름네트워크 드라이브와 환경변수를 찾지 못함오류가 화면에 표시되지 않고 종료됨따라서 예약 실행 전에 경로와 로그를 명시해야 합니다.시리즈 안내 이 글은 「설비 데이터 수집·자동화」 시리즈의 6번째 글입니다. 5편에서 CSV를 안정적으로 읽었다면, 이번에는 그 코드를 사람이 로그..

MSSQL 로그인 실패 18456 해결 — 인증 모드·사용자 권한 점검 [MSSQL 31]

시리즈 안내 · 이 글은 MSSQL 31입니다.SQL·MES 전체 글 보기 →같은 18456이라도 원인은 하나가 아니다SSMS에서 SQL Server에 연결할 때 다음 오류가 나타날 수 있습니다.Login failed for user 'blogdemo_login'.Microsoft SQL Server, Error: 18456클라이언트 화면은 보안을 위해 자세한 실패 원인을 숨기는 경우가 많습니다. 비밀번호만 반복해서 입력하기보다 SQL Server 오류 로그에 기록된 State와 이유를 확인해야 합니다.시리즈 안내 이 글은 「MSSQL 입문·실무」 시리즈의 31번째 글입니다. 30편에서 설치 로그로 실패 위치를 찾았다면, 이번에는 서버는 살아 있는데 로그인 단계에서 거절되는 경우만 따로 봅니다.가장 먼저..

PLC D메모리 쓰기를 하지 않은 이유 — 읽기 전용과 안전 설계 [PLC·FINS 12]

이 글은 PLC 쓰기 방법을 안내하는 글이 아닙니다. 실제 프로젝트에서 D메모리 쓰기를 검토했지만 가동 설비에는 한 번도 실행하지 않은 이유를 기록한 회고입니다. 공개 글에는 외부에서 그대로 재현할 수 있는 명령 코드·메모리 주소·프레임·절환 순서를 싣지 않습니다.시리즈 안내 · PLC·FINS 통신 실무 12편입니다.PLC·FINS 전체 목차 보기 →기술적으로 가능했지만 하지 않았다실측 전류를 읽으려면 장치의 모니터 선택이 전압에서 전류로 바뀌어야 했습니다. 설정값 하나를 바꾸면 될 가능성은 확인했지만, 그것은 관측이 아니라 제어 개입이었습니다. 당시에는 라인이 가동 중이었고 정지 시험 창, 승인 주체, 원복 절차가 정해져 있지 않았습니다.무엇보다 예지보전 수집기가 제어 권한을 갖지 않는다는 점이 현장..

Python으로 여러 엑셀 파일 합치기 — pandas·openpyxl 비교 [Python 실무 3]

시리즈 안내 · 이 글은 Python 실무 3입니다.Python Automation 전체 글 보기 →매일 쌓이는 엑셀을 하나씩 복사하지 않기설비별·날짜별 엑셀 파일이 한 폴더에 쌓이면 월간 보고서를 만들 때 여러 파일을 열어 한 시트로 복사하게 됩니다.데이터 구조가 같은 파일이라면 pandas로 읽어 concat()하는 방식이 가장 단순합니다. 반대로 기존 양식의 셀 서식과 수식을 유지하는 것이 목적이라면 openpyxl이 더 적합합니다.시리즈 안내 이 글은 「Python 실무」 시리즈의 3번째 글입니다. 2편에서 한 파일의 행과 열을 정리했다면, 이번에는 같은 구조의 일일 파일을 월간 데이터 한 장으로 이어 붙입니다.pandas와 openpyxl 선택 기준목적추천 도구같은 열 구조의 데이터를 세로로 합..