| 本帖最后由 baikhgmv 于 2016-11-21 09:54 编辑 
 如何在HMI上显示SIMOTION 的Cam曲线
 百度云附件:如何在西门子HMI上显示SIMOTION 的Cam曲线 .zip
 
 1 在 HMI 上显示 Cam当项目运行时,为了能在HMI上以图形方式显示项目中生成的Cam曲线,目前有一个方法实现此功能,就是调用功能块 FBGetCamValueForHMI 将Cam的位置轮廓显示在HMI上。
 1.1 FBGetCamValueForHMI 功能块在 simotion的程序单元中调用FBGetCamValueForHMI 功能块,还需要在 WinccFlexible中进行相关配置。
 在调用 FB功能块前,Cam必须使用系统函数_interpolateCam 进行插补。
 在HMI系统上显示的点数定义在数据常量 giNR_OF_SET_POINTS 中,从值保存在数组中,最大的点数为 999,也就是说常量 giNR_OF_SET_POINTS 不能超过 999。如果改变此常量的默认值,需在WinccFlexible中必须进行相应的配置。
 Cam图形在WinccFlexible中的输出是以线性类型来表示的。
 功能块读出与固定主值相关的从值并且将它们写入到一个数组中。主轴距离由Cam的系统变量来计算 ("leadingrange.start"-"leadingrange.end") /NR_OF_SET_POINTS。系统功能块 _getcamfollowingvalue 用于读出从位置值。
 注意:
 由于可能会造成较高的系统负荷,所以建议此功能块在 motion task中调用。
 1.2 调用FB在插补生成 Cam曲线后,可以调用 FB 块。必须在WinccFlexible中设置趋势指针 Transfer1,它触发WinccFlexible中的Cam曲线显示。
 "Trend Request" 指针在WinccFlexible中进行设置,指示当前显示的Cam。
 示例: 调用FB 后,如果使用图像显示功能显示Cam曲线,则在simotion中创建指针变量:
 • myTrendTransfer : 在HMI中设置的指针 "Trend Transfer1"
 • myTrendRequest : 在HMI中设置的指针 "Trend Request"
 1.3 在WinccFlexible中配置HMI"cam display" 功能用于在WinccFlexible中显示Cam。一个 cam 需要一个 "cam buffer" , 在此数组中填入FB的 INOUT变量 "SlaveValues" 。此外,Cam显示必须通过一个指针触发。
 1.4 FB的输入/输出接口表 1-1: FBGetCamValueForHMI 参数描述
 | 名称 | 参数类型 | 数据类型 | 描述 |  | cam | IN | CamType | 被显示的Cam |  | camType | IN | EnumCamPositionMode | 显示带或不带比例缩放(BASIC / ACTUAL) |  | slaveValues | IN/OUT | aSlaveCamValue | 决定从位置的数组 |  | minSlaveValue | OUT | REAL | 从位置的开始值 |  | maxSlaveValue | OUT | REAL | 从位置的结束值 |  | minMasterValue | OUT | REAL | 主位置的开始值 |  | maxMasterValue | OUT | REAL | 主要位置的结束值 |  | 注: 参数类型 IN = 输入参数,OUT = 输出参数,IN/OUT = 输入/输出参数 | 
 1.5 LAD 示意图 
如何在HMI上显示SIMOTION 的Cam曲线   图1: FBGetCamValueForHMI 的LAD示意图
 2 功能块的调用编程及HMI设置 在用户项目中,该功能是用于在触摸屏上显示Cam曲线。2.1 Simotion中创建Cam
 首先要创建Cam:
 
如何在HMI上显示SIMOTION 的Cam曲线   图2: 创建Cam曲线
 2.2 Simotion中Cam显示功能块的编程(1) 导入FBGetCamValueForHMI 功能块
 右键点击项目导航中的“Program”,在弹出的菜单中选择“Imporrt external source-ST source file”导入功能块源文件:
 
如何在HMI上显示SIMOTION 的Cam曲线   
如何在HMI上显示SIMOTION 的Cam曲线   图3: 导入ST源文件
 (2) 创建程序单元及全局变量 
如何在HMI上显示SIMOTION 的Cam曲线   图4: 创建全局变量
 (3) 在HMICamDisplay程序单元中连接功能块程序单元 
如何在HMI上显示SIMOTION 的Cam曲线   图5:连接调用的程序单元
 (4) 用MCC语言编辑Cam曲线显示程序(调用功能块FBGetCamValueForHMI) 
如何在HMI上显示SIMOTION 的Cam曲线   图6:连接调用的程序单元
 (5) 将程序分配到simotion系统执行级中 
如何在HMI上显示SIMOTION 的Cam曲线   图7: 程序分配
 2.3 WinccFlexible中HMI设置在HMI中使用了一个特殊的方法,即在控件TrendView中显示数组曲线的方法来实现Cam曲线的显示:
 (1) 建立simotion与HMI的连接
 
如何在HMI上显示SIMOTION 的Cam曲线   图8: 建立simotion与HMI的连接
 (2) 创建HMI变量仅用于显示Cam曲线的变量Tag有:
 
如何在HMI上显示SIMOTION 的Cam曲线   这些变量在SIMOTION中已创建。其中myslavevalue为Cam曲线数据,而mytrendrequest以及mytrandtransfer用于控制HMI什么时候读取Cam曲线。注意:
 设置myslavevalue的访问方法为cyclic continuous或on_command:
 
如何在HMI上显示SIMOTION 的Cam曲线   图9: 设置myslavevalues的访问方法为cyclic continuous
 (3)在HMI上插入一个显示趋势图控件TrendView在其属性->Properties->Trend中设置如下:
 
如何在HMI上显示SIMOTION 的Cam曲线   图10: 趋势图设置
 其中Samples的数量与FBGetCamValueForHMI中获取的点数相同,在Source settings中设置如下: 
如何在HMI上显示SIMOTION 的Cam曲线   图11: 趋势图设置
 (4) 运行测试完成后运行屏,显示曲线画面后,myTremdrequest第0位置1:
 
如何在HMI上显示SIMOTION 的Cam曲线   图12: 运行测试
 将myTrendtransfer设为H8001后,即将第0,15位置1后,曲线上传至HMI: 
如何在HMI上显示SIMOTION 的Cam曲线   图13: 运行测试
 在屏上显示Cam曲线: 
如何在HMI上显示SIMOTION 的Cam曲线   图14: 运行测试
 
 
 |