본문 바로가기
반응형

PLC 전기제어 기술자료22

[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] PLC 프로그램을 함수화 해보자 -7- (모든 CRC-16 코드 생성) 지난 글에서 CRC-16/MODBUS 를 생성하는 함수를 만들었었습니다. 이를 통해서 시리얼통신을 이용하여 MODBUS RTU 프로토콜로 교신시 CRC-16 체크섬 코드를 생성하여 송수신 할수 있죠. 하지만 CRC-16 코드는 MODBUS만 있는게 아닙니다. MODBUS 프로토콜에서 사용하는 다항식 0x8005 를 사용하는 CRC-16 알고리즘만 살펴봐도 USB, BUYPASS, ARC, MAXIM 등 다양하게 있고 CCITT 로 대표되는 다항식 0x1021 을 사용하는 CRC-16 알고리즘도 CCITT-FALSE, AUG-CCITT, XMODEM, GEN.. 2023. 5. 9.
[MELSEC] 다른 POU폴더에서 정의된 포인터(P) 서브루틴을 호출하는 방법 PLC 프로그램을 효율적으로 설계하기 위해 포인터 P로 지정한 서브루틴 프로그램을 콜 명령어를 이용해서 호출하는 경우가 많습니다. 보통의 경우는 같은 POU 프로그램 내부에 포인터 P를 지정하여 서브루틴을 호출할것입니다. 그럼 같은 기능의 서브루틴을 POU 프로그램 별로 복사를 해야하는가? 꼭 그렇지만은 않습니다. 다른 POU 폴더에서 정의된 서브루틴을 호출하는 두가지 방법에 대해서 알아봅니다. 우선 FUNC POU폴더를 하나 만들어 두개의 간단한 함수형 서브루틴을 정의합니다. 덧셈 서브루틴(P0) 과 뺄셈 서브루틴(P1) 두개를 정의합니다. P0 을 호출하면 인수1 과 인수2를 덧셈하여 인수3 으로 리턴값을 줄것입니다. P1 을 호출하면 인수1 과 .. 2023. 3. 4.
[MELSEC] PLC 프로그램을 함수화 해보자 -6- (CRC-16/MODBUS 코드 생성) PLC는 손쉽게 그림 그리듯 래더라는 도식화된 독특한 언어체계와 PLC 메이커에서 제공하는 펑션, 명령어들을 이용하여 프로그램 할수 있는 뛰어난 자동화 제어장치입니다. 하지만 단점이 있으니 설비의 규모가 커질수록 같은 동작의 프로세스라고 할지라도 프로그램을 여러 유니트에 맞추어 일일이 어드레스를 변경하거나 복사해가며 번거롭게 코딩을 해주어야 한다는 점입니다. PLC에서도 간단한 기능들은 CALL이나 XCALL 문을 이용하여 반복적으로 사용할수 있는 프로그램을 함수화 할수 있으니 이를 활용하면 보다 프로그램이 간단해 질것입니다. 이번에는 모드버스RTU 시리얼통신을 할때면 무조건 등장하여 많은 사람들의 골머리를 썩게 만들었던 CRC-.. 2023. 3. 1.
[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] PLC 프로그램을 함수화 해보자 -5- (랜덤문자열 생성) PLC는 손쉽게 그림 그리듯 래더라는 언어를 이용하여 프로그램 할수 있는 뛰어난 자동화 제어장치입니다. 하지만 단점이 있으니 프로그램을 여러 유니트에 맞추어 어드레스를 변경해가며 일일이 복사해서 코딩을 해주어야 한다는 점입니다. PLC에서도 간단한 기능들은 CALL이나 XCALL 문을 이용하여 함수화 할수 있으니 이를 활용하면 보다 프로그램이 간단해 질것입니다. 이번에는 다섯번째로 다뤄볼 기능으로 네번째글에서 다뤘던 것처럼 비슷한 여러가지 테스트를 하다보면 문득 필요한 랜덤한 문자열 생성 입니다. 내가 원하는 문자의 갯수를 지정하여 랜덤한 문자열을 생성합니다. 이 또한 아주 편리합니다. CALL을 통해 함수 호출하고, 파라미터로는 생성할.. 2022. 4. 26.
[MELSEC] PLC 프로그램을 함수화 해보자 -4- (범위지정 랜덤값 생성) PLC는 손쉽게 그림 그리듯 래더라는 언어를 이용하여 프로그램 할수 있는 뛰어난 자동화 제어장치입니다. 하지만 단점이 있으니 프로그램을 여러 유니트에 맞추어 어드레스를 변경해가며 일일이 복사해서 코딩을 해주어야 한다는 점입니다. PLC에서도 간단한 기능들은 CALL이나 XCALL 문을 이용하여 함수화 할수 있으니 이를 활용하면 보다 프로그램이 간단해 질것입니다. 이번에는 네번째로 다뤄볼 기능으로 각종 테스트 하다보면 간간히 필요한 랜덤값 생성 입니다. 미츠비시 PLC에서 제공하는 랜덤명령어는 0 ~ 32767 의 정수형 값만 생성을 하기때문에 내가 원하는 값을 얻을려면 많은 연산을 해야합니다. 특히나 내가 원하는 영역의 값 (예를들어 -5 ~ 10) 을 지.. 2022. 4. 25.
[MELSEC] PLC 프로그램을 함수화 해보자 -3- (체크섬 생성) PLC는 손쉽게 그림 그리듯 래더라는 언어를 이용하여 프로그램 할수 있는 뛰어난 자동화 제어장치입니다. 하지만 단점이 있으니 프로그램을 여러 유니트에 맞추어 어드레스를 변경해가며 일일이 복사해서 코딩을 해주어야 한다는 점입니다. PLC에서도 간단한 기능들은 CALL이나 XCALL 문을 이용하여 함수화 할수 있으니 이를 활용하면 보다 프로그램이 간단해 질것입니다. 이번에는 세번째로 다뤄볼 기능으로 시리얼통신을 하다보면 은~그으은~히 스트레스가 되는 체크섬 Checksum 입니다. 이 기기, 저 기기 와 통신 프로토콜을 하다보면 가끔씩 튀어 나오는 존재라서 그때그때 프로그램하기 참 귀찮은 친구입니다. 그래서 체크섬 생성을 콜문형 함수화 해놓고 사용하기로 했습.. 2022. 2. 28.
[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] PLC 프로그램을 함수화 해보자 -2- (문자열 스플릿) PLC는 손쉽게 그림 그리듯 래더라는 언어를 이용하여 프로그램 할수 있는 뛰어난 자동화 제어장치입니다. 하지만 단점이 있으니 프로그램을 여러 유니트에 맞추어 어드레스를 변경해가며 일일이 복사해서 코딩을 해주어야 한다는 점입니다. PLC에서도 간단한 기능들은 CALL이나 XCALL 문을 이용하여 함수화 할수 있으니 이를 활용하면 보다 프로그램이 간단해 질것입니다. 이번에는 두번째로 다뤄볼 예문으로 지난번에 다루었던 SCALE 기능과 마찮가지로 과거에 제가 한번 다루었었던 콤마(,)로 문자열을 나누는 스플릿 기능을 XCALL을 활용하여 함수화 해봅니다. 해당 과거글을 참고해보시면 이해에 조금더 도움이 되실것입니다. 2022.01.22 - [PLC .. 2022. 2. 20.
[MELSEC] (미립자팁) 랜덤값을 음수를 포함하여 얻는 방법 (-32768 ~ 32767) 미츠비시에는 RND 명령어를 통해 랜덤값을 얻을수 있지만 양수의 값만 랜덤으로 얻을수 있습니다. 하지만 음수의 값은 얻을수 없어 살짝 불만입니다. 음수의 값까지 포함하여 얻고 싶다면 이렇게 하도록 합니다. 두개 이상의 RND 결과를 더하면 복잡한 계산 없이, 손쉽게 음수값을 포함한 랜덤 결과를 얻을수 있습니다. 일부러 16비트 숫자를 오버플로우 시켜 음수가 나오도록 유도합니다. 혹은 곱하는것도 좋습니다. 2022. 2. 19.
[MELSEC] PLC 프로그램을 함수화 해보자 -1- (스케일 변환) PLC는 손쉽게 그림 그리듯 래더라는 언어를 이용하여 프로그램 할수 있는 뛰어난 자동화 제어장치입니다. 하지만 단점이 있으니 프로그램을 여러 유니트에 맞추어 어드레스를 변경해가며 일일이 복사해서 코딩을 해주어야 한다는 점입니다. PLC에서도 간단한 기능들은 CALL이나 XCALL 문을 이용하여 함수화 할수 있으니 이를 활용하면 보다 프로그램이 간단해 질것입니다. 제가 과거에 한번 다뤄봤었던 입력값의 스케일 변환 출력 프로그램을 샘플로 XCALL을 활용한 펑션화하여 새롭게 업로드합니다. [참고글 : [래더] 스케일 변경 프로그램 [SCL 명령어, 래더시퀀스 2개 버전] https://cafe.naver.com/cplc/245772 [래더] 스케일 변경 프로.. 2022. 2. 19.
[MELSEC Q] (뻘짓주의) 스크린에 도트 스프라이트 애니매이션을 구현해보자? PLC에서 도트 픽셀의 좌표계 (X, Y) 와 도트애니메이션을 구현합니다. 주요 기능으로는 방향키를 조작하여 도트 픽셀 이미지의 위치를 변경할수 있습니다. 참고로 왜 이런 짓을 하느냐? 그건 아무도 몰?루 그냥 재밌으니까요... [ 좌표계 I/O Map ] X0, X1 : X좌표계 이동 (+1 / -1) X2, X3 : Y좌표계 이동 (+1 / -1) Y0 ~ YFF : 미니맵 좌표 표시등 Y100 ~ Y8FD : 메인 베이스화면 좌표 표시등 D0 : X좌표 D1 : Y좌표 D2 : 미니맵 X, Y 좌표 연산 D4 : 메인 베이스화면 X, Y 좌표 연산 [ 프로그램 ] #1. X, Y좌표계 구현 X0, X1 스위치를 누르면 D0을 가산, 감산 하여 X좌표를 움직합니다. X2, X3 스위치를 누르면 D1을.. 2022. 1. 23.
[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.
PLC 래더 프로그램의 기본 -2- [ AND 와 OR 회로 ] PLC는 프로그래머블 로직 콘트롤러(Programmable Logic Controller)의 약자로, 논리회로를 소프트웨어로 프로그래밍 할수 있는 자동제어장치 입니다. 그러면 여기서 말하는 논리 회로란 무엇인가? 불리언(boolean)값인 참(true)과 거짓(false) 혹은 흔히 말하는 1과 0, 혹은 접점의 open, close 를 조합하여 AND 회로와 OR 회로를 이용하여 조건의 경우의 수를 따져 원하는 출력을 내보내게끔 꾸미는 것을 말합니다. PLC의 경우 대부분의 경우 실제 기계를 움직이기 때문에 다음과 같은 경우의 조건들을 로직화 하여 동작하게끔 프로그램을 설계합니다. [ 다양한 구동 조건들의 예시 ] 1. 승강축 실린더가 상승인 경우에만 주행축 로봇의 서보모터를 정방향 혹은 역방향으로 구.. 2021. 5. 12.
PLC 래더 프로그램의 기본 -1- [ 자기유지와 인터락 회로 ] PLC의 래더로직(Ladder Logic) 프로그램은 전기회로를 사다리 모양으로 도식화 하여 표현한 것입니다.마치 그 모양이 사다리 모양과 비슷하여 래더도, 래더프로그램이라고 통상 부릅니다. PLC의 메이커별로 어드레스형식, 태그방식, 레이블방식 혹은 IEC61131-3 표준에 규정된 프로그램 방식에 따라 여러 형태로 프로그램이 가능하지만 자료형의 선언방식의 차이일뿐 래더 프로그램 이라는 근간은 변하지 않습니다. 위 사진에 첨부한 프로그램이 바로 래더 프로그램의 형식으로 좌측 세로줄과 우측 세로줄 사이에 선과 도형들이 모여 논리회로 프로그램을 이루고 있는 것이죠. 래더 프로그램을 구성하는 요소는 기본적으로 A접점(open contact), B접점(close contact), 코일(coil), 함수명령(f.. 2021. 5. 10.
[콘넥터] RJ-45 랜케이블 크로스 케이블과 다이렉트 케이블 Ethernet 통신 관련으로 많이 사용되는 랜케이블은 RJ-45 단자와 랜툴이라는 공구를 통해 손쉽게 제작이 가능합니다. 하지만 사용하려는 목적에 따라 다이렉트 케이블(T568B 규격)과 크로스 케이블(T568A 규격)로 구분하여 제작을 해야합니다. 다이렉트 배열의 랜케이블은 PC나 콘트롤러와 공유기 HUB를 통해 통신을 할 경우 사용되며 크로스 배열의 랜케이블은 PC-PC, PC-콘트롤러 등과 같이 공유기 HUB를 통하지 않고 직접 통신할때 사용되니 상황에 따라 배열을 선정할 필요가 있습니다. 최근에는 콘트롤러에서 자체적으로 다이렉트, 크로스 케이블 구분 없이 다이렉트를 꼽아도 알아서 크로스 배열로 인식시켜 동작하는 경우도 있지만, HUB를 미사용하고 다이렉트 케이블로 연결시 통신이 동작하지 않는다면.. 2021. 5. 8.
반응형