在工程项目进行编译过程中,凸轮数据会在内部转化成一个全局变量的列表(“cam数据”)。
每个点击凸轮都是一个 ⇘ “MC_CAM_REF”类型的结构体。这些结构体都是标准的IEC编程结构,可以通过电子凸轮函数或者功能块进行直接编辑。为了对编译的结果进行管理,一些特殊的结构体变量必须支持编程系统中添加 SM3_Basic.library函数库后可进行编译。
此外结构体数据 _SMC_CAM_LIST (指向 MC_CAM_REF的数组指针)中包含变量指针和数据结构对所有cam产生的变量都有效。
当然也可以直接创建相应的数据结构。在运行的时候直接调用IEC程序。由于这个原因,对所有的数据结构,不仅仅是内部使用结构。都可以在 ⇘ “Cam 数据结构以及全局访问”.中找到帮助。
示例
首先,是数据接结构的描述:
TYPE mySMC_CAMTable_LREAL_10000_2 : STRUCT Table: ARRAY[0..9999] OF ARRAY[0..1] OF LREAL; (* setting all scaling definitions to 0 and 1 means that the values from the table are not scaled *) fEditorMasterMin: REAL := 0; fEditorMasterMax: REAL := 1; fEditorSlaveMin: REAL := 0; fEditorSlaveMax: REAL := 1; fTableMasterMin: REAL := 0; fTableMasterMax: REAL := 1; fTableSlaveMin: REAL := 0; fTableSlaveMax: REAL := 1; END_STRUCT END_TYPE
然后是数据结构的初始化:
Cam: MC_CAM_REF; Cam_PointArray : mySMC_CAMTable_LREAL_10000_2;
凸轮的计算方法:
Cam.byType:=2; Cam.byVarType:=6; Cam.nTappets:=0; Cam.strCAMName:='myCAM'; Cam.pce:= ADR(CAM_PointArray); FOR i:=0 TO 9999 DO (*example cam: master 0..360, slave 0..100, constant velocity shape *) Cam_PointArray.Table[i][0]:=UDINT_TO_LREAL(I)/10000 * 360; (* X *) Cam_PointArray.Table[i][1]:=UDINT_TO_LREAL(I)/10000 * 100; (* Y *) END_FOR Cam.nElements:=10000 Cam.xStart:=0.0; Cam.xEnd:=360.0;