我一直再说库库库,但是我的库做的到底怎么样了呢?看官请赏脸评上几句,我还很年轻。以下都是开发手册的截图:
TIA Programming Add-On Instructions and Graphics
Single-Speed Motor
![](/club/bbs/upload/image/20181126/6367886023586192321036078.png)
说明... 3
前言... 4
概览(Overview) 6
要求与前期准备... 7
1 AS Block制作(Creating AS block) 7
1.1 块属性... 9
1.2 声明部分(Declaration section) 10
1.3 程序(Instructions)... 12
2 Faceplate弹出面板的过程设计... 18
2.1 画面结构... 18
3 Icon制作(Creating icon) 23
3.1 分解... 23
3.2 步骤... 23
3.3 接口... 27
3.4 事件... 27
4 Faceplate制作(Creating and configuring faceplate) 29
4.1 主画面(Main screen) 29
4.2 标准视图(Standard screen) 31
4.3 消息视图(Message screen) 37
4.4 参数视图(Parameter screen) 38
4.5 预览视图(Preview screen) 40
4.6 操作记录(Operation logging) 40
前言
![](/club/bbs/upload/image/20181126/6367886038464222109682111.png)
本文档详尽描述了Motor实例实现的步骤,但是更希望读者能理解的是创建实例的思想。在实例开发前有一些必须思考的问题:
1.使用成本
2.学习成本
使用成本
l WinCC Power Tags 变量授权
如果基于TIA实例开发要用于工程项目,那么购买正版软件是必不可少的,HMI根据上传的变量数Power Tags收费,如左图所示将电机的状态、操作等布尔标志打包到字或双字将是很有必要的,不但节省了Power Tags也减小了HMI与PLC之间的通讯负荷。
l 面向电机对象创建实例提高效率
实例引导着工程师逐步完成结构化编程,将工厂控制系统拆分为控制单元,再拆分后就是电机、阀门、模拟量监视、PID等控制对象,工程师根据控制单元创建FC并在其中调用电机、阀门、PID等FB实例组合,编写一些外围的逻辑完成控制任务,最后由组织块OB调用控制单元FC就组成了整个控制系统程序。
变量名(标识符)在新工程师的项目里经常可以看到中文、拼音、无意义的“A1”、“B2”这样的变量,上传到WinCC的变量也可能是I、Q、M、DB区地址,这些都是新手常见的错误,而实例AS block采用FB编程,所有上传的变量都是背景数据块,变量无需再次命名。实例的变量命名满足IEC-61131-3标准的情况下,并借鉴IT的一些命名规则,直接省去了创建变量名的工作,因此杜绝了新工程师犯这些常见的错误方法。
不局限于PLC编程,实例开发还包括icon和faceplate,在实例的faceplate中以下功能常常需要编写C脚本或者手动组态,而这些对于一个年轻工程师来说工作过于复杂:
- 每个操作按钮分配了控制权限,权限来自面板使用者权限等级的定义如:工程师,维护,操作员, 生产组长,同时还结合块内部算法,如:就地模式时,面板不允许启停电机,防止误操作。
- 按钮和参数修改等操作还会生成可查询的操作记录,为还原事故过程提供依据。
- 通用的报警消息的归档与显示:电机保护、运行错误、反馈错误、外部错误、运行时联锁、外部消息1/2。
- 多语言切换。 (默认提供中英)
- 使用结构变量,每个实例电机只需要在icon上连接2个变量即可完成所有的监视和控制的变量连接。Faceplate通过icon获取变量前缀,调用结构变量,faceplate无需连接手动输入任何变量。
![](/club/bbs/upload/image/20181126/6367886049612578011255655.png)
学习成本
l 编程语言的选择
市面存在可以商品化的实例开发基本选用的开发语言是STL和SCL,而近些年基于SCL的开发更是大热,西门子PCS7 APL高级过程控制库,BST实例,IL工业库开发语言都选择了SCL。 STL运行是最接近机器语言的,但可读性却是最差,SCL精于算法,却不适合布尔逻辑控制。电机实例的AS Block基本属于布尔逻辑控制,用LAD控制更直观。以一段PCS7 APL源代码为例,其嵌套关系很难一眼就看出:
xBumplessAllowed :=
(
(
(NOT OpenAut.Value AND xFeatSwitchMode)
AND
(NOT (Ctrl.Value XOR SafePos))
)
OR
(
xFeatSwitchMode AND OpenAut.Value AND (Ctrl.Value XOR SafePos)
)
)
OR
(
NOT xFeatSwitchMode
AND
( NOT (Ctrl.Value XOR SafePos) = CloseAut.Value )
AND
( (Ctrl.Value XOR SafePos) = OpenAut.Value )
)
OR
( NOT xFeatSwitchMode AND NOT CloseAut.Value AND NOT OpenAut.Value )
OR
( NOT xFeatSwitchMode AND CloseAut.Value AND OpenAut.Value )
;
l 使用实例执行项目
以新手编写一个项目程序为例,300点的项目可能需要研究二个月时间,用实例库包含第一次使用熟悉实例再加上编程可能也是二个月,项目最后都完成了,但是项目的工程质量却不是一个等级。实例前期开发充分考虑了程序的结构、优化和美观以及用户要求( 操作记录,双语切换,变量与消息归档等 )。当使用者第2次再使用实例做工程时的效率就会得到飞升。
概览(Overview)
图片展示的是控制和监视一个固定速度且只有一个转动方向的直接启动电机的AS block ,icon和faceplate。
![](/club/bbs/upload/image/20181126/6367886117612084713178492.png)
Motor主要功能如下:
- 在手自动模式下启动停止电机
- 监视反馈信号
- 监视连锁信号条件,停止电机或阻止电机启动
- 提供仿真功能,在仿真模式下屏蔽启动命令
- 提供报警如:启动错误,停止错误,电机保护,外部故障
- 提供手动、自动面板选择,显示就地信号和程序控制(变量连接或Graph控制)
开发手册-电机实例1.rar
开发手册-电机实例2.rar
开发手册-电机实例3.rar
开发手册-电机实例4.rar
开发手册-电机实例5.rar