복사(COP) - 동기식 복사(CPS)
이 정보는
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 및 ControlLogix 5590 컨트롤러에 적용됩니다. 컨트롤러 구분이 있을 때는 언급합니다.COP 및 CPS 명령어는 Source의 값을 Dest의 값으로 복사합니다. Source는 변경되지 않습니다.
사용 가능한 언어
래더 다이어그램


펑션 블록
이 명령어는 함수 블록에서 사용할 수 없습니다.
구조화된 텍스트
COP(Source,Dest,Length);
CPS(Source,Dest,Length);
피연산자
중요:
다음과 같은 경우 작업 시 예외가 발생할 수 있습니다.
- 출력 태그 피연산자가 덮어써집니다.
- 구조 피연산자의 구성원이 덮어써집니다.
- 지정된 경우를 제외하고 여러 명령어에서 구조 피연산자를 공유합니다.
래더 다이어그램
피연산자 | 데이터 유형 CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 및 GuardLogix 5570 컨트롤러 | 데이터 유형 CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 및 ControlLogix 5590 컨트롤러 | 형식 | 설명 |
|---|---|---|---|---|
Source | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT REF_TO_AXIS_VIRTUAL REF_TO_AXIS_CONSUMED REF_TO_AXIS_GENERIC_DRIVE REF_TO_AXIS_SERVO REF_TO_AXIS_SERVO_DRIVE | 태그 | 복사할 초기 요소. REF_TO 모션 데이터 유형을 지원하는 컨트롤러의 경우 지원되는 축 피연산자 유형을 등가 REF_TO 유형으로 대체할 수 있습니다. 참조(Reference, REF) 명령어는 참조를 축 또는 좌표계 구체적 태그와 연결합니다. |
Dest | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT | 태그 | 소스가 덮어쓸 초기 요소 |
Length | SINT INT DINT | SINT INT DINT | 즉시 태그 | 복사할 대상 요소의 수 |
구조화된 텍스트
피연산자 | 데이터 유형 CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 및 GuardLogix 5570 컨트롤러 | 데이터 유형 CompactLogix 5380, ControlLogix 5580, Compact GuardLogix 5380, GuardLogix 5580 및 ControlLogix 5590 컨트롤러 | 형식 | 설명 |
|---|---|---|---|---|
Source | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT REF_TO_AXIS_VIRTUAL REF_TO_AXIS_CONSUMED REF_TO_AXIS_GENERIC_DRIVE REF_TO_AXIS_SERVO REF_TO_AXIS_SERVO_DRIVE REF_TO_AXIS_CIP_DRIVE | 태그 | 복사할 초기 요소 |
Dest | SINT INT DINT LINT REAL String type structure | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL String type structure DT | 태그 | 소스가 덮어쓸 초기 요소 |
Length | SINT INT DINT | SINT INT DINT | 즉시 태그 | 복사할 대상 요소의 수 |
스트럭처드 텍스트 내 식의 구문에 대한 자세한 내용은 구조화된 텍스트 구문 항목을 참조하십시오.
연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 배열 인덱싱 폴트의 경우 배열을 통한 인덱스 항목을 참조하십시오.
실행
래더 다이어그램
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | N/A |
렁-입력-조건이 거짓임 | 렁-출력-조건을 렁-입력-조건으로 설정합니다. |
렁-입력-조건이 참임 | 렁-출력-조건을 렁-입력-조건으로 설정합니다. 명령어가 데이터를 복사합니다. |
사후 스캔 | N/A |
구조화된 텍스트
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 래더 다이어그램 표의 사전 스캔을 참조하십시오. |
정상 실행 | 래더 다이어그램 표의 렁-입력-조건이 참인 경우를 참조하십시오. |
사후 스캔 | 래더 다이어그램 표에서 사후 스캔 섹션을 참조하십시오. |
COP와 CPS 명령어의 실행 중에 다른 컨트롤러 조치가 복사 작업을 중단하면서 소스를 변경하려고 시도할 수 있습니다.
소스 또는 대상: | 원하는 작업: | 선택할 명령어: | 참고 |
|---|---|---|---|
| 복사 작업 중에 소스 데이터가 변경되지 않게 합니다 | CPS | CPS 명령어를 중단하려고 시도하는 태스크가 명령어가 완료될 때까지 지연됩니다. CPS 명령어의 실행 시간을 추정하려면 ControlLogix 시스템 사용자 매뉴얼(발행 번호: 1756-UM001)을 참조하십시오.CPS 명령어가 실행되는 동안 원격 클라이언트가 소스를 업데이트하지 않도록 하려면 인터록 응용 프로그램 코드를 사용합니다. |
복사 작업 중에 소스 데이터의 변경을 허용합니다. | COP | ||
위의 해당 사항 없음 | ---------------> | COP |
COP와 CPS 명령어는 연속 메모리에 작업하여 직접적인 바이트간 메모리 복사를 수행합니다.
Source와 Dest의 데이터 유형이 다른 경우, 복사되는 바이트 수는 다음 중에서 작은 수와 동일합니다.
- 요청된 수량은 길이 x와 같음(대상 요소의 바이트 수)
- 대상 태그의 바이트 수
- Compact GuardLogix5380,CompactLogix5380,ControlLogix5580,GuardLogix5580 또는 ControlLogix 5590 컨트롤러의 경우: 소스 태그의 바이트 수팁: 대상 또는 소스 태그의 끝은 기본 태그의 마지막 바이트로 정의합니다. 태그가 구조인 경우, 태그의 끝은 구조의 마지막 요소의 마지막 바이트입니다. 이는 COP와 CPS 명령어가 구성원 배열의 끝을 지나서 작성할 수 있지만 어떠한 경우에도 기본 태그의 끝을 지나서 작성하지 않음을 의미합니다.
중요:
명령어가 변경되어서는 안 되는 데이터를 변경하지 않는지 테스트하고 확인하십시오.
예
예 1
배열 복사하기.
활성화되면 COP 명령어는 array_4에서 array_5로 40바이트를 복사합니다.
array_4는 DINT(요소 당 4바이트)이고, 10요소(총 크기 = 40바이트)로 구성됩니다.
array_5는 DINT(요소 당 4바이트)이고, 10요소(총 크기 = 40바이트)로 구성됩니다.
Length가 10개 대상 요소의 복사를 지시하므로 40바이트가 복사됩니다.
래더 다이어그램

