WasomCodeX试用-工程文件结构

官方的Gitee提供了Tutorial程序供下载学习。
打开后,可以看到程序结构。

在这个程序里,可以看到从main主程序到各个FC都写在一个文件里。
同时,通过终端查看下文件目录结构。

/wasomeide_workspace/tutorials/projects/ch05-1$ tree -l
.
├── ams_pack.log
├── build
│   ├── app.tar.gz
│   ├── app.zip
│   ├── debug
│   │   ├── app.bin
│   │   ├── app.layout
│   │   ├── iec.cfg
│   │   ├── iec.io_map
│   │   ├── iec.sn
│   │   └── resources
│   │       └── project.manifest
│   └── release
│       ├── app.bin
│       ├── app.layout
│       ├── iec.cfg
│       ├── iec.io_map
│       ├── iec.sn
│       └── resources
│           └── project.manifest
├── CONFIG
│   ├── build.id
│   ├── global.WAVARS
│   ├── project.IOMAP
│   ├── resources
│   │   └── project.manifest
│   └── resources.WARES
├── MODULES
├── PROGRAM
│   ├── DOUs
│   │   └── User_DataTypes.json
│   ├── POU_FBs
│   ├── POU_FULL_ST
│   ├── POU_FUNCs
│   ├── POU_PRGs
│   │   └── prog_main.st
│   └── SYS_EVENTS
└── README.md

16 directories, 23 files

可以看到,主要就是一个在PROGRAM/POU_PRGs路径下的prog_main.st文件。
我们再查看下这个文件内容:

/wasomeide_workspace/tutorials/projects/ch05-1$ cat PROGRAM/POU_PRGs/prog_main.st 
(* 本APP展示基本变量定义、赋值、使用; 表达式、基本流程语句的用法 *)

PROGRAM PLC_PRG
VAR
    b: BOOL;         (**BOOL类型的变量定义*)
    n: INT := 10;    (*初始化为10*)
    r: REAL := 5.2;
    s: SINT;
    d: ARRAY[0..2] OF DINT;      (*定义长度为3的一维数组*)
END_VAR

    b := convertToBOOL(n);       (*调用函数并将返回值赋给变量b*)
    s := convertToSINT(TO_DINT(r));
    d[0] := getSumWithFor(s);     (*使用for语句实现的函数*)
    d[1] := getSumWithWhile(s);   (*使用while语句实现的函数*)
    d[2] := getSumWithRepeat(s);  (*使用repeat语句实现的函数*)

    WA_LOG('g_iVar1=%d, g_iVar2=%d, g_bVar=%d, g_fVar1=%f, g_sVar=%s', 
        g_iVar1, g_iVar2, TO_INT(g_bVar), g_fVar1, g_sVar);

    g_fVar1 := g_fVar1 + 0.1;
 
END_PROGRAM


(** 使用IF ELSE 语句将INT转换为BOOL *)
FUNCTION convertToBOOL : BOOL
    VAR_INPUT level: INT; END_VAR
    IF level > 10 THEN
        convertToBOOL := TRUE;
    ELSIF level <= 10  THEN
        convertToBOOL := FALSE;
    ELSE
        convertToBOOL := TRUE;
    END_IF;
END_FUNCTION
...

可以看到,st程序的文本就在这个文件里面。
咨询了厂方工程师,被告知FC、FB也可以分多个文件保存。于是,按照该样例程序内容,重新写了一个。

这个程序里,我把FC都拆到了函数栏里,一个个独立开来,可以看到主程序就显得干净很多,看起来和另外几个PLC编程软件类似了。
再看下文件结构:

/wasomeide_workspace/tutorials/projects/Tutorials-1$ tree -l
.
├── ams_pack.log
├── build
│   ├── app.tar.gz
│   ├── app.zip
│   ├── debug
│   │   ├── app.bin
│   │   ├── app.layout
│   │   ├── iec.cfg
│   │   ├── iec.io_map
│   │   ├── iec.sn
│   │   └── resources
│   │       └── project.manifest
│   └── release
│       ├── app.bin
│       ├── app.layout
│       ├── iec.cfg
│       ├── iec.io_map
│       ├── iec.sn
│       └── resources
│           └── project.manifest
├── CONFIG
│   ├── build.id
│   ├── global.WAVARS
│   ├── project.IOMAP
│   ├── resources
│   │   └── project.manifest
│   └── resources.WARES
├── MODULES
└── PROGRAM
    ├── DOUs
    │   └── User_DataTypes.json
    ├── POU_FBs
    ├── POU_FULL_ST
    │   ├── convertToBOOL.st
    │   ├── convertToSINT.st
    │   ├── getSumWithFor.st
    │   ├── getSumWithRepeat.st
    │   ├── getSumWithWhile.st
    │   └── main.st
    ├── POU_FUNCs
    ├── POU_PRGs
    └── SYS_EVENTS

可以看到,在POU_FULL_ST路径下,多了几个st文件,包括出程序main.st以及几个函数。
再看下main.st的内容:

/wasomeide_workspace/tutorials/projects/Tutorials-1$ cat PROGRAM//POU_FULL_ST/main.st 
(* 本APP展示基本变量定义、赋值、使用; 表达式、基本流程语句的用法 *)

PROGRAM PLC_PRG
VAR
    b: BOOL;         (**BOOL类型的变量定义*)
    n: INT := 10;    (*初始化为10*)
    r: REAL := 5.2;
    s: SINT;
    d: ARRAY[0..2] OF DINT;      (*定义长度为3的一维数组*)
END_VAR

    b := convertToBOOL(n);       (*调用函数并将返回值赋给变量b*)
    s := convertToSINT(TO_DINT(r));
    d[0] := getSumWithFor(s);     (*使用for语句实现的函数*)
    d[1] := getSumWithWhile(s);   (*使用while语句实现的函数*)
    d[2] := getSumWithRepeat(s);  (*使用repeat语句实现的函数*)

    WA_LOG('g_iVar1=%d, g_iVar2=%d, g_bVar=%d, g_fVar1=%f, g_sVar=%s', 
        g_iVar1, g_iVar2, TO_INT(g_bVar), g_fVar1, g_sVar);

    g_fVar1 := g_fVar1 + 0.1;
 
END_PROGRAM

可以看到,对应的就是主程序的内容了。

posted @ 2024-11-19 17:08  科里布  阅读(36)  评论(0编辑  收藏  举报