1 在上顯示 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變量 "slavbbbbues" 。此外,cam顯示必須通過一個指針觸發。
1.4 fb的輸入/輸出接口
表 1-1: fbgetcamvalueforhmi 參數描述
| 名稱 | 參數類型 | 數據類型 | 描述 |
| cam | in | camtype | 被顯示的cam |
| camtype | in | enumcambbbbbbbbmode | 顯示帶或不帶比例縮放(basic / actual) |
| slavbbbbues | in/out | aslavecamvalue | 決定從位置的數組 |
| minslavbbbbue | out | real | 從位置的開始值 |
| maxslavbbbbue | out | real | 從位置的結束值 |
| minmastervalue | out | real | 主位置的開始值 |
| maxmastervalue | out | real | 主要位置的結束值 |
| 注:參數類型in =輸入參數,out =輸出參數,in/out =輸入/輸出參數 | |||
1.5 lad 示意圖

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

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


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

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

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

圖6:連接調用的程序單元
(5) 將程序分配到simotion系統執行級中

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

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

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

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

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

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

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

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

圖14: 運行測試










