안녕하세요 공직자입니다.
오늘은 PLC내 특수릴레이라는 개념에 대해서 알아볼겁니다.
원래 이번시간에 래치에 대해서도 알려드리고 싶었는데 천천히 깊숙히 흡수하시라고 다음주로 미뤘습니다.
특수릴레이에 대해서 알아볼까요?
PLC는 여러가지 이유로 사람들이 평소에 필요하다고 생각해놨던 기능들에 대해서 편리하게 사용할 수 있도록
일명 매크로 기능을 짜놨습니다.
특수릴레이라는 것은 쉽게말해 C언어로 치면 함수모듈이고, 펑셩블록이라고 생각하셔도 좋습니다.
이전 포스팅에서 간혹 특수릴레이를 사용한적이 있었는데요.
F99번 상시 ON접점이 바로 그것입니다.
특수릴레이들은 주로 통신쪽에 많이 사용됩니다.
이전에 엔코더에서 설명하면서 Clock 신호가 얼마나 중요한지 설명드린바 있지요.
통신은 보내는 놈과 받는놈의 타이밍을 잘 맞춰야 하는데
이를 ladder로 구현하기 번거로워 일명 매크로를 짜놧다고 보시면 될 것 같습니다.
특수릴레이는 어떻게 사용하고 어떻게 구성되는지 봐볼게요.
먼저 XG-5000을 실행합니다.
빈 프로젝트를 생성하시고 'F3'을 눌러 접점을 세팅하겠습니다.
그럼 '변수/디바이스(T):' 네임플레이트 옆에 TEXTBOX가 보이실텐데요.
거기에 F99를 한번 입력해봅시다.
그러면 F99가 의미하는 것은 상시 ON접점이며, 그외에도 수많은
특수릴레이들이 사용되고 있다는 것을 알 수 있을 겁니다.
사실 까놓고 말해서 저도 특수릴레이의 모든 기능에 대해서 알지 못하는데요.
우리는 암기 시험을 보는 것이 아니기 때문에 저것을 다 외우기보다는 누군가 열심히 만들어 놓은 것을
잘 활용하기만하면 됩니다.
어떤 엔지니어도 완벽하게 모든 내용을 외우고 있지는 않습니다.
필요에 의해서 서적이나 공부를 통해 해법을 찾는 과정을 거치는데요.
모르는 내용에 대해서 얼마나 빠르게 찾아내서 문제해결에 적용할 수 있느냐가 관건인것 같습니다.
즉, 필요할때마다 꺼내쓸줄 아는 능력이 모든 기능을 외우는 것보다 더 효율적이라는 것이죠.
PLC라는것은 끊임없이 변화하고 있으며 그 모든 내용을 머리에 놓기에는 우리가 알아야 하는 우선순위 높은
중요한것들이 너무 많이 있습니다.
다시 본론으로 돌아와서...
해당창의 스크롤을 위로 쭉 올려보니 F0번부터 수많은 특수 릴레이들이 존재하네요.
이 부분에 대해서는 독자여러분들이 필요하실때마다 연습용으로 하나씩 래더링 해보시고 직접 깨우치는 것이
더 효과적일 거라 생각합니다.
저는 수많은 특수릴레이중 몇가지를 추려서 설명드릴려고 합니다.
릴레이 번호 | 의미 | 비고 |
F00099 | 상시 ON되어 있는 접점 | |
F0009B | 1스캔만 ON | |
F00090 | 20ms 간격으로 클락신호 발생 | 10ms은 High, 10ms은 Low |
F00091 | 100ms 간격으로 클락신호 발생 | 50ms은 High, 50ms은 Low |
F00092 | 200ms 간격으로 클락신호 발생 | 100ms은 High, 100ms은 Low |
F00093 | 1s 간격으로 클락신호 발생 | 500ms은 High, 500ms은 Low |
F00094 | 2s 간격으로 클락신호 발생 | 1s은 High, 1s은 Low |
F00095 | 10s 간격으로 클락신호 발생 | 5s은 High, 5s은 Low |
F00096 | 20s 간격으로 클락신호 발생 | 10s은 High, 10s은 Low |
F00097 | 60s 간격으로 클락신호 발생 | 30s은 High, 30s은 Low |
1. 먼저 F00099 접점에 대해서 설명드려볼게요.
평상시 ON인 접점입니다.
평상시 ON이면 있으나마나 항상 붙어있다는 이야기일텐데 왜 접점을 쓰는지 궁금하시죠.
저도 궁금해서 몇가지 이유를 찾아 보았습니다.
XGK초급 Manual(LS산전 배포) 자료에 보면 업다운카운터인 CTUD를 사용하는경우 F99를 사용하라고 명시되어 있네요.
근데 CTUD카운터를 사용하려고 만들었다고 하기엔 설명이 뭔가 부족해보입니다.
래더는 래더일뿐 실제 회로와는 다른구조라고 이해하시면 편하겠네요.
M0를 단순히 단락시켜 놓은 그림은 어찌보면 P24전원으로부터 상시 전원을 공급 받는것처럼 보이지만
(아래그림 참고)
실제로는 그렇지 않습니다.
접점없이 그어놓은 선을 PLC는 어떻게 이해할까요?
위와 같이 이해하게 됩니다.
함수로 보시면 될 것 같아요. Y=X+1이라는 함수가 있는데
입력이 없다는건 PLC가 이해하기로 Y=? 의 상태가 되어버리는 것이지요.
따라서 PLC에게 상시ON되어 있는지 아닌지를 알려주어야 합니다
상시ON이라면 Y(M00000)=1일겁니다. 반대로 상시OFF라면 Y(M00000)=0 이겠지요.
상시 ON접점을 사용한다면 컴파일이 되지만
단순히 단락회로로써 M0에 연결하는 경우는 컴파일이 안됩니다.
F00099의 자세한 로직에 대해서는 LS산전에 직접 의뢰하여야 하겠지만 의미가 없는 접점을 만들어 놨을리는 없겠지요.
2. F0009B는 한스캔만 유지라고 되어있는데 여러모로 쓸모가 많습니다.
한스캔이라는 것은 PLC가 래더를 해석하는 가장 첫번째 Scanning 동작을 의미합니다.
C언어로 치면 가장 첫번째 전역변수는 딱한번만 선언을 하듯이 비슷한 개념으로 사용된다고 보시면 됩니다.
주로 통신을 하는 경우 인버터와 각 통신보드간의 세팅이 제대로 되어있는지, 통신선으로 연결된 인버터의 상태는
정상인지 여부와 데이터레지스터의 초기값 세팅등 여러가지 용도로 활용되어질 수 있습니다.
아래와 같이 래더를 작성하여 확인할 수 있는데 실제로 PLC에 프로그램을 전송한후
STOP에서 RUN신호롤 바꾸어주었을때 확인이 가능한 부분이라
시뮬레이터로는 보여드릴 수 없는 것이 아쉬운점이네요.
3. 다음은 Clock 신호에 대해서 알아볼거에요.
Clock 신호는 위에 표에서 보듯이 여러 시간스케일로 나타나집니다.
우리는 이 여러가지 스케일중 1초는 ON 1초는 OFF인 스캐닝 주기를 만들어 간단한 예제를 보겠습니다.
래더는 아래와 같습니다
래더의 A접점 '_T2S'는 F00094 접점으로써 1초간은 High 신호, 1초간은 Low 신호를 발생합니다.
상기 그림과 같은 형태가 되겠죠?
신기하죠?
단순히 접점만 주었을뿐인데 마치 타이머기능을 걸어놓은것처럼 혼자서 꺼지고 켜진답니다.
이런 신호들은 어느정도 정밀도를 표현하느냐에 따라서 유용할수도, 효용이 없을수도 있는데요
바로 앞전 예제의 1초라고 표현된 부분에 있어서 열심히 샌다고 새봤자 정확하게 1초가 아니기 때문에 그렇습니다.
PLC 개념에서 설명드렸듯 PLC는 입력과 출력을 스캐닝하며 리프레싱 과정을 거치게 되는데
이때 실제로는 측정되는 값의 오차가 발생하게 되거든요.
PLC는 1초를 샌다고 새지만 기구간 통신이 이루어지는 속도, PLC의 시퀀스상 동작순서에 의하여
실제로는 오차가 생길수 밖에 없는 것이죠.
타이머 오차는 어떤 스케일을 사용하느냐와, 프로그래밍상 어떤위치에 있느냐에 따라 달라지게 되는데요.
10ms 타이머의 경우 오차는 최대 1스캔시간 입니다.
100ms의 타이머 역시 동일한 최대오차를 가지게됩니다.
정리하면 보편적으로 ' 1스캔 타임 + 스캔시작에서부터 타이머 명령의 실행까지의 시간' 입니다.
이러한 연유로 실제로 이처럼 무한반복하는 Clock을 사용하는 것은 조심스러워야 합니다.
아무리 작은 오차라도 누적되면 커질 수 있기 때문이지요.
그래도 나는 특수릴레이를 사용하여 코딩을 하고싶다... 하시면
오차가 누적되어 문제가 발생하기 이전 적정한 주기로 값을 튜닝해주는 절차가 필요합니다.
조금 색다른 예제를 들면서 해당 기능을 파헤쳐봅시다.
이 예제는 P0가 ON, OFF 스위치 역할을 하면서, D0가 0.5초마다 1씩 증가되는 예제인데요.
FF은 앞선 포스팅에서 기술하였던것처럼 플립플롭을 의미합니다
플립플롭에 입력이 한번 주어졌을때 ON 또한번 주어졌을때 OFF 다시한번 주어졌을때 ON.....
입니다. (당연히 기억나시죠?.... 그때 힘들게 포스팅했는데 안나도 기억난다고 해주시기 바랍니다....)
좀 특이합니다.
보면.
이런 로직대로 움직이는건데.
상승펄스와 하강펄스마다 동작하게끔 의미를 부여했다는 점이 특이하죠.
상승펄스와 하강펄스마다 동작하게 하였으니 따져보면
0초, 0.5초, 1초, 1.5초가 되는 순간마다 1씩 증가하게 되는 것이지요.
이걸 다르게 표현하면 1초마다 2씩 증가되는 로직이라고도 표현할 수 있어요.
시뮬레이션을 돌려봅시다.
P0를 한번 눌러 M0가 1인 경우에는 M0가 활성화되어
0.5초마다 D0가 수치가 느는것을 확인할 수 있네요
반대로 P0를 다시한번 눌러 M0가 0이 되는 경우에는 M0의 활성이 깨져
_T1S 접점이 동작하더라도 D0값은 증가되지 않음을 확인할 수 있습니다.
자그럼... T0의 용도가 무엇일까요?
다음의 경우를 생각 해봅시다.
0.5초마다 증가하는 수치는 그대로 두되 10초마다 D0값을 샘플링하여 다른 레지스터에 읽어들이고 싶습니다.
D0는 D0대로 증가하지만 D1이라는 별도의 레지스터는 10초마다 D0값을 갱신하여 사용자에게 보여주는 것이죠.
이유야 간단합니다.
설명을 위해 비유를 드리자면... 우리에게는 시험기간까지 대략 1년이 남았습니다.
우린 1년중 수능을 위해서 월별로 공부전략을 짜겠죠. 월별로 크게 잡고 일별로 분할하여 계산할겁니다.
몇월 모의고사를 준비하는지, 몇월 단위로 공부계획을 세울지, 몇월달에는 적어도 오답노트 복습을 시작해야하는지에
대해서요.
하지만 1년중 몇일 몇시간 몇초까지 짤라서 계산하는 사람은 없겠죠.
(있어도 없다고 하세요... 정상은 아닙니다.[비하할 의도는 없습니다.])
정리하면 우리는 시험을 위한 시간의 대략적인 흐름을 파악하여 현재 시점에 알맞는 공부전략을 선택하면
되는 것이지 몇초 단위로 공부전략을 짜는것은 별의미가 없다는 것입니다.
모든 값에는 유효한 부분이 존재하고 무의미한 부분이 존재하기 마련이지요.
D0의 작은 수치는 순간적인 값을 읽어들이기는 좋지만 사용자가 모든 수치의 변화과정을 볼 필요는 없습니다.
다만, 수치의 추이로부터 그 변화량을 그래프화하여 데이터의 특성을 보편화하면 그걸로도 충분히 의미있는
데이터이니까요.
다시 문제로 돌아가보죠.
래더는 아래와 같이 작성해봅시다.
0.5초 간격으로 증가하는 데이터레지스터 D0값을 4초마다 D1으로 불러들이는 예제입니다.
D00001에는 8이 찍혔네요 왜 8이 찍히는지 이해하셨나요?
직관적으로 보았을때 가장 첫번째 봉(?)의 상승엣지 부분을 빼면 4초의 상승엣지구간까지 더했을때 8이 되는것 같네요.
왜인지 우리는 자연스레 아래 그래프를 떠올리게 됩니다.
여기서 우리가 생각해야 하는점이 있어요.
1. 시간이 0인 경우에는 카운팅이되지 않는다는점.
2. 타이머의 현재값 갱신 및 접점의 ON/OFF는 END명령 실행 이후 다음스캔인 점.
D00001은 정확하게 4초가 된시점에도 상승펄스를 감지할 겁니다.
왜냐하면 타이머의 현재값이 갱신되고 ON/OFF의 명령이 들어가는 시점이 [END]명령 이후이기 때문이지요.
추가로 타이머의 수치를 50으로 바꿔보겠습니다.
0.5초 간격으로 증가하는 데이터레지스터 D0값을 5초마다 D1으로 불러들이는 예제입니다.
근데 문제가 발생했습니다.
시뮬레이션을 돌려보면 이상한 현상이 발생합니다.
시뮬레이션을 돌려보니 아래와 같이 D00001에는 11이 찍혔습니다.
아까의 논리대로 계산이 맞다면 D00001에는 분명 10이 찍혀야 할텐데 말이죠.
타이머는 분명 5초인 시점에 [MOVP] 명령을 통하여 값을 인식할 수 있도록 명령을 주었을 것입니다.
왜이런 현상이 발생할까요??
음변환 검출접점을 넣으니 문제가 조금 이해하기 어려울듯 하여 양변환 검출접점만 놓고 아래 래더를 보면서
시뮬을 돌려봤습니다.
시뮬을 돌려놓고 가만히 보자면 D0가 분명 D1을 따라가긴 하는데 타이밍이 조금 이상합니다.
즉각 즉각 변화해야 할 것 같은 수치들이 한박자 늦게 동작하거나 동시에 동작하는 상황이 발생했어요.
타이머도 1초간격이고 Clock 신호도 1초간격의 상승펄스마다 동작할텐데 왜 이런현상이 발생 했을까요?
기나긴 이야기를 지금 시작합니다.
잘 따라오실꺼죠?
타이머는 정확하게 수치를 측정할수 없다고 말씀드렸었죠.
아래 타임차트에서 5인 지점의 값을 D1으로 찍고싶다고 가정해봅시다.
타이머는 5에(아래그림) 해당하는 부분에서부터 [END]를 만나기 이전까지 아무것도 할 수 없습니다.
그 말인 즉슨 0부터 세서 실제로 5초인 순간이 하필이면 입력 리프레싱 출력 리프레싱 순간이 아니라
레더를 해석하는 과정에 있다면, 필히 [END]를 만나기까지 대기해야 하는 불상사가 벌어지는 것입니다.
빨간색선이 만약 아래 타임차트의 4라는 부분에 걸쳐있게되면 5라는 부분 이후에나 그수치를 인식하겠지요.
최대 1스캔 간격입니다.
앞선 예제와 연관하여 쉽게 풀어설명하자면 [MOVP D0 D1] 명령에 대한 결과값 출력은 어쨋거나 [END] 명령이후에
이루어지므로 시간상 5 라고 가정한 붉은색 선에 대한 시간을 PLC가 인식하려면(아래그림) [END]까지 조금더
기다려야 합니다.
또한 다음 스캐닝 동작 7.5쯤 되는 부분에서 [MOVP D0 D1]을 마주하고 실시간으로 측정된 값이
디바이스 이미지 메모리에 저장된 후 [END]에 닿아 출력 리프레싱이 될때까지 기다려야 합니다.
바로 우리가 눈으로 보는 값들이 출력리프레싱 된 값들인데요.
그러나 이렇게 해당 예제에서는 스캐닝으로 인한 지연동작이 생긴다고해도.
사실 스캐닝 동작이 워낙빠르고 1초 Clock의 상승 펄스 하강펄스 검출이 스캐닝동작보다 빠르게 변화하는 것은
아니어서 이러한 오차는 고속의 스캐닝 동작에 의하여 보정이 될 것 같습니다.
그럼 수치가 이상하게 찍히는 부분에 대해서 다른원인을 찾아보아야 하겠는데요.
이그림은 XGK 메뉴얼에서 발췌하였습니다.
어느 PLC 포스팅을 보아도 이런 내용에 대해서 기술한 것은 보이지가 않네요.
그래서 소개드립니다.
타이밍차트가 좀 특이합니다. LS산전의 메뉴얼 예제에서 P0를 누르면 곧바로 통전되어 타이머가 동작할듯하나
실제동작은 그렇지 않고 오차 간격을 가지게되네요.
사람이 P0를 누른시간과 실제로 타이머 코일의 동작에 대해 동작하는 시간 차이에 대해서 *2라고 설명하고 있습니다.
쉽게말해서 *2는 프로그래밍상의 위치에 따른 오차인데요.
PLC가 래더해석을 한줄 한줄 한스텝 한스텝 하다보니 물리적인 시간이 소요되고.
실제로 동시에 진행되는것처럼 보이지만 그렇지 않다는 점을 말하고 있습니다.
*1은 우리의 예제와 같은 사례에 대해서 설명하는 글이네요.
'0부터 새었을때 실제로는 8의 위치가 점선부분이지만 어쨋거나 [END]를 만나야 타이머가
최신화되므로 8초보다 시간적으로 더 늦은 위치에 8이라는 수치가 부여가 된다'라고 이해하시면 될듯 합니다.
위의 그림과 밑의 그림이 다른이유는 실제위치와 PLC가 인식하는 시간위치의 오차에 대한 그림으로 이해하시면 됩니다.
또 한스캔동작에는 그림에서 표현하길 타이머의 계수가 1개인 경우도, 2개인 경우도 존재합니다.
실제로 스캐닝주기는 21ms인데 타이머로는 10ms밖에 측정이 안되기 때문에 이런경우가 발생할 수 있겠죠.
21ms과 10ms의 최소공배수는 210ms이죠.
그말인 즉슨 210ms 마다 21ms 스캐닝 주기와 타이머의 10ms은 각각 10번 21번 주기동작을 하다가 결국 만나게
된다는 의미인데요.
이에 따라서 한스캔을 동작시킬때마다 계수가 다를 수 밖에 없다는 점을 시사합니다.
그렇게 되면 스캔당 측정된 시간이 달라질 수 있다는 것은 인지상정이겠죠.
타이머의 계수가 실제로는 다소 불규칙적이고 스캔당 포함되어 있는 타이머의 계수에 따라 시간이 카운팅된다는 점을
미루어 보았을때 LS산전에서 클럭신호도(매크로) 역시 타이머와 같은 원리로 동작되게끔 설계하였다면...
210ms 이내의 구간의 래더 해석에 있어서는 스캐닝 주기가 타이머 계수의 주기보다는 11번 덜 동작해야하므로
1스캐닝 주기내에 여러개의 타이머 계수가 들어가있겠네요.
그렇게 되는경우 한번 스캐닝 동작에 의하여 한번에 20ms이 작동되는 경우가 있고
때로는 한번 스캐닝 동작에 의하여 10ms만 인식되는 경우가 있을 겁니다.
우리가 들었던 예제처럼 100ms 주기의 타이머를 사용하는 경우를 따져보아도 비슷합니다.
100ms(타이머계수)과 21ms(스캐닝 동작)의 최소공배수는 2100ms 입니다.
위에 사례처럼
타이머계수와 스캐닝동작은 2100ms 마다 다시 만나게되며
타이머 계수는 최소공배수를 만들기위해 21번 동작하여야 하고 스캐닝 동작은 무려 100번이나 이루어져야 합니다.
이로 미루어 보았을때 어느정도 적절하게 분배되었다면 1 스캐닝 동작에 타이머계수는 대략 0.21개
존재한다고 볼수 있지요.
거꾸로 뒤집어 말한다면 타이머계수 1개당 4.76개의 스캐닝 동작이 필요하며 적절하게 계산해보면
타이머 계수 5개당 23.8개의 스캐닝 동작이 필요하다는 것을 알 수 있습니다.
각타이머 계수별로 1부터 5까지 표현해볼까요?
1: 4.76 => 5 (0.1초)
[실제 0.1초를 새기위해서는 대략 4.76개의 스캔동작이 필요함. 그러나 PLC는 5개의 스캔동작에서 0.1초를 판단]
2: 9.52 => 10 (0.2초)
[실제 0.2초를 새기위해서는 대략 9.52개의 스캔동작이 필요함. 그러나 PLC는 10개의 스캔동작에서 0.2초를 판단]
3: 14.28 => 15 (0.3초)
[실제 0.3초를 새기위해서는 대략 14.28개의 스캔동작이 필요함. 그러나 PLC는 15개의 스캔동작에서 0.3초를 판단]
4: 19.04 => 20 (0.4초)
[실제 0.4초를 새기위해서는 대략 19.04개의 스캔동작이 필요함. 그러나 PLC는 20개의 스캔동작에서 0.4초를 판단]
5: 23.8 => 24 (0.5초)
[실제 0.5초를 새기위해서는 대략 23.8개의 스캔동작이 필요함. 그러나 PLC는 24개의 스캔동작에서 0.5초를 판단]
신기한게 뭐냐면...
1개의 계수에 필요한 스캐닝동작이 제각각 다르다는 점입니다.
1스캐닝 동작이 메뉴얼대로 21ms를 의미한다면
왜 똑같은 시간을 새는데 간격이 달라질까요?
0.1초부터 0.4초까지는 각각 5개의 스캔동작인 5*21= 105[ms]씩이나 새야 됬는데
희안하게도 0.5초를 새기 위해서는 4*21 = 84[ms]만 새도 된다는 의미입니다.
[오차를 방지하기 위해서 LS산전에서 보정치를 준 것이 아닌가 사료됩니다.]
하기 그래프는 실제데이터를 기반으로한 XG5000내 트렌드 모니터링 기능입니다.
트렌드 모니터링 기능에 의해서 해당 해답을 찾을 수 있습니다.
트렌드 모니터링 기능은 오실로스코프 같은 기능을 하는 것으로써 다음포스팅에서 소개드리겠습니다.
이기능에 대해서 바로 소개하자면 너무도 포스팅이 길어질듯 합니다. 일단은 이런것이 있구나 정도만 알고
넘어가주시기 바랍니다.
아래 그래프는 500ms마다 샘플링된 결과값 입니다.
앞에 설명드린 내용과 연관지어 그래프를 해석해봅시다.
이상한점이 보이죠? _T1S는 0.5초 주기 간격으로 HIGH와 LOW를 오가는데 왜 사다리꼴 모양이 만들어지는지 말입니다.
이 부분은 500ms마다 모델링이 되었고 앞서 말했듯이 0.5초를 새기위해서 어느 구간에는 더 짧은 스캐닝 시간을
필요로 한다고 하였죠
즉 사다리꼴을 형성하는 부분은 실제로는 상승과 하강을 2번한 모양이 그렇게 표현된 것이며, 이가 시사하는바는
타이머 계수의 위치가 앞서 설명한 이론처럼 정확한 시간간격으로 분배되지 않기 때문이라고 판단됩니다.
이를 고려하여 노란선의 펄스 갯수를 새보면 빨간색선이 상승하는 시점에서 하강펄스를 감지하여 총
11이 되는것을 확인할 수 있겠습니다.
여기서 우리가 캐치해야 되는점은 시작시간이 17:09:15.6인데 반해 D1이 출력된 시점은 17:09:20.5
즉 서로간의 간격이 4.9초로 0.1초가 짧습니다. 타이머 계수가 1개가 덜 먹었지만 5초로 인식을 한다는 의미겠지요.
정리하면 사다리꼴이 형성되는 구간은 유독 타이머 계수의 위치가 촘촘하여 어느구간에서 데이터를 캡쳐하느냐에
따라서 값이 달라질 수 있다 입니다.
그래프로 한번 응용 예제를 확인해볼까요?
그래프상에서는 사다리꼴이 총 2번 형성되었죠.
우리는 2번째 사다리꼴이 아니라 1번째 사다리꼴을 봐보겠습니다.
17:09:15.6~17:09:17.8 구간에서 캡쳐를 할 겁니다. 시간간격은 2.2초정도 되네요.
아까 사다리꼴 모양에서 실제 타이머에 입력하는 수치보다 실제치가 0.1초가 더짧으니 실제치 2.2초를
인식시키려면 타이머에는 23이라고 써주어야 되겠군요.
먼저 23을 인식시켰을때 D1값은 5가 되죠?
그렇담 22를 인식시켯을 때는요?
그러니 [TON T0000 23]을 써주면 한번이 [TON T0000 22]인경우보다 D1값이 하나가 더 크겠네요
맞는지 봐볼까요?
여기까지 이해하셨나요?
500ms이 아니라 아주 정교하게 그래프를 표현하여 여러분들께 확실히 이해시켜드리면 더 좋겠지만 제능력의 한계로
이렇게밖에 설명못드리는 점에 대해서 아쉽게 생각합니다.
오늘은 여기까지만 포스팅하겠습니다
포스팅에 궁금한점이 있거나 오류가 있는 경우 피드백은 언제든지 환영입니다.
코로나가 다시 기승이니 건강 유의하시기 바랍니다.
끝.
'PLC > PLC(XG-5000)' 카테고리의 다른 글
15. BIN/BCD, 반전명령, 특수릴레이, 래치의 응용 (0) | 2020.07.08 |
---|---|
14. 트렌드모니터링, 래치의 개념 (0) | 2020.07.07 |
12. BIN/BCD, 반전명령 개념 (2) | 2020.06.23 |
11. 비교연산문, 조건문, 데이터 이동 명령어의 응용 해설 (0) | 2020.06.16 |
10. 비교연산문, 조건문, 데이터 이동 명령어의 응용 (0) | 2019.07.31 |