====== 문자열 관련기능 ====== 문자열을 기록 / 표시 할 수 있는 기능을 제공하고 있습니다. ==== 문자열이란? ==== 유니코드의 집합을 뜻하며, 맨끝에는 반드시 0이 위치해야 합니다. 한 문자당 1워드가 필요합니다. 예를들어 'ABC'문자열의 경우 0x0041, 0x0042, 0x0043, 0 이렇게 4 워드로 구성된 데이터집합을 의미합니다. | A | B | C | 종료코드 | | 0x0041 | 0x0042 | 0x0043 | 0 | ===== 외부 장치에 문자열 기록하기 ===== 제어보턴을 눌렀을때, //외부 장치//에 문자열을 기록하는 방법을 알아보겠습니다. 제어버튼의 속성창에서 아래와 같이 선택하세요. {{ :comfilehmi:hmieditor_string:stringexplain2.png?nolink |}} 목적지 종류를 <문자열 주소>로 하고, 저장할 주소를 D3으로 했습니다. 그리고 출발지 종류는 <텍스트 직접 지정>, 기록할 내용에 'COMFILE'이라고 적었습니다. 이렇게 하면 버튼을 터치했을때, PLC1의 40003주소부터 COMFILE이라는 문자열이 저장됩니다. D3 : 'C' D4 : 'O' D5 : 'M' D6 : 'F' D7 : 'I' D8 : 'L' D9 : 'E' D10 : 0 실제로는 D3 부터 D10까지 총 8 워드에 해당문자의 유니코드가 각각 기록됩니다. D3 : 0x0043 D4 : 0x004f D5 : 0x004d D6 : 0x0046 D7 : 0x0049 D8 : 0x004c D9 : 0x0045 D10 : 0 [[.:AscciTable:|초보자 노트 : 유니코드란?]] ===== 내부 메모리에 문자열 기록하기 ===== //외부장치//가 아닌 //내부 메모리//에도 문자열을 기록할 수 있습니다. //내부 메모리//란 내부에 있는 별도의 기억공간입니다. 아래와 같이 설정한다면 //외부 장치//에 기록하듯이 //내부 메모리//에도 문자열을 저장할 수 있습니다. {{ :comfilehmi:hmieditor_string:stringexplain3.png?nolink |}} //내부 메모리// 시작주소를 0으로 했으므로, 버튼 터치시 아래와 같이 0번지부터 문자열이 기록됩니다. (실제로는 해당 유니코드가 기록됨) 0 : 'C' 1 : 'O' 2 : 'M' 3 : 'F' 4 : 'I' 5 : 'L' 6 : 'E' 7 : 0 ===== 내부 문자열 변수 ===== {{ :comfilehmi:hmieditor_string:stringexplain1.png?nolink |}} //내부 문자열 변수//를 사용하여 문자열 하나를 보관할 수 있습니다. //내부 문자열 변수//는 HMI에 있는 기억공간이며 수치만 저장할 수 있는 //내부 변수//, //내부 메모리//와는 다른 기억공간입니다. //내부 문자열 변수//명은 반드시 $로 시작해야하며, 대소문자를 구분합니다. 한글도 사용할 수 있습니다.예를들면 $str1 이라는 //내부 문자열 변수//에 '아름다운우리나라'라는 문자열 하나를 전부 할당할 수 있다는 뜻입니다. ==== 외부 장치에 내부 문자열 변수 기록하기 ===== 아래와 같이 설정하면, //외부 장치//에 //내부 문자열 변수//의 값을 저장할 수 있습니다. {{ :comfilehmi:hmieditor_string:stringexplain4.png?nolink |}} 버튼 터치시 //내부 문자열 변수// $str1의 내용이 지정한 번지부터 기록됩니다. ===== 스크립트 액션에서의 문자열 사용예 ===== ==== 내부 문자열 변수에 문자열 기록하기 ===== 스크립트의 따옴표를 이용해서 내부 문자열 변수에 문자열을 할당할 수 있습니다. 멀티액션 버튼에서 액션을 하나 추가하세요. {{ :comfilehmi:hmieditor_string:stringexplain5.png?nolink |}} <스크립트>를 선택한뒤 아래와같이 입력하면, 버튼 터치시 $str1 내부 문자열 변수에 "아름다운우리나라" 문자열이 저장됩니다. {{ :comfilehmi:hmieditor_string:stringexplain6.png?nolink |}} 스크립트에서 아래와 같은 문자열 관련 수식도 사용할 수 있습니다. $a=$b : $b내용을 $a로 복사 $a=$b+$c : $b와 $c을 붙여서 $a에 복사합니다. 즉, "COM"+"FILE"은 "COMFILE"이 됩니다. $a="korea"+$b : 직접 입력한 문자열과 내부 문자열 변수의 내용을 합침. 아래와 같은 수식은 잘못된 사용예입니다. $a=3 : 숫자는 내부 문자열 변수에 할당할 수 없습니다. a="b" : 내부 변수에 문자열을 할당할 수 없습니다. $a=$b+2 : 숫자와 내부 문자열 변수는 서로 합칠수 없습니다. ===== 문자열 관련 함수 ===== * text_to_num(문자열) : 문자열을 넣으면 수치값을 반환. \\ (예) "32.1"을 넣으면 32.1이 반환됨 * num_to_text_int(수치) : 수치값을 넣으면 정수형태의 텍스트를 반환 \\ (예) 32.1을 넣으면 "32"가 반환됨 * num_to_text_int(수치,자리수) : 수치값을 넣으면 자리수가 고정된 정수형태의 텍스트를 반환 \\ (예) 32.1과 4를 넣으면 "0032"가 반환됨 * num_to_text_hex(수치) : 수치값을 넣으면 16진수형태의 텍스트를 반환 \\ (예) 10.1을 넣으면 "A"가 반환됨 * num_to_text_hex(수치,자리수) : 수치값을 넣으면 자리수가 고정된 16진수 형태의 텍스트를 반환 \\ (예) 10.1과 4를 넣으면 "000A"가 반환됨 * num_to_text_dec(수치,소수자리수) : 수치값을 넣으면 특정 소수자리수를 가진 실수 텍스트를 반환 \\ (예) 10.3과 4를 넣으면 "10.3000"이 반환됨 ===== 멀티액션에서 내부 문자열 변수 제어 ===== 액션중 <내부 문자열 변수 제어>가 있습니다. 문자열 변수에 문자열을 대입하거나, 삽입/삭제/형변환등의 액션을 수행할 수 있습니다. 아래 링크중 <내부 문자열 변수 제어>부분을 참조하세요. [[comfilehmi:multiaction12:index|내부 문자열 변수 제어]] [[comfilehmi:index#화면편집|상위 페이지로 가기]]