用户库是利用STEP 7-Micro/WIN项目的子程序生成的。可以使用任何包含子程序的现有项目生成用户库。但是,编程中会发现建立一个专用库源码更加简便。如果希望用于 建立指令库的现有子程序(可能在几个项目中),可使用导出/导入或在项目之间复制和粘贴POU的方法将这些子程序以及任何从属子程序和中断例行程序纳入一 个项目。
1)处理V内存
要解决可能出现库和现有有项目之间内存使用冲突,用户库不应当使用全局PLC资源。但应用中可能无法完全排除用户库使用全局资源的状况。但是,应尽量减少使用全局资源。
尽量用子程序参数代替全局内存,
使用子程序参数,尽量减少库对全局内存的依赖性。可以指定库指令使用的内存。例如,您可以有一个计算四个数加法的子程序,并将该输出存储在一个V内存 位置。程序的其余部分则会读取该V内存位置,以便确定计算的结果。如果您希望将该子程序放入库,考虑在子程序中增加一个输出参数,并将计算结果存储在该参 数中。这样就无须V内存位置,并允许您决定存储结果的位置。
使用临时变量进行计算,将临时变量用于计算和临时结果可尽量减少用户库对全局内存的使用。临时变量(在局部变量表中对子程序和中断例行程序进行定义) 从局部内存分配,不与项目发生冲突。局部内存并非持久性内存,无法用于在指令调用之间保存数据。其使用期是说明局部内存的子程序或中断例行程序的执行阶 段。
需要使用V内存时,有时必须在包括在指令库中的子程序和中断例行程序中使用全局V内存。此时,为在这些POU中使用的所有V内存说明符号,并在程序中使用符号。当库被编译后,这些符号被用于决定库需要的内存量。
需要I/O地址时,有时必须在包括在指令库中的子程序和中断例行程序中使用实际I/O地址。必要时,指定这些POU中使用的所有I/O地址符号,并在应用程序中使用这些符号。
2)将POU注释用于文档编制
如果选择用密码保护库指令,库用户则无法看到指令中的源码。但是,他们能够看到构成库的每个子程序和中断例行程序的POU指令。POU注释是记录每条指令功能的最佳位置。请考虑使用POU注释提供下列详细信息:
1.该指令具体执行什么功能?POU注释是给出指令功能说明的最佳位置。
2.如何调用指令?例如,如果指令仅限在首次扫描时调用,或者如果指令依赖于成功地完成另一条指令,应当使用POU注释记录这些指令的详细用法。
3.指令使用何种全局内存?如果指令直接参考全局内存,POU内存应当提醒用户这一用法,以便用户对程序进行设计,以避免内存访问冲突。
4.指令如何指示错误?很多指令需要通过输出参数或全局内存位置指示错误条件。向用户提供可能产生的错误说明以及如何纠正这些错误的说明会很有帮助。
3)分发用户库
库编译输出是一个磁盘文件(mwl文件),该文件包含STEP 7-Micro/WIN识别和使用指令库所需的所有内容。如果希望向其他STEP 7-Micro/WIN用户分发用户库,可以将该文件复制,为用户提供一份文件的拷贝。
4)星角起动用户指令库的例子
TITLE=子程序注释
Network 1 // 网络标题
//星角起动
LD SM0.0
A L0.0 //运行标志
A L0.1 //热保护
LPS
LD L0.2 //转换时间到
O L0.7 //角运行标志
ALD
= L0.7 //角运行标志
LRD
AN L0.7 //角运行标志
AN L0.4 //角接接触器
= L0.5 //星接接触器
LPP
LD L0.5 //星接接触器
O L0.3 //主接触器
ALD
= L0.3 //主接触器
AN L0.5 //星接接触器
= L0.4 //角接接触器
Network 2
LD SM0.0
A SM0.5
= L0.6 //故障指示