구조화된 텍스트
COP(array_4[0],array_5[0],10);
예 2
구조를 복사합니다.
활성화되면 COP 명령어는 구조 timer_1을 array_timer의 요소 5로 복사합니다.
timer_1은 TIMER(총 크기 = 12바이트)입니다..
array_timer는 TIMER(요소 당 12바이트)이고, 10요소(총 크기 = 120바이트)로 구성됩니다.
Length가 1개 대상 요소를 지시하므로 12바이트가 복사됩니다.
래더 다이어그램

구조화된 텍스트
COP(timer_1,array_timer[5],1);
예 3
복사가 완료될 때까지 데이터의 변경을 방지하면서 배열 데이터를 복사합니다.
project_data 배열(100개 요소)은 응용 프로그램에서 상이한 시점에 변경되는 다양한 값을 저장합니다. 한 인스턴스의 project_data의 전체 이미지를 제 시간에 다른 컨트롤러로 전송하기 위해 CPS 명령어는 project_data를 produced_array로 복사합니다. CPS 명령어가 데이터를 복사하는 동안에는 어떤 I/O 업데이트나 기타 태스크도 데이터를 변경할 수 없습니다. produced_array 태그는 다른 컨트롤러가 사용할 수 있도록 데이터를 ControlNet 네트워크에서 생성합니다.
project_data는 DINT(요소당 4바이트)이고 100개 요소(총 크기 = 400바이트)를 포함합니다.
produced_array은 DINT(요소 당 4 바이트)이고, 100요소(총 크기 = 400바이트)로 구성됩니다.
Length가 100개 대상 요소를 지시하므로 400바이트가 복사됩니다.
래더 다이어그램

구조화된 텍스트
CPS(project_data[0],produced_array[0],100);
예 4
복사가 완료될 때까지 데이터의 전송을 방지하면서 생성된 태그로 데이터를 복사합니다.
Local:0:I.Data가 슬롯 0에서 1756-DNB 모듈에 연결된 DeviceNet 네트워크에 입력 데이터를 저장합니다. 입력을 응용 프로그램과 동기화하기 위해 CPS 명령어는 입력 데이터를 input_buffer로 복사합니다. CPS 명령어가 데이터를 복사하는 동안에는 어떤 I/O 업데이트도 데이터를 변경할 수 없습니다. 응용 프로그램이 실행되면 input_buffer에 있는 입력 데이터를 입력 항목으로 사용합니다.
Local:O:I.Data는 DINT(요소당 4바이트)이고 2개 요소(총 크기 = 8바이트)를 포함합니다.
input_buffer는 DINT(요소당 4바이트)이고, 20개 요소(총 크기 = 80바이트)를 포함합니다.
Length가 20개 대상 요소의 복사를 지시합니다(4 X 20 = 80바이트). 그러나 소스는 8바이트만 제공할 수 있으므로 8바이트가 복사됩니다.
래더 다이어그램

구조화된 텍스트
CPS(Local:0:I.Data[0], input_buffer[0], 20);
예 5
배열 구조를 초기화하고, 첫 번째 요소를 초기화하며, COP를 사용하여 이를 배열의 나머지 부분에 복제합니다.

이 예에서는 배열 또는 타이머 구조를 초기화합니다. 활성화되면 MOVE 명령어는 첫 번째 array_timer 요소의 .PRE 및 .ACC 값을 초기화합니다. 활성화된 경우, COP 명령어는 array_timer[0]부터 시작하여 연속적인 바이트 블록을 복사합니다. 길이는 9 타이머 구조입니다.
array_timer는 TIMER(요소당 12바이트)이고 15개 요소(총 크기 = 180바이트)를 포함합니다.
Length가 10개 대상 요소를 지시하므로 120바이트가 복사됩니다.
래더 다이어그램

구조화된 텍스트
IF S:FS THEN
array_timer[0].pre := 500;
array_timer[0].acc := 0;
COP(array_timer[0],array_timer[1],10);
END_IF;
예 6
다른 크기의 배열을 복사합니다.
활성화되면 COP 명령어는 SINT array_4에서 DINT array_5로 바이트를 복사합니다.
array_4는 SINT(요소당 1바이트)이고, 5요소(총 크기 = 5바이트)로 구성됩니다.
array_5는 DINT(요소 당 4바이트)이고, 10요소(총 크기 = 40바이트)로 구성됩니다.
Length가 20개 대상 요소의 복사를 지시합니다(4 X 20 = 80바이트). 그러나 대상은 40바이트만 수용하고 소스는 5바이트만 제공할 수 있으므로 5바이트가 복사됩니다.
래더 다이어그램

구조화된 텍스트
COP(array_4[0],array_5[0],10);
의견을 작성 부탁드립니다.