这个功能块位于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 |
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 |
0 |
指向结果 SMC_OutQueue。 |