1 在 hmi 上顯示 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,也就是說(shuō)常量 ginr_of_set_points 不能超過(guò) 999。如果改變此常量的默認(rèn)值,需在winccflexible中必須進(jìn)行相應(yīng)的配置。
cam圖形在winccflexible中的輸出是以線性類型來(lái)表示的。
功能塊讀出與固定主值相關(guān)的從值并且將它們寫(xiě)入到一個(gè)數(shù)組中。主軸距離由cam的系統(tǒng)變量來(lái)計(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變量 slavevalues 。此外,cam顯示必須通過(guò)一個(gè)指針觸發(fā)。
1.4 fb的輸入/輸出接口
表 1-1: fbgetcamvalueforhmi 參數(shù)描述
名稱
參數(shù)類型
數(shù)據(jù)類型
描述
cam
in
camtype
被顯示的cam
camtype
in
enumcampositionmode
顯示帶或不帶比例縮放(basic / actual)
slavevalues
in/out
aslavecamvalue
決定從位置的數(shù)組
minslavevalue
out
real
從位置的開(kāi)始值
maxslavevalue
out
real
從位置的結(jié)束值
minmastervalue
out
real
主位置的開(kāi)始值
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語(yǔ)言編輯cam曲線顯示程序(調(diào)用功能塊fbgetcamvalueforhmi)
圖6:連接調(diào)用的程序單元
(5) 將程序分配到simotion系統(tǒng)執(zhí)行級(jí)中
圖7: 程序分配
2.3 winccflexible中hmi設(shè)置
在hmi中使用了一個(gè)特殊的方法,即在控件trendview中顯示數(shù)組曲線的方法來(lái)實(shí)現(xiàn)cam曲線的顯示:
(1) 建立simotion與hmi的連接
圖8: 建立simotion與hmi的連接
(2) 創(chuàng)建hmi變量
僅用于顯示cam曲線的變量tag有:
這些變量在simotion中已創(chuàng)建。其中myslavevalue為cam曲線數(shù)據(jù),而mytrendrequest以及mytrandtransfer用于控制hmi什么時(shí)候讀取cam曲線。
注意:
設(shè)置myslavevalue的訪問(wèn)方法為cyclic continuous或on_command:
圖9: 設(shè)置myslavevalues的訪問(wèn)方法為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)行屏,顯示曲線畫(huà)面后,mytremdrequest第0位置1:
圖12: 運(yùn)行測(cè)試
將mytrendtransfer設(shè)為h8001后,即將第0,15位置1后,曲線上傳至hmi:
圖13: 運(yùn)行測(cè)試
在屏上顯示cam曲線:
圖14: 運(yùn)行測(cè)試