Codesys#Method

8971 단어 PLCCODESYS

Version



Method란?


이번엔 메트로드에 대해서 얘기하고 싶어요.여기서 코드Sys의 온라인을 먼저 살펴봅시다.
https://help.codesys.com/webapp/_cds_obj_method;product=codesys;version=3.5.16.0
Methods are an extension of the IEC 61131-3 standard and a tool for object-oriented programming which is used for data encapsulation. A method contains a declaration and an implementation. However, unlike a function, a method is not an independent POU, and it is subordinated to a function block or program. A method can access all valid variables of the superordinate POU.

Methods는 IEC 61131-1 표준으로 확장된 OOP에서 데이터를 봉인하는 도구 중 하나입니다.Methods는 성명과 실현을 포함한다.그러나 메트로드는 펀션과 달리 독립적인 POU가 아닌 펀션과 펀션 블록의 일부다.
Method는 모든 상위 POU의 변수에 액세스할 수 있습니다.

창설


Method의 정의는 이름, 반환값, 실현된 언어(ST, LAD...)입니다.어쨌든 중요한 Access Specifer가 필요합니다.이 Access Specifer에는 다음 네 가지 옵션이 있습니다.
  • Public
  • Private
  • Protected
  • Internal
  • Public


    Function Block을 마우스 오른쪽 버튼으로 클릭한 다음 Add Object > Method 를 클릭합니다.

    Addcess specifer에서 PUBLIC, OK 를 선택합니다.
    CodeSys의 온라인 도움말에 따라
    PUBLIC or not specified: Access is not restricted.

    제한이 없다는 얘기다.

    Function Block 아래에 있는 Method가 매달려 있는 것을 볼 수 있다.

    이루어지다


    복잡한 걸 만들어도 어쩔 수 없어 Bool이 들어가면 뒤돌아 갈 거야.

    POU에서 Call FB3에서 myPublic Method()에 직접 액세스합니다.

    스크린



    결실


    여기서 주의해야 할 것은 FB3의 내용이 비어 있고 아무것도 쓰지 않았다는 것이다.

    Method Scape 정보


    Method 내의 변수가 실행되면 어떻게 됩니까?Keep이 한다고?그래도 사라질까?
    여기서 실험해보자.

    Method 추가



    이루어지다


    부르면 더하기 1.
    Method 내의 변수가 Keep일 수 있는 경우 myVar 값은 지속적으로 변환됩니다.
    Metohd 내의 변수가 Keep이 아닌 경우 myVar의 값은 항상 1입니다.


    결실


    음~ 변수의 Scope는 Method 안에만 있나 봐요.

    Private


    PRIVATE에서 Addcess specifer, OK 를 선택합니다.
    CodeSys의 온라인 도움말에 따라
    PRIVATE: Access is restricted to the program, function block, or GVL. The object is marked as (private) in the POU or device view. The declaration contains the keyword PRIVATE.

    Provate Method는 Program, Function Block, GVL로 제한됩니다.내가 보기에 펀션 블록은 자신만 콜을 할 수 있다는 것을 알 수 있다.

    이루어지다


    하는 일은 퍼블릭이 함께 하는 것이다.

    문제가 생겼다.POU에서 Provate Method를 호출할 때 Auto-Firen에서 Provate Method를 선택할 수 없습니다.
    그러니까 콜이 아니란 얘기지...

    그렇게 생각하면 나쁜 마음으로 콜을 해봐.

    컴파일 오류가 발생했습니다.Provate Method에 액세스할 수 없습니다.
    그럼 어떻게 하면 좋을까요?

    여기서 펀션 블록, FB3로 돌아가자.THIS^Keyword를 사용하면 Private Method에 액세스할 수 있습니다.

    이런 느낌이야.

    나는 다시 한 번 벨을 울렸다.

    결실



    Protected


    PROPTECTED를 선택하여 Addcess specifer, OK
    CodeSys의 온라인 도움말에 따라
    PROTECTED: Access is restricted to the program, function block, or GVL with its derivations. The declaration contains the keyword PROTECTED.

    Proted Method는 Program, Function Block, GVL 등'그것이 파생된 것'으로 한정됐다.기본적으로 Private와 비슷하지만 상속과 관련된 부분이 있으니 나중에 설명할게요.

    Method의 내용은 함께입니다.

    POU에서 Proted method에 액세스하면 안 됩니다.

    이 경우 Private와 같은 방법으로 액세스하면 OK입니다.

    INTERNAL


    INTERNAL을 Addcess specifer로 선택, OK.
    CodeSys의 온라인 도움말에 따라
    INTERNAL: Access to the method is restricted to the namespace (library).

    프로그램 라이브러리의 개념에 약간 영향을 미쳤다.나중에 설명할게요.

    이루어지다


    직접 방문해도 컴파일 오류가 없습니다.

    THIS


    Method가 자신만의 Function Block에 있는 Method 변수에 액세스할 때 사용하는 Keyword입니다.
    아까 Provate metohd Protect method, THIS^를 사용하여 Method에 액세스한 것을 기억하십니까?

    설치 예


    그냥 글로는 좀 이해하기 어려우니 간단한 프로그램을 만들자.
  • FB3지원 int
  • myPublicMethod라고 부르면 2.
  • myPrivateMethod라고 부르면 4입니다.
  • myProtedMethod라고 부르면 3입니다.
  • my Internal Method라고 부르면 1입니다.
  • 이런 느낌이네요.

    FB3에 있어요.int의 정의도 잊지 마세요.

    마지막으로 MainPOU에서 Call의 정시 수정입니다.

    결실



    하, 수고하셨습니다.

    좋은 웹페이지 즐겨찾기