simotion 编程指南

上传人:简****9 文档编号:95554089 上传时间:2019-08-20 格式:PDF 页数:13 大小:397.93KB
返回 下载 相关 举报
simotion 编程指南_第1页
第1页 / 共13页
simotion 编程指南_第2页
第2页 / 共13页
simotion 编程指南_第3页
第3页 / 共13页
simotion 编程指南_第4页
第4页 / 共13页
simotion 编程指南_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《simotion 编程指南》由会员分享,可在线阅读,更多相关《simotion 编程指南(13页珍藏版)》请在金锄头文库上搜索。

1、SIMOTION 编程(一) 2013-05-16 在SCOUT光盘里,有个非常详细的编程指南(点击此处查看),非常好,只是不 知道为什么被放在这么不起眼的位置。该编程指南用来帮助用户获得一个标准、 统一的代码,并且使代码可以更容易地维护和重新使用。不仅如此,错误可以在 早期阶段(例如,由编译器)被识别和避免。 统一外观,可维护以及清晰的源代码对于工程师和工程公司具 有非常重要的意义。有些遗憾,这么个好东西是全英文的,在学习SIMOTION的过 程中,我挑选出这本手册中比较重要的编程标准,翻译出来,希望对大家有所帮 助。其中规则是原则上必须遵守的,而建议则是尽量遵守的条目。其实编程的规 范标准

2、不仅对于SIMOTION工程师有意义, 对于其他编程例如PLC也是可以借鉴的。 代码支持识别错误和bug,例如,通过使用前缀可以简单地识别类型不兼容。 目的:代码问题在早期阶段发现。 规范标准应用程序和库 目的:程序代码更容易学习和提高程序代码的可重用性 模块化 目的:增加程序透明度水平 封装子功能,使用不同的模块进行简单组合,每个模块定义清晰而独立的接口。 增加适用性使代码可以持续改进 目的:改变的各个模块的程序代码对于功能/功能块库或项目/方案影响降到最 低。不同的编程工程师应该可以在单独的模块中修改程序代码。 规则规则 1 1: 每一个编程的源文件必须进行文档记录,特别是专用的FB FC

3、 。并应该使用统一 的模板,程序模板在SCOUT光盘中有提供。 建议:不使用特殊字符,例如,U,A等。 规则规则 2 2: TAB不容许在源代码中使用。应使用四个空格的缩进。当使用SCOUT内部ST编辑器 中是自动完成的。 这是为了避免不同的编译器对于TAB的解释长度差异而考虑的。 建议:为提高可读性,源代码单行长度应限制在 80 个字符。 建议:各种ST代码段相关的功能应使用换行符分隔。 建议:整体的意见(描述一个函数或代码段的战略注释):应设在相应的代码段 开始描述。 局部注释 (战术注释) 如果可能的话, 应位于代码行的同行末尾 - 否 则在相关联的代码行之前。 规则规则 3 3: 在S

4、T中注释以/ /开始。注释在斜线符号后开始,没有任何空格。出于测试目的, 完整的块可以被简单地使用(* *)进行屏蔽。 规则规则 4 4: 每个程序单元名称需包含一个前缀。这个前缀表明当前的程序单元功能。 规则规则 5 5: 使用前缀x,表明在一个单位中使用数据、功能、 FB和程序,以确保少量代码的 POU的紧凑。 规则规则 6 6: 前导下划线字符(“_”)识别功能和功能块是保留给西门子系统功能的。前导 下划线字符不应该被用来在应用程序本身。 规则规则 7 7: 不得使用使用大写或小写进行标识符的区分。 一旦某种书写方式的标识符已被选 中,其在所有的源代码中使用。 推荐:标识符中的名称采用英

