SMC_RotateQueue2D

这个功能块位于CODESYS SoftMotion中的 SM3_CNC.library。执行此功能块存储在 poqDataIn 中的路径将会按照角度 dPhi [°] 围绕z轴进行旋转。一个正向角将会产生一个数学上的正转(逆时针方向)。

输入变量指向结构体 SMC_OUTQUEUE,定义旋转路径。 变量 bEnable 的初始值为 FALSE 将不会启动路径的旋转。一旦 bEnable 被置为 TRUE ,位于 poqDataIn 中的所有的 GEOINFO-对象都将会被处理。当 bEnable 被复位为 FALSE,模块将不会继续执行并不会产生任何修改。

输入变量bReset的初始值为FALSE,因此位于poqDataIn 中的实际 GEOINFO-对象将不会产生旋转,但是只有这些将会被添加。

在处理过程中,特征参数 dPhi 的突然改变将不会产生旋转的中断,当前发生的修改将不会被写入到输入变量中,直到位于poqDataIn中的 SMC_OUTQUEUE 为空或者一个复位 (bReset) 发生。

为了实现围绕中心(0,0)产生的一个 (x,y)-平面内的旋转,例如,围绕点 (xP,yP),一个矢量变换 (-xP,-yP,0) 必须首先进行,紧接着是按照角度 dPhi 进行的一个旋转以及矢量(xP,yP,0)的坐标变换。

 

类型

初始值

描述

VAR_IN

 

 

 

bExecute

BOOL

FALSE

当为 TRUE,功能块被激活

bAppend

BOOL

FALSE

如果位于bExecute的上升沿为 FALSE,输出队列 poqDataOut 为空

poqDataIn

指向 SMC_OUTQUEUE

0

指向一个IEC应用允许的非常大,并且为空的数据区域(缓冲区)

dPhi

LREAL

0

旋转角

nSizeOutQueue

UDINT

0

这个变量包含数据缓冲区的大小,GEOINFO 结构体对象的列表将会被写入。这个缓冲区的大小至少为一个 GEOINFO 结构体的五倍大小, SMC_NCDecoder将不会进行任何处理。他的大小必须预先定义,但是可以在下次复位前进行修改。可以通过以下方法定义缓冲区大小:

ExampleBuf: Array of SMC_GeoInfo

然后操作者将使用相应的缓冲区大小sizeof(ExampleBuf).

dbyBufferOutQueue

Pointer TO BYTE

0

该输入必须指向 OUTQUEUE-结构体定义的内存区域。这个区域的大小至少与 nSizeOutQueue 中定义的一样大。通常情况下,分配的内存缓冲区是在IEC程序中声明的一个 SMC_GEOINFO (e.g. BUF: ARRAY[1..50] OF SMC_GEOINFO数组;对于一个缓冲区可以存储 50 路径元素)。变量值可以进行预处理,但是可以在下次复位之前进行修改。

VAR_OUT

 

 

 

bDone

BOOL

FALSE

此变量在输入数据 poqDataIn 被处理时将会被立即置为 TRUE 。在此之后模块将不会进行任何的修改直到下次复位之前。如果输入 bExecute 为 FALSE, bDone 将会被复位为 FALSE。

bBusy

BOOL

FALSE

TRUE,功能块的处理没有完成。

bError

BOOL

FALSE

功能块内部发生错误信号。

wErrorID

SMC_ERROR

SMC_NO_ERROR

错误ID

poqDataOut

指向 SMC_OUTQUEUE

0

指向结果 SMC_OutQueue。