1 在上顯示 cam
當(dāng)項(xiàng)目運(yùn)行時(shí),為了能在hmi上以圖形方式顯示項(xiàng)目中生成的cam曲線,目前有一個(gè)方法實(shí)現(xiàn)此功能,就是調(diào)用功能塊 fbgetcamvalueforhmi 將cam的位置輪廓顯示在hmi上。
1.1 fbgetcamvalueforhmi 功能塊
在 simotion的程序單元中調(diào)用fbgetcamvalueforhmi 功能塊,還需要在 winccflexible中進(jìn)行相關(guān)配置。
在調(diào)用 fb功能塊前,cam必須使用系統(tǒng)函數(shù)_interpolatecam 進(jìn)行插補(bǔ)。
在hmi系統(tǒng)上顯示的點(diǎn)數(shù)定義在數(shù)據(jù)常量 ginr_of_set_points 中,從值保存在數(shù)組中,最大的點(diǎn)數(shù)為 999,也就是說常量 ginr_of_set_points 不能超過 999。如果改變此常量的默認(rèn)值,需在winccflexible中必須進(jìn)行相應(yīng)的配置。
cam圖形在winccflexible中的輸出是以線性類型來表示的。
功能塊讀出與固定主值相關(guān)的從值并且將它們寫入到一個(gè)數(shù)組中。主軸距離由cam的系統(tǒng)變量來計(jì)算 ("leadingrange.start"-"leadingrange.end") /nr_of_set_points。系統(tǒng)功能塊 _getcamfollowingvalue 用于讀出從位置值。
注意:
由于可能會(huì)造成較高的系統(tǒng)負(fù)荷,所以建議此功能塊在 motion task中調(diào)用。
1.2 調(diào)用fb
在插補(bǔ)生成 cam曲線后,可以調(diào)用 fb 塊。必須在winccflexible中設(shè)置趨勢(shì)指針 transfer1,它觸發(fā)winccflexible中的cam曲線顯示。
"trend request" 指針在winccflexible中進(jìn)行設(shè)置,指示當(dāng)前顯示的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。一個(gè) cam 需要一個(gè) "cam buffer" , 在此數(shù)組中填入fb的 inout變量 "slavbbbbues" 。此外,cam顯示必須通過一個(gè)指針觸發(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è)置
在用戶項(xiàng)目中,該功能是用于在上顯示cam曲線。
2.1 simotion中創(chuàng)建cam
首先要?jiǎng)?chuàng)建cam:

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


圖3: 導(dǎo)入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í)行級(jí)中

圖7: 程序分配
2.3 winccflexible中hmi設(shè)置
在hmi中使用了一個(gè)特殊的方法,即在控件trendview中顯示數(shù)組曲線的方法來實(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什么時(shí)候讀取cam曲線。
注意:
設(shè)置myslavbbbbue的訪問方法為cyclic continuous或on_command:

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

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

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

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

圖13: 運(yùn)行測(cè)試
在屏上顯示cam曲線:

圖14: 運(yùn)行測(cè)試










