안녕하세요?


이번 포스팅에서는 지난주 목요일에 있었던 수업의 내용인데, 소위 노래방에서 곡을 예약하는 것처럼, PLC에다가 여러개의 작업중에 사용자가 HMI를 통해서 작업들의 순서를 정해서 예약된 차례대로 실행을 할 수 있고, 이미 예약된 작업을 취소할 수도 있는 기능이 있다고 합니다. 



먼저 언급해야 할 것은 FIWRP명령어 인데, 소위 데이터를 저장하라는 명령어에 해당한다고 볼 수 있습니다. 사용방법은 아래와 같습니다.


[FIWRP  D1  D10]


이렇게 하면 D10에다가 D1에 있는 데이터의 내용을 저장하라는 내용이 되는데, 여기서 오해하지 말고 이해해야 하는 것이 하나 있습니다.


데이터는 사실 D11부터 저장이 되고, D10에는 저장이 된 데이터의 총 갯수가 표시되는 것입니다.



일단 디바이스의 메모리 상황을 2진수에서 보기 편하게 10진수로 바꾸어서 설명을 할까 합니다. 실제로 데이터는 D10에 저장하라고 하면, 실제로는 +1이 되어서 D11부터 뒤로 밀리기 시작하면서 저장이 되며, D10에 표시되는 숫자는 총 저장이 된 데이터의 갯수입니다. 이점을 유의해야 합니다.



이제 저장하기(FIWRP)가 있으니, 불러오기(FIFRD)가 필요한 상황이 왔습니다. 여기서도 사용방법은 아래와 같은 규칙을 따른다고 보시면 됩니다.


[FIFRD D10 D0]


D10 : 데이터가 저장이 되어 있는 디바이스

D0 : 불러온 데이터를 저장할 디바이스의 이름


여기서 중요한 것은 D10은 위에서처럼 실제로 데이터가 저장된 D11을 지칭하면 안되고, 저장이 된 데이터의 갯수를 보여주고 있는-한마디로 데이터들의 저장된 집합의 일종의 헤드 디바이스라고 해야 할까요? 이 헤드를 지정해야 합니다.


그리고 다음으로 중요한 것은 D0를 언급한다고 해서, 실제로 D10에서 불러온 데이터가 D0에 저장이 되지는 않고, 여기서도 +1이 되어서 D1에 저장이 됩니다. 그리고 FIWRP와는 다르게 D2에는 저장이 되지 않습니다.



실제로 디바이스의 메모리 상황을 보자면, 이렇게 D0라고 지정을 했지만 D1에 불러와 있는 것을 볼 수 있습니다. 그리고 D2에는 데이터가 더는 저장이 되지 않는 것도 볼 수 있습니다.



실제로 이런가 싶어서 D10에 저장이 되어 있는 모든 데이터를 다 불러 왔지만, 여전히 D2에는 아무것도 없습니다.



그리고 다음으로 중요한 것인 FILRD(P)와 FIINS(P)를 실습하기 위한 준비를 마쳤습니다.




그리고 D10에다가는 모두 65로 채워서 D6까지 채우는 준비를 마치도록 했습니다.



그리고 실습을 위해서 준비합니다. 일단 FIINS(P)에 대한 준비를 마쳤습니다. 이 명령은 데이터들의 집합 한 가운데에 데이터를 삽입하기 위한 명령으로 아래와 같은 구성을 지니고 있습니다.

[FIINS(P)  워드1   워드2  n]


워드1 : 삽입하고자 하는 값이 저장되어 있는 워드 디바이스

워드2 : 삽입하고자 하는 데이터들의 시작위치-집합의 헤드 디바이스

n : 시작위치에서 부터 얼마나 이동을 할 것인지를 나타내는 수-즉 몇 번째인가를 나타내는 수