5、文。名称表示上下文中的源代码标识符的意义和目 的。 规则规则 8 8: FC / FB的输入和输出变量不使用前缀。如果结构被用于输入和输出变量,那么 该结构的元素成员应具有前缀。 规则规则 9 9: 常量不包含前缀。 规则规则 1010: 使用前缀后名称以大写字母开始 举例: 局部变量:rMaxLength 规则规则 1111: 在系统中定义的名称 (例如,变量和函数的名称)是不允许再使用的。 推荐:名称的最大长度为 32 个字符。 规则规则 1212: 功能,功能块和程序名称结构应根据下面的示意图 组合 :操作对象属性 例如: 标识符:FCSwapWordBigEndian: 名称:Swap

6、WordBigEndian 操作:Swap 对象:Word 属性:BigEndian 规则规则 1313: 前缀和标识符之间使用分隔符(下划线字符)是不允许的。 规则规则 1414: 变量前缀用来表示数据类型的内存位置。 括号中的前缀是一种替代方法,使用哪一种需要在整个项目中保持一致。 举例: gasFeeder 全局送料器结构数组 推荐: 使用 字母 e s a 开头并且使用 type 作为结尾。 SIMOTION SIMOTION 编程(二)编程(二) 规则规则 1515: 枚举(枚举)的元素全部写大写字母。如果包括单独的单词,那么使用下划线字 符分开(常量也是)。 规则规则 1616:

7、前缀和标识符不使用下划线隔开。 推荐:数组范围应从 0 开始到“最大值-1”结束。 推荐:类型定义应在接口部分进行,特定的设备变量类型须具有独特、明确的定 义 推荐:类型定义并不适用于基本数据类型。 规则规则 1717: 常量的名称总是用大写字母。为了能够识别单个的单词或缩写,单词或缩写之间 应插入下划线字符。 推荐:应加以避免直接在代码中使用数值,如果可能的话,使用常量。 规则规则 1818: 当声明变量,该变量被缩进,然后由换行符分开。 推荐:变量只是在默认数据类型初值不适用时进行初始化。如果可能的话,在初 始化时,应作出定义的变量运行的原因。 推荐:初始化(分配常量数据),通常使用它的数

8、据类型(文字)实现。 Example: b16Mask1 : WORD := 16#01; /not ok b16Mask2 : WORD := 16#0001; /ok b8Mask3 : BYTE := 2#0000_1010; /ok b32Mask4 : DWORD := 5; /not ok b32Mask5 : DWORD := 16#0000_0005;/ok r32Temp1 : REAL := 40; /not ok r32Temp2 : REAL := 40.0; /ok i16Counter1 : INT := 16#00; /not ok i16Counter2 : I

9、NT := 10; /ok 推荐:尽可能的避免在程序中访问操作 SIMOTION 设备的过程映像,以提高代码 的可移植性。应在集中的位置进行 IO 的定义。 Example: /declaration boJogPos AT %IX10.1 : BOOL; b8Port1 AT %IB1 : BYTE; i16ToolKey AT %IW10 : INT; /cast possible i32ProgNum AT %QD10 : DINT; /access to I/O-Image b8Image := b8Port1; /ok b8Image := %IB1; /not ok 规则规则 19

10、19: 每个程序中需要在程序代码中包含一个描述性的标题。描述中包含了以下几点: -功能的说明 -任务分配的说明 -目标系统的要求 -程序版本一起与作者和日期 具体可以参考模板和手册中的实例。 推荐: 只要不产生负面影响的理解意义的前提下二元运算符和赋值操作符前后应 均有空格 。 Example: i8SetValue := i8SetValue1 + i8SetValue2; /ok i8SetValue:=i8SetValue1+i8SetValue2; /not ok 推荐:表达式应始终设置在方括号中,以清楚显示的顺序解释。 Example: boSetFlag := (r32Actual

11、Position 150.0); 推荐:对于复杂的表达式,为了突出重点,每个“子条件”使用一个换行符。这 意味着代码可以使用透明、清晰的注释。 推荐:条件部分和指令部分之间应保持一个严格的划分。 规则规则 2020: 如果一行写不下完整的条件,布尔逻辑运算符应位于每行的最右侧。IF 指令中 的条件需缩进四个空格,THEN 与对应的 IF 位于同一高度。如果 IF 条件可以在 一行写完,则 THEN 位于此行的最右端,对于每一个新的结构层次,括号字符偏 移一个空白,所以括号中的条件结构层次以相同的方式缩进。具体可以参考模板 和手册中的实例。 规则规则 2121: 一个 CASE 指令必须始终包含

