Logic
Logic 페이지, 주소 공간 열, 폴더, 명령 모음, 모든 패널 뒤에 있는 로직 주기와 쓰기 깔때기, 그리고 이 페이지가 무엇을 그릴지 정하는 세 권한.
Logic은 탐색 막대의 세 번째 항목입니다. Logic 보기를 가진 역할이면 누구에게나 열리며, 머리글은 "주소 공간 위에 변수(계산되거나 쓸 수 있는 값)와 액션(그 값을 쓰는 스크립트)을 정의합니다."라고 읽힙니다. 이 페이지는 마스터 상세 페이지입니다(페이지가 동작하는 방식). 왼쪽에는 주소 공간이라는 제목의 열이, 오른쪽에는 명령 모음과 상세 패널이 있습니다. 여기에서 편집하는 것은 모두 입력하는 대로 자동으로 저장됩니다. 페이지 어디에도 저장 단추는 없습니다.
이 영역에서
| 페이지 | 다루는 내용 |
|---|---|
| 주소 공간 | 예약된 일곱 뿌리, 주소를 적고 다듬는 방식, 거르기 상자, 그리고 주소를 넣는 세 가지 방법. |
| 변수 | 변수 편집기: 신원과 주소, 수식 종류와 내부 값 종류, 값 카드, 값 설정. |
| 수식 | 수식 언어, 포인트에서 읽을 수 있는 표면, 평가기가 지키는 규칙, 그리고 스크립트 편집기. |
| 액션 | 액션 편집기, 스크립트가 쓸 수 있는 것, 모든 검사 메시지, 그리고 실행과 사용/사용 안 함. |
| 트리거 | 트리거 편집기와 간격 스케줄러. |
| 경보 | 경보 편집기, 상태 기계, 알림, 그리고 확인과 모두 확인. |
| 다른 페이지에서 오는 것 | System, Server, Connector, Process 뿌리와 포인트 패널, 그리고 그것을 편집하는 페이지를 밝히는 알림. |
같은 열의 Assets 뿌리는 그 자체로 하나의 묶음입니다. 자산이 이미지, 아이콘, 색, 심볼, 연결선 종류를 다룹니다.
주소 공간 열
이 열은 주소 공간의 뿌리를 두 제목 아래에 나열합니다. 여기에서 정의함에는 이 페이지가 만들고 편집하는 것이 놓입니다. Variables, Alarms, Actions, Triggers, Assets입니다. 다른 페이지에서 옴에는 이 페이지가 보여 주기만 하는 것이 놓입니다. System, Server, Connector, Process입니다. 첫 제목 아래의 모든 뿌리는 개수를 함께 답니다(Variables와 Alarms는 자기 정의를, Actions와 Triggers도 자기 정의를, Assets는 다섯 범주의 합을 셉니다). 그리고 Alarms 뿌리와 모든 경보 폴더와 모든 경보 행은 자기가 담고 있는 것 가운데 발생 중이거나 확인을 기다리는 가장 높은 우선순위의 색 점을 답니다. 그 경보에 답하는 순간 점은 사라집니다.
트리는 게으릅니다. 가지는 펼칠 때 읽힙니다. 트리에는 실시간 값을 결코 그리지 않습니다. 선택한 마디의 상세 패널이 그 값을 보여 주며 1초에 두 번 새로 고쳐집니다.
| 조작 | 하는 일 |
|---|---|
| 거르기… | 이름에 입력한 글자가 들어 있는 행만 남도록 트리를 좁힙니다. 대문자와 소문자는 구별하지 않습니다. 아래의 무엇인가가 일치하는 폴더는 남아서 일치하는 것까지 열리고, Assets 뿌리는 이름이 일치하는 범주로 좁혀지거나 자기 이름만 일치할 때 통째로 남습니다. 자기 이름이 일치하는 주소 공간 뿌리는 목록에 남고 펼칠 때 자기 가지를 읽으며, Actions와 Triggers 구역은 일치하는 행만 나열합니다. |
| 새로 만들기…(열 바닥글) | 만들기 메뉴를 엽니다. 새 변수, 새 액션, 새 트리거, 새 경보, 그다음 구역마다 놓일 자리가 하나씩 있는 새 폴더(Variables, Alarms, Actions, Triggers)입니다. 여기에서 만든 것은 모두 자기 구역의 뿌리에 Variable1, Action1, Trigger1, Alarm1, Folder1 계열 가운데 비어 있는 첫 이름으로 놓이고 편집을 위해 열립니다. Logic 구성을 가진 역할에게만 그려지고, 스테이션이 잠겨 있는 동안에는 이유와 함께 회색이 됩니다. |
| 모두 펼치기 / 모두 접기 | 모든 가지를 열거나(단계마다 열면서 읽습니다) 모두 뿌리까지 닫습니다. |
| 오른쪽 단추 | 구역 뿌리나 사용자가 만든 폴더나 정의 행에서 그 행을 선택하고 아래의 메뉴를 엽니다. 다른 페이지에서 온 마디에서는 아무것도 열리지 않습니다. |
오른쪽 단추 메뉴는 행과 역할에 따라 이런 것을 담습니다. 새 변수 / 새 액션 / 새 트리거 / 새 경보(누른 폴더나 뿌리 안으로), 새 폴더(이미 세 단계 깊이인 폴더에서는 제시되지 않습니다), 확인(경보 행, Logic 조작), 이동 위치(구역 뿌리와 그 행이 들어갈 수 있는 모든 폴더가 있는 하위 메뉴), 복사, 삭제, 그리고 폴더에서는 폴더 이름 바꾸기와 폴더 제거입니다. Logic 구성이 없는 역할에게는 메뉴가 아예 나오지 않으며, Logic 조작을 가졌을 때 경보 행의 확인 항목만 예외입니다.
무엇인가를 선택하기 전까지 상세 영역은 비어 있습니다. "마디를 선택하면 내용을 볼 수 있습니다. 변수, 액션, 트리거, 경보는 각자의 편집기를 엽니다. 새로 만들기로 하나를 만드십시오."
명령 모음
이 모음은 선택한 마디의 동사를 그립니다. 역할이 결코 쓸 수 없는 것은 그려지지 않고, 지금 상황이 거부하는 것은 그려진 채로 회색이 되며 도구 설명에 이유가 담깁니다. 엔지니어링 조작이 진행 중이면 "유닛이 실행되는 동안에는 구성이 잠깁니다.", 스테이션이 읽기 전용으로 도는 동안에는 "런타임 정지"입니다.
| 선택 | 앞쪽 무리 | 뒤쪽(위험) 무리 |
|---|---|---|
| 사용자가 만든 폴더 | 새 변수 / 액션 / 트리거 / 경보(그 구역이 담는 갈래), 새 폴더(깊이 한도에서는 "이 폴더는 이미 폴더가 겹칠 수 있는 깊이에 있습니다."로 회색), 폴더 이름 바꾸기 | 폴더 제거 |
| 변수 | 복사 | 변수 삭제 |
| 액션 | 실행, 사용 또는 사용 안 함, 복사 | 액션 삭제 |
| 트리거 | 사용 또는 사용 안 함, 복사 | 트리거 삭제 |
| 경보 | 확인, 사용 또는 사용 안 함, 복사 | 경보 삭제 |
| Alarms 뿌리 | 모두 확인 | |
| Assets, 이미지 | 이미지 가져오기… | |
| Assets, 아이콘 | 새 사용자 아이콘 | |
| Assets, 색 | 새 색 | |
| Assets, 심볼 | 새 사용자 심볼, 심볼 가져오기…, 대화 지시문 복사 | |
| System, Server, Connector, Process 마디 | 다른 곳에서 편집한다는 알림과 그 열기 단추 |
복사는 선택한 정의를 그 구역의 뿌리로 복제합니다. 원본의 이름이 비어 있으면 그 이름으로, 그렇지 않으면 이름 (2), 이름 (3) 하는 식으로 놓고 복사본을 편집을 위해 엽니다. 복사한 경보는 정상에서 시작하고, 복사한 트리거는 일정 없이 시작하며, 복사한 액션에는 실행 기록이 없습니다. 사용과 사용 안 함은 다른 칸과 같은 자동 저장으로 정의의 사용 표시를 뒤집습니다. 모든 삭제는 먼저 묻고("'X'을(를) 삭제하시겠습니까? … 이 작업은 되돌릴 수 없습니다.") 작업 기록 줄에 "삭제했습니다."라고 알립니다. 변수나 경보를 삭제하면 그 주소를 부르던 모든 수식과 스크립트와 조건과 대시보드 바인딩이 풀리지 않은 상태로 남으며, 그것은 검증이 나열합니다.
폴더
네 구역은 저마다 폴더로 정리할 수 있습니다. 폴더는 한 구역에 속하고 그 구역의 항목만 담으며, 많아야 세 단계까지 겹칩니다. 폴더는 정리를 위한 것일 뿐입니다. 권한도 없고 평가도 없고 상태도 없습니다.
Variables와 Alarms에서는 폴더가 이어지며 주소를 이룹니다. Forno에 있는 변수는 Variables.Forno.Setpoint로 읽히고, 그 Zona1 하위 폴더에 있는 변수는 Variables.Forno.Zona1.Setpoint로 읽힙니다. 한 구역의 한 단계는 그 폴더들과 정의들이 함께 쓰는 하나의 마디 이름 공간입니다. 두 폴더가 저마다 Setpoint를 담을 수는 있지만, 같은 단계에 놓인 것끼리 같은 마디로 다듬어져서는 안 됩니다. 편집기는 입력하는 대로 그런 이름을 거부하며 이미 쓰이고 있는 주소를 밝힙니다. Actions와 Triggers는 신원으로 참조되므로, 그 폴더는 트리를 정리하기만 하고 그 패널은 주소 대신 위치 줄을 보여 줍니다.
| 명령 | 일어나는 일 |
|---|---|
| 새 폴더 | FolderN이라는 이름의 빈 폴더를 만들고 트리 행에서 이름 칸을 엽니다. 칸을 비우거나 그대로 두고 벗어나면 그 이름이 남습니다. |
| 폴더 이름 바꾸기 | 행에서 이름 칸을 엽니다. 그 폴더 아래의 모든 주소가 함께 옮겨지고 모든 참조가 고쳐 쓰이며, 작업 기록 줄이 몇 곳인지 말합니다("폴더 이름을 바꿨고 참조 3곳을 갱신했습니다."). |
| 이동 위치 | 폴더나 정의를 같은 구역의 다른 폴더 아래로, 또는 구역 뿌리로 되돌려 놓습니다. 주소와 참조가 따라옵니다. 목록은 갈 수 있는 곳만 내놓습니다. 폴더 자신, 자기 하위 폴더, 다른 구역, 그리고 자기 하위 폴더가 깊이 한도를 넘게 될 단계는 결코 내놓지 않습니다. |
| 폴더 제거 | 무엇이 옮겨지는지 말하며 먼저 묻습니다. "그 안의 항목 3개가 Variables(으)로 옮겨지고 삭제되는 것은 없습니다. 옮겨지는 주소에 대한 참조는 갱신됩니다." 항목과 하위 폴더는 한 단계 위로 다시 놓입니다. 그 가운데 둘이 옮겨 갈 자리에서 부딪히게 되면 제거는 거부됩니다. |
로직 주기와 대기열
런타임 주기는 하나의 순차 로직 대기열에서 100 ms마다 돕니다. 먼저 모든 수식 변수를 평가하고, 그다음 켜진 모든 경보 조건을 그 순서대로 평가하므로, 조건은 이번 주기의 변수 값을 읽습니다. 액션 실행, 내부 값 쓰기, 태그 쓰기, 확인도 같은 대기열을 타므로 스크립트가 주기나 다른 스크립트 사이에 끼어드는 일은 없습니다. 역시 100 ms마다 도는 별도의 검사가 때가 된 트리거를 그 대기열에 올립니다. 소비하는 쪽(대시보드, 채널, 이 페이지)은 공개된 상태를 읽습니다. 이 페이지의 어떤 것도 손으로 평가를 일으키지 않습니다.
값 쓰기
무엇이 시작했든 모든 쓰기는 하나의 깔때기를 지나갑니다. 스크립트의 대입이나 Write(...), 내부 값 변수의 설정할 값 칸, 대시보드의 조작, Process 레시피, 에이전트, 공개 노드에 쓰는 외부 OPC UA 클라이언트가 모두 그렇습니다. 이 깔때기는 유한하지 않은 값이나 대상의 형식으로 바꿀 수 없는 값을 거부하고, 도는 레시피나 인터록이 잡고 있는 신호원을 거부하며(잡고 있는 쪽을 밝힙니다), 쓰기를 옛 값에서 새 값으로 그 출처(운전자, MCP, 실행) 아래에 기록하고, 로직 대기열에서 적용합니다. 출처가 액션인 쓰기만은 예외입니다. 그것은 Events 콘솔이 아니라 상세 수집에만 들어갑니다. 주기마다 쓰는 스크립트는 값을 수천 개씩 만들어 내어 스테이션의 소식을 그 아래에 묻어 버리기 때문입니다. 콘솔이 액션에 대해 담는 것은 그 실패입니다. 태그 쓰기는 공학값을 받아 태그의 변환 경로를 거꾸로 적용해 장치가 받는 원시값으로 만듭니다. 자세한 내용은 변수와 액션에 있습니다.
권한과 잠금
| 권한 | 여기에서 허락하는 것 |
|---|---|
| Logic 보기 | 페이지를 열고 실시간 값을 포함해 그 위의 모든 것을 읽는 일. |
| Logic 구성 | 변수와 액션과 트리거와 경보와 폴더를 만들고 편집하고 이름을 바꾸고 옮기고 복사하고 사용하고 사용 안 함으로 두고 삭제하는 일, 그리고 자산 라이브러리를 가꾸는 일. |
| Logic 조작 | 여기에서, 대시보드에서, Events 페이지에서 내부 값을 쓰고 액션을 실행하고 경보를 확인하는 일. |
Logic 보기만 가진 역할은 페이지 전체를 읽기만 합니다. 편집기는 안내 아래에서 작동하지 않는 상태로 남고("현재 역할은 Logic을 볼 수는 있지만 구성할 수는 없습니다(변수, 액션, 트리거, 경보, 자산)."), 구성이나 조작 동사는 하나도 그려지지 않습니다. 조작은 가졌지만 구성은 가지지 않은 역할에게는 실행과 확인과 모두 확인과 값 설정이 살아 있습니다. Process 유닛이 스테이션을 잡고 있는 동안 페이지는 엔지니어링 잠금 알림을 보여 주고 모든 구성 동사와 편집기 칸이 회색이 됩니다. 실행과 확인과 값 설정은 계속 쓸 수 있습니다. 런타임이 정지된 동안에는 구성도 조작도 "런타임 정지"로 거부됩니다. 트리와 패널은 계속 읽을 수 있지만 실시간 데이터는 담지 않습니다. 권한의 목록은 권한에 있습니다.
이 페이지가 하지 않는 일
저장도 실행 취소도 없습니다. 자판을 한 번 누르면 그것이 곧 저장된 변경이고(작업 기록 줄이 "저장했습니다."라고 말합니다), 거부된 저장은 스테이션이 가진 값으로 칸을 되돌립니다. 에이전트가 자기 도구로 만들거나 지운 정의는 열려 있는 열을 스스로 새로 고치지 않습니다. 그 가지는 이 페이지가 그 구역에서 다음에 무엇인가를 만들거나 복사하거나 지울 때 다시 읽힙니다. 경보 이력과 Events 콘솔과 대시보드는 자기 페이지에 있습니다.