[3편] LS산전PLC(XEM-DN32H2)와 ST언어에 TON함수블럭으로 타이밍(timing)을 만들어서 반복작업을 수행시켜보기!(녹칸다의 내맘대로 PLC 시리즈)
프로그래밍/LS산전PLC 2023. 5. 24. 23:05https://youtube.com/live/xgt_tTLZdmE
[3편] LS산전PLC(XEM-DN32H2)와 ST언어에 TON함수블럭으로 타이밍(timing)을 만들어서 반복작업을 수행시켜보기!(녹칸다의 내맘대로 PLC 시리즈)
녹칸다의 내맘대로 PLC시리즈이다!
이번 시리즈는 아래 구글 슬라이드에 설명자료를 작성하도록 한다!(모두에게 공유되어있음)
https://docs.google.com/presentation/d/1c5YLf60WR_41MiQoi98iuQQTgTxfjQfBKBZt6dUz8R0/edit#slide=id.g2256eed76b9_0_0
녹칸다는 아두이노 코딩하는 유튜버이다!
이번 시리즈는 아래와 같은 주의사항이 있다!
1.녹칸다는 PLC에 대해서 잘 모름(가장 중요)
2.아두이노로 코딩하던 사람이 PLC를 바라보는 관점으로 입문자용 자료를 만듦!
3.그러므로 PLC를 정석으로 하고자 하는 의도는 전혀 없음!
4.녹칸다가 가진 PLC CPU는 레더로직(LD)과 ST언어 2가지로 제어가 가능함!
5.레더로직은 전혀 이해가 안되어서 몇가지 샘플만 구동해보는 것으로 마무리 함!(대충 이렇게 하는구나~ 정도 수준)
6.ST언어는 약간 이해가 되므로 아두이노 코딩하는 전략을 기반으로 해서 다양한 예제를 만들어 보도록 함!
7.그러나 녹칸다가 ST언어로 코딩할 내용이 “실제로 이렇게 해도 되는건가?” 는 보장하지 못함, “결론적으로 작동이 됨”에 초점을 맞추도록 함!
8.진행중 잘못된 설명이 있으면 녹칸다에게 알려주면 감사!
이번편은 기본적인 ST언어의 이해를 바탕으로 PLC에 반복작업 개념을 수행해보도록 한다!
(지금 부터는 모든 기능은 ST언어로 구현하도록 한다)
PLC에서는 아두이노처럼 millis나 micros함수가 없다!(MCU내부의 타어머 카운터 값)
없으면 그와 유사하게 만들면된다! 다만 PLC의 최소 타이머는 1ms이므로 micros는 구현이 안될것 같다!
타이밍을 만들어낼수 있는 전략은 아래와 같이 2가지가 있다!
1.필요한 반복작업 갯수만큼 TON 2개를 할당하고 시간값을 입력해서 반복시키는 방법!
2.TON 함수블럭 2개로 1ms 타이머 카운터를 구현해서 타이머 카운터에 의해 반복작업을 시키는 방법!
아두이노에서는 주로 2번의 전략을 구사하므로 PLC에서 ST언어로 아두이노와 유사한 타이밍 제어 방법을 구사해보도록 한다!
대표적으로 만들수있을만한 예제는 아래와 같다!
1.버튼을 누르면 램프가 일정간격으로 반짝인다!
2.버튼과 램프가 2세트 이상 있을 경우 개별적으로 제어가 가능하다
3.버튼을 눌렀다가 뗀 시간을 알아낼 수 있다
4.버튼을 눌렀다가 뗀 시간 만큼 램프를 켰다가 끈다
5.스톱워치를 구현할 수 있다
(기타 등등)
예제를 최대한 많이 만들어보고 만들다가 재밋으면 4편에서 이어서 하도록 한다!
(라이브에서 구현한 예제 목록)
예제1)버튼1, 램프1을 연결해서 버튼을 누르면 램프가 1초간 깜빡이고 한번더 누르면 작업이 중지된다!
예제2)버튼2, 램프2을 연결해서 버튼을 누르면 램프가 1초간 깜빡이고 한번더 누르면 작업이 중지된다!
예제3) 1ms단위를 가지는 카운터를 구현하시오!
예제4)버튼1, 램프1을 연결해서 버튼을 누르면 램프가 1초간 깜빡이고 한번더 누르면 작업이 중지된다!(타이머 카운터를 활용하시오)
예제5)버튼2, 램프2을 연결해서 버튼을 누르면 램프가 1초간 깜빡이고 한번더 누르면 작업이 중지된다!(타이머 카운터를 이용하시오)
예제6)버튼1, 램프A와 램프B를 이용해서 버튼1을 누르면 작업이 시작되고 다음 4가지 상황을 반복한다 A켜짐B꺼짐,A꺼짐B켜짐,A켜짐B켜짐,A꺼짐B꺼짐 1초간격으로 무한 반복함 이런걸 만들어보시오!
예제7)버튼 1개 램프1개가 있을때 버튼1을 누르면 램프가 3초간 켜져있다가 꺼지도록 하시오!(3초 이내에 버튼을 1회더 누르면 3초가 연장된다)
예제8)버튼 1개 램프1개가 있을때 버튼을 눌렀다가 뗀 시간이 3초 이상인 경우에 램프를 토글한다!
예제9)버튼 1개 램프1개가 있을때 버튼을 눌렀다가 뗀 시간만큼 램프가 켜짐을 유지하도록 하시오!
예제10)현재 PLC내부의 타이머카운터 값을 문자열 형태로 출력하시오!