본문 바로가기
반응형

PLC 전기제어 기술자료/샘플 프로그램 & TIP11

[GOT] 스크립트를 활용한 I/O 모니터링 화면 샘플 I/O 체크를 위한 모니터링 화면을 위해 베이스화면을 국별로 그리지 않으셨나요? 베이스화면에 윈도우를 중첩해서 그리셨나요? 그러면 이제 그렇게 하지 않으셔도 됩니다. 스크립트를 활용하여 베이스 스크린 한화면에서 오프셋 기능을 구현하여 램프와 텍스트를 띄울수 있으니까요. 아래 스크립트와 작화 파일 샘플을 공유드리니 참조해서 아이오 화면 그릴때의 그 노가다, 줄여보시길 바랍니다. // Data Type : Bin / 16bit / Signed // [w:GD1000] : IO Module No. // [w:GD1001] : IO Station No. // [w:GD1010] : Input(X) Display Lamp Bit // [w:GD1012] : Output(Y) Display Lamp Bit // [.. 2024. 1. 26.
[PROFACE] 스크립트를 활용한 I/O 모니터링 화면 샘플 I/O 체크를 위한 모니터링 화면을 위해 베이스화면을 국별로 그리지 않으셨나요? 베이스화면에 윈도우를 중첩해서 그리셨나요? 그러면 이제 그렇게 하지 않으셔도 됩니다. 스크립트를 활용하여 베이스 스크린 한화면에서 오프셋 기능을 구현하여 램프와 텍스트를 띄울수 있으니까요. 아래 스크립트와 작화 파일 샘플을 공유드리니 참조해서 아이오 화면 그릴때의 그 노가다, 줄여보시길 바랍니다. // Data Type: Bin / 16bit / Signed // // [w:[#INTERNAL]LS1000] : IO Module No. // [w:[#INTERNAL]LS1001] : IO Station No. // // [w32s:[#INTERNAL]LS1010] : Input(X) Display Lamp Bit // [w3.. 2024. 1. 26.
[MELSEC] Q 시리즈 에서 PID 제어를 하는 두가지 예제 Q 시리즈에서 지원하는 PID 명령어는 관련 매뉴얼을 보면 자세히 나옵니다. Q에서 지원하는 PID 명령어의 두가지 샘플을 간단하게 업로드하니 스터디에 참조하시면 좋을것같네요. Q, L시리즈 PLC에서 지원하는 PID용 제어데이터 설정펑션 PIDINIT 과 연산명령어 PIDCONT 를 이용한 예제입니다. 기본적으로는 0~2000의 분해능으로 설정값(SV)과 조작량(MV)으로 PID 제어가 가능합니다. 이를 더 확장하여 사용하기를 원한다면 완전미분 리미트제한설정용 스페셜레지스터(SD774)의 루프1에 해당하는 비트를 1로 써주어 조작량(MV)과 설정값(SV)의 리미트를 해제할수있습니다. 기본값의 0~2000 제어량을 32767 까지 확장하여 사.. 2023. 7. 18.
[MELSEC] 다른 POU폴더에서 정의된 포인터(P) 서브루틴을 호출하는 방법 PLC 프로그램을 효율적으로 설계하기 위해 포인터 P로 지정한 서브루틴 프로그램을 콜 명령어를 이용해서 호출하는 경우가 많습니다. 보통의 경우는 같은 POU 프로그램 내부에 포인터 P를 지정하여 서브루틴을 호출할것입니다. 그럼 같은 기능의 서브루틴을 POU 프로그램 별로 복사를 해야하는가? 꼭 그렇지만은 않습니다. 다른 POU 폴더에서 정의된 서브루틴을 호출하는 두가지 방법에 대해서 알아봅니다. 우선 FUNC POU폴더를 하나 만들어 두개의 간단한 함수형 서브루틴을 정의합니다. 덧셈 서브루틴(P0) 과 뺄셈 서브루틴(P1) 두개를 정의합니다. P0 을 호출하면 인수1 과 인수2를 덧셈하여 인수3 으로 리턴값을 줄것입니다. P1 을 호출하면 인수1 과 .. 2023. 3. 4.
[MELSEC] (미립자팁) 선택 영역의 접점 어드레스 일괄 변경 대규모 프로그램을 설계할때 일괄 변경을 사용하지 않으면 많은 업무에 치여 버릴것입니다. 일괄변경은 기능의 이름에서 알수있듯이 접점들의 일정 어드레스부터 원하는 어드레스까지 한꺼번에 여러 어드레스를 변경할수 있는 기능이죠. 하지만 원하지않는 영역의 접점까지 바뀌어버리지는 않으셨나요? 이제 원하는 영역의 접점만 일괄변경 기능으로 바꾸시기 바랍니다. 원하는 영역을 마우스로 드래그한뒤 찾기창(Ctrl+F) 을 열어 일괄 변경(All Replace) 를 해봅니다. 드래그 한영역의 어드레스만 변경할건지 물어보는 윈도우가 뜨는데 예(Y)를 눌러 진행하면 드래그영역의 접점들의 어드레스만 변경된것을 확인할수 있습니다. 그럼 편안한 래더 코딩 하세요~ :) 2022. 5. 19.
[MELSEC] (미립자팁) CC-LINK IE CONTROL 통신으로 인해 스캔타임이 느릴때 조치할만한 방법 (고정주기스캔설정) MELSEC PLC간 손쉽게 데이터와 비트정보를 주고받을수 있게 도와주는 필드버스 CC-LINK IE 를 많이 사용하실것입니다. 매 스캔마다 CC-LINK IE 통신용 버퍼메모리에 데이터를 읽고 쓰고 PLC의 내부영역어드레스로 오토리프래쉬 해주어 파라미터에 영역만 설정하면 논코딩으로 PLC끼리 교신이 가능하죠. 하지만 이로인해 통신영역이 크면 클수록 PLC는 고달파합니다. 서로 읽고, 쓰고 주고받는 영역이 1만워드정도가 넘어서 총 2만워드 이상 통신시 CC-LINK IE의 영역을 오토리프래시 하는데에만 약 10ms 정도의 스캔타임이 소모됩니다. 이는 PLC가 래더 프로그램을 소화하는데 스캔타임이 5~10ms 인 PLC 라고 가정한다면 약 최소 100% 에서 200% 까지 스캔타임이 증가함을 의미합니다. .. 2022. 5. 14.
[MELSEC] (미립자팁) CPU 용량이 부족할 때 급하게 응급조치할 만 한 방법 구형 PLC로 제작한 옛날 설비를 개조하러 갔더니 이게 뭐람? 용량이 부족하다고? 큰일났네! 프로그램 다 찾아서 지워야하나? 이런 경험 한두번쯤은 있으실겁니다. 이런 경우 한번쯤 해볼만한 조치방법을 소개해드립니다. 기본적으로 PLC는 온라인 쓰기가 가능하여 구동 중인 설비도 손쉽게 디버깅 할수 있는 장점이 있죠. 하지만 이런것이 가능한 것은 온라인 런중 쓰기용 버퍼메모리를 상시 잡고있기 때문입니다. 런중 쓰기를 많이 하다보면 이 메모리를 다 사용했다고 알람 메시지를 보신적도 있으실겁니다. 이 영역이 POU 프로그램단위 별로 기본값으로 500스텝으로 잡혀있으니 이를 줄인다면 생각보다 많은 영역을 확보 할수있게됩니다. 프로그램 온라인 쓰기 메뉴에서 Detail 을 누르.. 2022. 2. 25.
[MELSEC] PLC에서 스톱워치를 구현하는 두가지 방법 PLC에서 스톱워치를 구현하거나 시간을 측정하거나 하는 일은 공정을 구현하면서 필요가 아니라 필수가 되어버린지 오래입니다. 간단하게 스톱워치를 구현하는 두가지 샘플을 올려드리니 참조해보세요. #1. 티칭타이머 TTMR 펑션을 활용하는 방법 티칭타이머 TTMR은 파라미터에 의해 타이머의 단위를 손쉽게 변경하고, 타이머의 초기화에 대하여 큰 고민없이 쉽게 구현할수 있는 명령어입니다. D0 데이터디바이스에 타이머를 실행할 경우 [TTMR D0 상수] 형식으로 써주게 되는데 상수자리에 파라미터에 0을 쓰면 초단위 타이머, 1을 쓰면 0.1초 타이머, 2를 쓰면 0.01초 타이머가 됩니다. 그리고 TTMR펑션을 실행할때마다 자동으로 D0은 0부터 초기화되어 시간을 측정하게됩니다. 많은 로직들이 단 한줄로 처리가 .. 2022. 2. 24.
[MELSEC] (미립자팁) 랜덤값을 음수를 포함하여 얻는 방법 (-32768 ~ 32767) 미츠비시에는 RND 명령어를 통해 랜덤값을 얻을수 있지만 양수의 값만 랜덤으로 얻을수 있습니다. 하지만 음수의 값은 얻을수 없어 살짝 불만입니다. 음수의 값까지 포함하여 얻고 싶다면 이렇게 하도록 합니다. 두개 이상의 RND 결과를 더하면 복잡한 계산 없이, 손쉽게 음수값을 포함한 랜덤 결과를 얻을수 있습니다. 일부러 16비트 숫자를 오버플로우 시켜 음수가 나오도록 유도합니다. 혹은 곱하는것도 좋습니다. 2022. 2. 19.
[MELSEC] 콤마(,)로 나열된 데이터를 분리하는 방법 (INSTR, MIDR명령어) 계측기나 다양한 검사장비들과 데이터를 송수신하다보면 손쉽게 만나는 데이터 형식으로 콤마(,)로 정리된 문자열입니다. 이제는 PLC에서도 이렇게 콤마(,)로 구분되어 수신된 데이터를 정리하여 다시 표현 해야하는건 요즘은 너무나도 흔한 일이 되어버린것 같습니다. 이런 경우 사용하면 좋은 명령어 문자열 검색 INSTR()와 문자열 추출 명령어 MIDR() 두가지를 소개합니다. 1. 문자열 검색 명령어 : INSTR() INSTR 명령어의 인수는 [ 검색문자, 기준문자열, 검색문자위치, 검색시작위치 ] 입니다. 테스트를 위해 "OK,162.5,165.8,126.1" 이라는 예문을 D0 에 저장하고 콤마(,) 를 찾기위해 D1000에 콤마("," 0x2C) 를 저장하여 INSTR 명령어를 사용하여 D10에 찾은 .. 2022. 1. 22.
[Gx Works2] 스테이트먼트 (Statement) 를 활용하자 Gx Works2로 코딩을 하실때 스테이트먼트를 어디까지 활용하시는지요? 프로그램을 구분시켜주는 주석의 역할을 하는 스테이트먼트만 잘 활용하면 가독성이 보다 좋은 프로그램을 설계 할수 있습니다. 1. 스테이트먼트는 Q PLC에 프로그램 삽입시 래더와 함께 메모리에 저장됩니다. 2. Gx Works2에서 Ctrl+L 을 누르면 현재 래더프로그램에서 사용한 스테이트먼트를 리스트로 확인할수있습니다. 3. 스테이트먼트의 색상을 교체하여 가독성을 향상시킬수 있습니다. (저는 보통 노란색이나 보라색을 많이 씁니다.) 4.스테이트먼트는 래더 맨처음부에서 엔터를 친후 ; (세미콜론) 만 붙이면 바로 달수있습니다. 5. 스테이트먼트에 ;[Title] 대소문자 구문하여 작성하면 래더프로그램을 폴더링하여 관리할수있습니다. .. 2022. 1. 22.
반응형