12、一个 else 分支, 以便能够对运行期间发生的错误进 行处理。 规则规则 2222: 主体控制结构中的每个指令均被缩进,须整齐。 规则规则 2323: 如果功能或功能块提供错误代码,这些错误码必须始终进行评估。 推荐:一个功能 FC 的返回类型应始终声明。 Example: FUNCTION FCSwapWord : WORD /description 推荐:一个函数调用时应该按照声明的顺序进行参数赋值。 输入参数应该有默 认值,因为它可使程序的调用更简短、更透明。 推荐:对于 ST 编程,应该每个参数开始一个新行。 推荐:很多输入参数(值传递) - 尽可能被封装在一个结构(更高效的拷贝)。

13、 在 LAD / FBD 中,个别变量经常需要修改其数值 : 例如对于简单的使用控制变 量 ,可以作为单独的变量设置。输入输出参数从运行的角度来看是更有效的调 用(名称调用) e.g. 用于传递大的数据量 举例: /structure within VAR_IN_OUT FBBottleCheckOutlet( formulaInOut := sFormula4711 ,vectorInOut := sMatrix20118 ,. ); 规则规则 2424: 如果参数具有标准意义则标识符和功能方面需要根据 PLCopen 的 V1.1 规范,然 后应使用适当的标准标识符。此外,可以使用 Res

14、et 中止函数和函数块并输出显 示 resetActive。这两个变量是可选的,PLCopen 的 V1.1 中没有定义。 建议:如果程序员使用 VAR_INPUT 参数 reset 复位,则可以使用 VAR_OUTPUT 参 数 resetActive。在复位过程中此 resetActive 参数信号始终存在(例如:轴目 前被停止,但还没有到达停止状态。如果可以在一个时钟周期停止,则 resetActive 仅显示一个周期的高电平。 规则规则 2525: 与 PLCopen 相反,总是使用 Done 参数代替 inVelocity,INGEAR INSYNC。 推荐:如果用布尔输出变量 IN

15、GEAR 和 INSYNC 名称,那么这些变量应该与 SIMOTION 系统函数的输出:_MC_GearIn,_MC_CamIn 相同(设置为 TRUE 时,只 要该轴与主站同步运行轴)。 规则规则 2626: 如果程序员使用的 VAR_INPUT 参数 execute, 则 VAR_OUTPUT 参数 Done 必须使用。 规则规则 2727: FC 和 FB 参数不使用前缀。这样做的原因是为了 SIMOTION 参数名称和 PLCopen 的规范保持一致性。 规则规则 2828: FC 和 FB 参数内的结构元素应使用前缀。 规则规则 2929: 参数名称中包含一些词汇,应选择与口语相同的

16、词语的序列。参数名称以小写字 母开始。包含一些词汇的名称都写在一起,每一个字以大写字母开始。 推荐:库的名称须包括前缀 L(如 LCarton)。不使用下划线字符。库名称的最 大字符长度限于 8 个字符以内。 SIMOTION SIMOTION 编程(三)编程(三) 续编程指南翻译 规则规则 3030: 所有的功能/功能块/导出类型的名称定义结构为:前缀+该库的名称+名称+ (type)。 这可以防止被分配相同的名称用于其它库。名称空间的使用是不允许的,更长的 名字会使处理 LAD/ FBD/ MCC 更加困难。 规则规则 3131: 每个库包含一个 UNIT 的版本历史记录。此 UNIT 名称 aVersion。 规则规则 3232: 扩展类型的定义和常量在单独的 UNIT 中独立声明 。 规则规则 3333: 在一个库中定义的类型定义最多可以从库中导出两个 UNIT。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号