1 在上顯示 cam
當項目運行時,為了能在hmi上以圖形方式顯示項目中生成的cam曲線,目前有一個方法實現(xiàn)此功能,就是調(diào)用功能塊 fbgetcamvalueforhmi 將cam的位置輪廓顯示在hmi上。
1.1 fbgetcamvalueforhmi 功能塊
在 simotion的程序單元中調(diào)用fbgetcamvalueforhmi 功能塊,還需要在 winccflexible中進行相關(guān)配置。
在調(diào)用 fb功能塊前,cam必須使用系統(tǒng)函數(shù)_interpolatecam 進行插補。
在hmi系統(tǒng)上顯示的點數(shù)定義在數(shù)據(jù)常量 ginr_of_set_points 中,從值保存在數(shù)組中,最大的點數(shù)為 999,也就是說常量 ginr_of_set_points 不能超過 999。如果改變此常量的默認值,需在winccflexible中必須進行相應(yīng)的配置。
cam圖形在winccflexible中的輸出是以線性類型來表示的。
功能塊讀出與固定主值相關(guān)的從值并且將它們寫入到一個數(shù)組中。主軸距離由cam的系統(tǒng)變量來計算 ("leadingrange.start"-"leadingrange.end") /nr_of_set_points。系統(tǒng)功能塊 _getcamfollowingvalue 用于讀出從位置值。
注意:
由于可能會造成較高的系統(tǒng)負荷,所以建議此功能塊在 motion task中調(diào)用。
1.2 調(diào)用fb
在插補生成 cam曲線后,可以調(diào)用 fb 塊。必須在winccflexible中設(shè)置趨勢指針 transfer1,它觸發(fā)winccflexible中的cam曲線顯示。
"trend request" 指針在winccflexible中進行設(shè)置,指示當前顯示的cam。
示例: 調(diào)用fb 后,如果使用圖像顯示功能顯示cam曲線,則在simotion中創(chuàng)建指針變量:
· mytrendtransfer : 在hmi中設(shè)置的指針 "trend transfer1"
· mytrendrequest : 在hmi中設(shè)置的指針 "trend request"
1.3 在winccflexible中配置hmi
"cam display" 功能用于在winccflexible中顯示cam。一個 cam 需要一個 "cam buffer" , 在此數(shù)組中填入fb的 inout變量 "slavbbbbues" 。此外,cam顯示必須通過一個指針觸發(fā)。
1.4 fb的輸入/輸出接口
表 1-1: fbgetcamvalueforhmi 參數(shù)描述
| 名稱 | 參數(shù)類型 | 數(shù)據(jù)類型 | 描述 |
| cam | in | camtype | 被顯示的cam |
| camtype | in | enumcambbbbbbbbmode | 顯示帶或不帶比例縮放(basic / actual) |
| slavbbbbues | in/out | aslavecamvalue | 決定從位置的數(shù)組 |
| minslavbbbbue | out | real | 從位置的開始值 |
| maxslavbbbbue | out | real | 從位置的結(jié)束值 |
| minmastervalue | out | real | 主位置的開始值 |
| maxmastervalue | out | real | 主要位置的結(jié)束值 |
| 注:參數(shù)類型in =輸入?yún)?shù),out =輸出參數(shù),in/out =輸入/輸出參數(shù) | |||
1.5 lad 示意圖

圖1: fbgetcamvalueforhmi 的lad示意圖
2 功能塊的調(diào)用編程及hmi設(shè)置
在用戶項目中,該功能是用于在上顯示cam曲線。
2.1 simotion中創(chuàng)建cam
首先要創(chuàng)建cam:

圖2: 創(chuàng)建cam曲線
2.2 simotion中cam顯示功能塊的編程
(1) 導入fbgetcamvalueforhmi 功能塊
右鍵點擊項目導航中的“program”,在彈出的菜單中選擇“imporrt external source-st source file”導入功能塊源文件:


圖3: 導入st源文件
(2) 創(chuàng)建程序單元及全局變量

圖4: 創(chuàng)建全局變量
(3) 在hmicamdisplay程序單元中連接功能塊程序單元

圖5:連接調(diào)用的程序單元
(4) 用mcc語言編輯cam曲線顯示程序(調(diào)用功能塊fbgetcamvalueforhmi)

圖6:連接調(diào)用的程序單元
(5) 將程序分配到simotion系統(tǒng)執(zhí)行級中

圖7: 程序分配
2.3 winccflexible中hmi設(shè)置
在hmi中使用了一個特殊的方法,即在控件trendview中顯示數(shù)組曲線的方法來實現(xiàn)cam曲線的顯示:
(1) 建立simotion與hmi的連接

圖8: 建立simotion與hmi的連接
(2) 創(chuàng)建hmi變量
僅用于顯示cam曲線的變量tag有:

這些變量在simotion中已創(chuàng)建。其中myslavbbbbue為cam曲線數(shù)據(jù),而mytrendrequest以及mytrandtransfer用于控制hmi什么時候讀取cam曲線。
注意:
設(shè)置myslavbbbbue的訪問方法為cyclic continuous或on_command:

圖9: 設(shè)置myslavbbbbues的訪問方法為cyclic continuous
(3)在hmi上插入一個顯示趨勢圖控件trendview
在其屬性->;properties->;trend中設(shè)置如下:

圖10: 趨勢圖設(shè)置
其中samples的數(shù)量與fbgetcamvalueforhmi中獲取的點數(shù)相同,在source settings中設(shè)置如下:

圖11: 趨勢圖設(shè)置
(4) 運行測試
完成后運行屏,顯示曲線畫面后,mytremdrequest第0位置1:

圖12: 運行測試
將mytrendtransfer設(shè)為h8001后,即將第0,15位置1后,曲線上傳至hmi:

圖13: 運行測試
在屏上顯示cam曲線:

圖14: 運行測試










