이번 실습 예제에서는 ls산전 plc는 xem-dn32h2를 이용하여 1ms 간격의 타이머 카운터를 구현해 보고 싶습니다.~~! 이것은 ST언어로 task를 구현하는 초석이 되는 애재입니다~~! 실습 예제 3-1과 3-2를 해보면 중요한 결론에 도달합니다~!아래와 같이 생각해볼게요~!버튼 1을 누르면 램프 1이 1초 간격으로 깜박이는 작업을 한다!버튼 2를 누르면 램프 2가 1초 간격으로 점멸 작업을 한다! ……버튼 N을 누르면 램프 N이 1초 간격으로 점멸 작업을 한다!그럼 PLC에서는 작업 1개마다 TON타이머를 2개씩 사용하셔야 합니다~~~! 개별적으로 1초간 타이밍을 생성해야하기 때문입니다~! 그래서 plc에서 1ms 간격으로 1씩 증가하는 타이머를 생성하고 모든 작업이 같은 시간을 공유하도록 함으로써 코드를 쉽게 구현해보는 것이 목적입니다~!
변수를 위와 같이 설정합니다~!counter가 이제는 시계에 됩니다!timer1과 timer2는 1ms간격의 타이밍을 생성하기 위해서 필요합니다~timer1_run과 timer2_run은 각각 시간을 실행하는 변수입니다~~~!타이머는 “항상”작동하도록 하겠으니 timer1_run의 초기 값을 TRUE로 설정하고 드립니다~라이브 방송에서 자료를 더 부가하고 둡니다~1.TON시간을 2개 만들어 동작 시간을 최소 시간은 1MS에 설정하라!2. 타이머 1이 2를 작동시키고 타이머 2가 1을 작동시키는 기본 방식으로 구현하라!3. 타이머 1과 타이머 2가 작동했을 때, PLC내부 변수 값을 1씩 증가시키면 1MS당 1씩 오른 타이머 카운터 값이 만들어진다!4. 그리고 아 도우이노에서는 그 카운터 값을 호출 함수를 millis()함수라는, PLC에서 그와 비슷한 기능을 구현하고 보자!5. 카운터 값은 1ms당 1씩 증가하기 때문에 PLC의 작동 시간을 얼마나 유지하느냐에 따라서 메모 리사이즈를 결정해야 한다!6.Arduino에서는 타이머 카운터 값을 32bit정수형 변수로 저장하라!(UDINT)7.0~4294967295를 역습할 수 있는, 약 49.71일 정도 할 수 있다!8. 약 50일 후에 다시 0으로 초기화하다..9. 작업 1개당, 현재의 자신의 시간을 기억할 변수가 1개씩 필요하다!아래의 ST언어로 작성된 코드를 업로드합니다~!
//타이머1은 무조건 부팅시 켜둔 채 출발한다(기본값) //타이머1이 타이머2를 켜고 //타이머2가 타이머1을 켜는 timer1(IN:=timer1_run, PT:=T#1MS);timer2(IN:=timer2_run, PT:=T#1MS); IF timer1.Q THENcounter: =counter+1;timer1_run;TRUN;
아래는 실습 예제 XG5000 프로젝트 파일입니다~! 첨부파일example3_3.zip파일 다운로드 내 컴퓨터 저장
네이버 MYBOX에 저장
실습 예제의 작동 결과는 녹칸다 유튜브 라이브 방송에서 해당 위치를 링크하고자 합니다~~! https://youtu.be/xgt_tTLZdmE?t=4550
실습 예제의 작동 결과는 녹칸다 유튜브 라이브 방송에서 해당 위치를 링크하고자 합니다~~! https://youtu.be/xgt_tTLZdmE?t=4550