실제로 D1에 9999를 일부러 입력한 다음 n에다가 3이라는 숫자를 입력해서 FIINS(P)를 실행했더니, D0에서 시작해서 3번째 자리인 D3에 9999가 저장이 되었으며, D3부터 저장되어 있던 값들은 모두 우측으로 1칸씩 밀리는 것을 볼 수있었습니다.


이제 FILRD(P)를 준비하도록 합니다. 이 명령어도 지정된 디바이스 집합에 저장된 데이터를 불러 오는 것은 같은데, FIFRD와는 다르게 가장 최근에 저장된 값 부터 불러오는 특징이 있습니다. 그럼 FIFRD는? 가장 먼저 입력된 데이터 부터 불러옵니다.



대부분은 FIFRD와 같으나, 여기서는 D0에 저장을 하라고 했더니, 문자 그대로 D0에 값이 저장되어 있고, 가장 최근에 입력된 값이 있는 D17에 저장된 데이터를 불러오는 것도 확인할 수 있었습니다. 다만 D17은 아무것도 없이 뻥 비어버리는 것을 확인할 수 있었습니다.



다음은 FIDEL(P)의 실습을 위한 준비입니다. 이름만 보면 삭제하라는 명령 같지만, 실제로는 지정된 워드 디바이스의 값을 어디 먼 곳으로 날려 버리는 명령어에 가깝습니다.




FIDEL(P)를 실습하기 이전에 D10의 집합에 있는 데이터들의 원래 상태입니다.



이제 접점을 누를 차례입니다. 우선 FIINS(P)와 마찬가리로 FIDEL(P)로 다음과 같은 구성을 지니고 있습니다.


[FIDEL(P)   워드1    워드2    n]


워드1 : 삭제시킬 데이터가 저장되어 있는 집합의 시작 워드 디바이스 위치

워드2 : 삭제된 데이터가 보내질 워드 디바이스의 위치

n : 시작위치에서 얼마나 이동할 것인가? 즉, 자릿수를 나타내는 수


실제로 D14에 저장되어 있던 값이 그대로 D100으로 그대로 이동한 것을 볼 수 있었습니다.



다음은 수업중에 과제를 받았습니다. 예약작업이 실행될 수있도록 일련의 작업을 완료하라는 것입니다.



일단 디자인만은 끝냈는데, 이제 중요한 것은 이 디자인이 작동을 할 수 있도록, 앱 인벤터2와 같은 경우라면 일종의 블록으로 코딩을 하는 과정과 같은 XG5000에서 래더 다이어그램을 만드는 작업이 남아 있습니다.




이제 일련의 래더를 완성하는 데 성공하였습니다.



이제 제대로 작동되는지을 알아보기 위해서 먼저 XG5000상에서 시뮬레이션을 해보고 나서, XP builder에 디자인한 HMI패널이 제대로 작동되는지 알아볼 차례입니다.



위 동영상은 실제로 화면을 녹화한 것입니다. 일단 실제 HMI기기를 사용한 것은 아니지만, 시뮬레이션 상에서는 제대로 작동되는 것을 볼 수 있었습니다.



잊에 문제가 이렇게 엄청나게 4줄로 길어진 래더가 있는데, 이를 줄일 수 있느냐 인 건데, 실제로 방법이 있다고 합니다.



FMOV라는 명령어가 LS산전PLC에서도 있습니다. 이 명령어를 사용하면 4줄이 될 것을 1줄로 줄일 수 있습니다.



마지막으로 FMOV가 어떻게 작동하는 지를 설명하는 그림을 올리는 것으로 마치도록 하겠습니다. 여기까지가 지난주 목요일 수업이 있었던 오전까지의 내용입니다. 내용이 너무 길어져서 나누었는데, 남은 부분은 공압이라고 해서, 주로 버스나 지하철의 문을 여닫는 피스톤을 움직이게 하는 역할을 하는 장치를 가지고서 했는 실습의 내용을 곧 올리도록 하겠습니다.

+ Recent posts

티스토리 툴바