simotion ST编程,变量和程序的模块化

通过这几年的实践,对simotion的程序结构规划有了一些新的理解。工程师在面对项目时,经常有几个问题比较困惑。

目前面对的问题

1)如何理解其他人编写的程序

2)如何从程序中找到可以移植的部分

传统的程序结构

--- d_HMI_VAR
--- d_Global_VAR (global variable of different module)
--- d_IO_VAR
--- p_module01
--- p_module02

优点:便于区分变量是否需要连接HMI

问题:不利于module的移植,module的变量和程序不在一起

模块化的程序结构

--- d_general_var (d_machine_data)  \\ machine status, axis status, axis cmd, alarms
--- d_IO_VAR
--- p_module01 \\  variables, fb-instance, program
--- p_module02 \--- p_module03 \\

优点:

  • 全局变量定义部分,仅包含和顶级设备功能相关的通用变量,如设备模式、轴状态,报警word等
  • 和模块(工艺)相关的变量,放在模块内global部分中
  • 减少程序和程序之间的耦合
  • 单个module包含本模块所用的大部分变量

问题:

  • 需要改变连接HMI变量的习惯,HMI需要到不同的module内连接变量。这个改变同时也方便了HMI连接的模块化。

小结

对程序结构进行改进,是长期的工作。不同人,不同的时期理解可能会不一致。本文只提供了一种理解。

原文地址:https://www.cnblogs.com/lion-zheng/p/9429551.html

时间: 2024-10-30 20:37:31

simotion ST编程,变量和程序的模块化的相关文章

傻瓜式编程范式,程序员的基本功

我从数据连续性论文延伸阅读时,在HN thread 论坛 @TuringTest 的发言引用中,意外发现了一篇文章<傻瓜式编程范式:程序员基本功>,由彼得·范·罗伊写于 2009 年,描绘了设计编程语言的操作空间.如果你喜欢这篇文章,可能也会喜欢范·罗伊和哈利迪的书<Concepts, Techniques, and Models of Computer Programming>,因为该文的主要内容正是基于这本书. 本文介绍了所有主要编程范式.它们底层的概念以及它们的关系…我们给出

程序的模块化的一些见解3

现在的产品,往往不能一次性完成程序,客户体验后一般都会增加 或者修改程序.对于新增加的程序,我会常常增加多一个标志位或者 几个标志位来完成,因为这样比较直观容易理解,但逻辑性往往没有 那么好,致命的是,由于标志位没有及时清除,可能后果不堪设想, 当然,有经验的程序员往往会想到这个问题,就是增加时候,也考虑 了清除标志位. 因此,对于功能性比较重要的,还是建议完全理解 好程序,再进行规划,最后增加一个模块化(即一个新的函数)的程 序来完成新要求,同时新增加模块尽量用static变量,这样也不影响

Bash Shell脚本编程-变量知识

Shell:GUI  CLI 提供交互式接口:提高效率 命令行展开:~ ,{} 命令别名:alias 命令历史:history Globbing:*,?,[],[^] 命令补全:$PATH指定的目录下 路径补全:TAB键 管道:| 输入输出重定向:>    >> 提供编程环境: bash自动运行脚本机制 面向过程(以指令为中心组织数据)的编程模型 脚本编程 输入指令解决问题 程序是语句和表达式组成的 运行时根据一定流程来执行: 顺序执行 选择执行 循环执行 程序是指令+数据的 面向对象(

Go编程——变量、函数导出与首字母大写

Go编程--变量.函数导出与首字母大写 标识符可被 导出 以允许从另一个包访问. 同时符合以下条件即为已导出标识 1.标识符名的第一个字符为Unicode大写字母(Unicode类别"Lu"): 2.该标识符在包块中已声明或为字段名或方法名. 以程序导入gotest/even包为例 package main import ( "even" "fmt" ) func main() { i:=even.I fmt.Printf("Is %d

UC高级编程--实现myls程序

跟着达内视频,学习UC高级编程,完毕程序小练习. 主要练习的函数为:  int lstat(const char *path, struct stat *buf);  size_t strftime(char *s, size_t max, const char *format,  const struct tm *tm);此函数, 第一次使用. time_t mktime(struct tm *tm);//把分离的时间合成整数,写项目代码中,当时自己实现了这个函数功能. #include <s

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句 一:实验环境 1):虚拟机 2):linux系统 二:实验目标 1): shell 基本语法 2):变量 3):表达式 4):判断语句 5): if表达式 三:实验脚本 第一块 一个简单的shell脚本程序 [[email protected] ~]# mkdir test [[email protected] test]# vim example1.sh #!/bin/bash #This is to show wha

ffmpeg+sdl教程----编写一个简单的播放器4(让程序更模块化)

来源:http://blog.csdn.net/mu399/article/details/5815444 音频和视频之间的同步,再那之前需要先做一些准备工作. 为了让程序更模块化,便于扩展,需要把原来main函数中的各个功能模块代码分离出来放在相应的函数中.该教程和上个教程相比代码量和难度都增加很多,比上个教程使用了更多的线程,一定要理解清楚各个函数和数据结构之间的关联以及线程之间如何协同工作. [c-sharp] view plaincopy // ffmpegExe.cpp: 主项目文件.

static 修饰的变量在程序中容易出现的问题

package lianxi; public class StaticTest {    int a = 0;    static int b =0;    StaticTest(){        a++;        b++;//    }    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        S

001编程基础----GDB程序调试

一.GDB是GNU发布的程序调试工具.有三方面功能: 1.启动被调试程序. 2.让被调试程序在指定位置停住. 3.当程序被停住时,可以检查程序状态(如变量值). 二.GDB调试步骤: 1.编译生成可执行文件 gcc -g hell.c -o hello 2.启动GDB gdb hello 3.在main函数处设置断点 break main(或b main) 4.运行程序 run 5.单步 next 6.继续运行 continue(或c) 7.退出GDB   quit 三.GDB命令的常用操作 l