| 作者 | 主题 |
|---|---|
|
WWCWWC 至圣
经验值:79164 发帖数:9102 精华帖:157 |
楼主
主题:关于200smart PLC子程序调用时可能产生的问题
关于200smart PLC子程序调用时可能产生的问题 今天在“找答案”栏目中看到有这样一个贴子,楼主提问是:“在有条件调用子程序时,出现了一下关于子程序有条件调用的可能产生的问题”,现就这个问题点来探讨一下如何正确调用。 假设,有一个项目需要编辑若干个用户子程序。一般西门子的结构化编程方式可以把相对复杂的控制逻辑通过结构化编程方式转变的相对简单、易懂,阅读用户程序相对容易,用户在实际应用中会调用若干个子程序及中断子程序,西门子200(200smart)允许用户调用新建子程序的最大个数为128个,中断子程序同样也是128个。 在创建新项目过程中,用户会新建诸如、手动操作、自动控制、报警信息、模拟量控制、通讯控制、定义特殊用途的初始化子程序(如高速计数器)等。这些子程序可能在设备实际应用中需要无条件或者有条件调用。另外,子程序的嵌套层不宜过于做的太深,最多嵌套深层为8个层级,中断子程序嵌套层级为4层,嵌套调用子程序方式这里也不再深入展开。 下面以一个简单的例子说明子程序的创建及实际应用,图示: 1) 新建一个项目,在子程序窗口按钮下,右键新建一些子程序,并在属性中重新命名子程序名称,图示:手动控制、自动控制、报警信息、输出、、、、、、 2) 在主程序中调用上述子程序,图示: 3) 如果在手动、自动子程序中没有进行初始化操作时,那么,在停止调用子程序时,这些子程序的原运算结果会随着停止调用子程序后,保持其输出及逻辑运行状态,这将是比较致命的问题,类似的具体程序这里不再作详细描述。如果按这样简单的创建、调用显然不符合精确控制的理论及要求。所以在有条件调用子程序的创建中还需要增加这些初始化操作内容,图示:分别在原子程序中创建一个初始化接口变量(Bool) 4) 在主程序中重新编辑调用程序,图示: 这样当实际调用这些子程序时,会在调用的本周期内,先执行这步网络段1的子程序调用于初始化操作,然后再实现控制逻辑的程序段。 具体的控制程序用户自行处理,这里不再繁琐。 |