<< 点击显示目录 >> 主页 振动监测 > 振动分析模块库AsIOVib使用说明 > 功能块 > vbioCM4810 |
该功能块用于访问 CM4810 模块上 具有 4096 或 8192 值的缓冲区 (例如缓冲频谱)。每个 CM4810 模块必须使用一个单独的功能块。 该功能块用于上传模块缓冲区的内容。它还可用于上传和输出 CM4810 模块的 I/O 配置。在 CPU 重启后启用该功能块时,I/O 配置上传将自动启动。用户也可以触发 I/O 配置的上传。
该功能块只能有条件地用于 冗余。 相关限制在以下章节中说明:
其他信息请参见 "冗余 "部分。 |
请选择所需的功能:
缓冲区上传
上传 I/O 模块配置
I/O |
参数 |
数据类型 |
|||
---|---|---|---|---|---|
IN |
enable |
BOOL |
该功能块仅在 enable = TRUE 时执行。 |
||
IN |
paramMain |
vbioParaMain_t |
包含 CM4810 模块路径和传感器分辨率的常规参数结构 |
||
IN |
paramBufferUpload |
vbioParamBufferUpload_t |
上传存储在 CM48109 模块上的文件所需的参数 |
||
IN |
requestBufferLock |
BOOL |
向 CM4810 发送冻结所有模块缓冲区的请求。当输出 bufferLockIsValid = TRUE 时,所有缓冲区都是块,可以上传。该命令对电平敏感。 |
||
IN |
uploadBuffer |
BOOL |
开始上传模块缓冲区。该命令对边沿敏感(仅限上升沿)。上传要求 |
||
功能块初始化已完成。 |
.initDone 必须设置为 "true"。 |
||||
无法执行模块配置上传。 |
.moduleCfgUploadDone 必须设置为 TRUE。 |
||||
模块缓冲区封锁必须有效。 |
.bufferLockValid 必须设置为 TRUE。 |
||||
IN |
uploadModuleCfg |
BOOL |
启动模块配置上传。当 CPU 重启后首次启用功能块时,模块配置将自动上传。也可以执行 I/O 配置上传,以便在更改模块配置后使用非循环写寄存器功能刷新值。该命令对边沿敏感(仅限上升沿)。 |
||
模块配置定义了内部使用的缩放值。模块配置本身被复制到 moduleCfg 输出端。 |
|||||
IN |
acknowledgeError |
BOOL |
重置状态输出端的错误编号(无需禁用功能块)。只有启用功能块后,该输入才有效。该命令对边沿敏感(仅限上升沿)。 |
||
IN |
ioMapping |
vbioIoMapping_t |
该结构的所有元素必须直接连接到 CM4810 模块的 I/O 映射。程序中不得使用这些变量。 |
||
OUT |
Status |
UINT |
如果功能块执行无误,状态输出值为 0。如果出现错误,状态将显示所发生错误的值。使用 .acknowledgeError 输入确认错误或使用 .enable 输入重置功能块,可将功能块状态重置为 0。该功能块可传递与内部功能块 fltRead() 和 fltWrite() (来自 AsFltGen 库)的错误状态有关的所有信息,以及由 AsIOAccRead() 功能块(来自 AsIOAcc 库)生成的所有错误信息。所有其他状态信息如下所示。 |
||
Function block status messages |
|||||
0 |
功能块已启用 |
||||
vbioERR_MOD_NOT_LOCKED |
错误:模块缓冲区未锁定。无法上传缓冲区。 |
||||
vbioERR_MOD_CFG_NOT_READ |
错误:在上载模块配置时,无法上载模块缓冲区。 |
||||
vbioERR_UPLOAD_BUFFER_NR |
Error:moduleBuffer 输入值超出范围。 |
||||
vbioERR_BUFFER_UPLOAD_ARRAY |
错误:moduleBuffer 输入值超出范围:缓冲区元素数必须大于 0。 |
||||
vbioERR_SENSOR_SENSITVITY |
错误:传感器分辨率不能为负:传感器分辨率不能为负。 |
||||
vbioERR_MODULE_PATH |
错误:模块路径无效:模块路径无效 |
||||
vbioERR_POINTER_BUF_Y_AXIS |
错误:无法将 Y 轴的缓冲区保存为空指针 |
||||
vbioERR_POINTER_BUF_X_AXIS |
错误:无法在空指针中保存 y 轴的缓冲区无法将 x 轴的缓冲区保存为空指针 |
||||
vbioERR_BUFFER_UPLOAD_ARRAYNR |
错误:无法修改 nrArray无法在上传缓冲区时修改 nrArrayElements 输入值 |
||||
vbioERR_UPLOAD_BUFFER_NR1 |
错误:无法修改模块的值无法在上传缓冲区时修改 moduleBuffer 输入的值 |
||||
vbioERR_INT_BUFFER_UPLOAD_01 |
错误:缓冲区上传过程中出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_01 |
错误:上传模块配置时发生内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_02 |
错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_03 |
错误:上传模块配置时出现内部错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_04 |
错误:上传模块配置时出现内部错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_05 |
错误:上传模块配置时出现内部错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_06 |
错误:上传模块配置时出现内部错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_07 |
错误:上传模块配置时出现内部错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_FLT_RECEIVE_BUF_01 |
错误:上传模块缓冲区时发生内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_AI_CFG_02 |
错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
vbioERR_INT_MOD_CFG_UPLOAD_08 |
错误:上传模块配置时出现内部错误。请联系 B&R 支持部门。 |
||||
65534 |
功能块禁用 |
||||
OUT |
bufferLockValid |
BOOL |
如果模块操作被锁定,无法上载模块缓冲区,则此输出设置为 "true"。 |
||
OUT |
bufferUploadLength |
UDINT |
从模块上载到 CPU 的缓冲区元素数。该输出值在缓冲区上载过程中循环更新。 |
||
OUT |
bufferUploadDone |
BOOL |
如果缓冲区上载完成,则置 TRUE。 |
||
OUT |
moduleCfgUploadDone |
BOOL |
如果模块的 I/O 配置已成功上传,则该输出为 TRUE。如果模块已开始新的读取操作(uploadModuleCfg 输入),则该输出为 FALSE。 |
||
OUT |
moduleCfg |
vbioModuleCfg_t |
该结构包含模块配置。首次启用功能块时,模块配置将自动上传。一旦 initDone 输出被设置为 "true",模块配置就可用。 |
||
也可以通过 uploadModuleCfg 输入启动上传。moduleCfgUploadDone 输出显示手动上传模块配置的状态("进行中 "或 "已完成")。. |
|||||
OUT |
initDone |
BOOL |
如果功能块已初始化且可以使用输出,则此输出为 TRUE。 |
参数 |
数据类型 |
描述 |
---|---|---|
pModulePath |
UDINT (pointer to STRING) |
根据 AsIOAccRead() 功能块中给出的定义的模块路径。 |
sensitivitySensor01 |
REAL |
传感器分辨率以 [mV/g] 为单位。默认值:100 mV/g |
sensitivitySensor02 |
REAL |
传感器分辨率以 [mV/g] 为单位。默认值:100 mV/g |
sensitivitySensor03 |
REAL |
传感器分辨率以 [mV/g] 为单位指定。默认值:100 mV/g |
sensitivitySensor04 |
REAL |
传感器分辨率以 [mV/g] 为单位指定。默认值:100 mV/g |
Parameter |
Data type |
Description |
||||||
---|---|---|---|---|---|---|---|---|
moduleBuffer |
UINT |
确定要从模块传输到 CPU 的缓冲区 |
||||||
模块Buffer |
||||||||
模块 Buffer |
Buffer 描述 |
信号源 |
通道编号 |
数值数量 |
y 轴单位 |
x 轴单位 |
||
9 |
缓冲时间信号(幅值) |
原始加速度信号 |
1 |
8192 |
[mg] |
[seconds] |
||
11 |
缓冲时间信号(幅值) |
原始加速度信号 |
2 |
8192 |
[mg] |
[seconds] |
||
13 |
缓冲时间信号(幅值) |
原始加速度信号 |
3 |
8192 |
[mg] |
[seconds] |
||
15 |
缓冲时间信号(幅值) |
原始加速度信号 |
4 |
8192 |
[mg] |
[seconds] |
||
25 |
缓冲时间信号(幅值) |
包络监测 |
1 |
8192 |
[mg] |
[seconds] |
||
27 |
缓冲时间信号(幅值) |
包络监测 |
2 |
8192 |
[mg] |
[seconds] |
||
29 |
缓冲时间信号(幅值) |
包络监测 |
3 |
8192 |
[mg] |
[seconds] |
||
31 |
缓冲时间信号(幅值) |
包络监测 |
4 |
8192 |
[mg] |
[seconds] |
||
66 |
频谱缓冲频率(幅值) |
原始速度信号 |
1 |
4096 |
[mm/s] |
[Hz] |
||
67 |
缓冲频谱频率(幅值) |
原始加速度信号 |
1 |
4096 |
[mg] |
[Hz] |
||
70 |
频谱缓冲频率(幅值) |
原始速度信号 |
2 |
4096 |
[mm/s] |
[Hz] |
||
71 |
频谱缓冲频率(幅值) |
原始加速度信号 |
2 |
4096 |
[mg] |
[Hz] |
||
74 |
频谱缓冲频率(幅值) |
原始速度信号 |
3 |
4096 |
[mm/s] |
[Hz] |
||
75 |
频谱缓冲频率(幅值) |
原始加速度信号 |
3 |
4096 |
[mg] |
[Hz] |
||
78 |
频谱缓冲频率(幅值) |
原始速度信号 |
4 |
4096 |
[mm/s] |
[Hz] |
||
79 |
频谱缓冲频率(幅值) |
原始加速度信号 |
4 |
4096 |
[mg] |
[Hz] |
||
82 |
频谱缓冲频率(幅值) |
包络信号速度 |
1 |
4096 |
[mm/s] |
[Hz] |
||
83 |
频谱缓冲频率(幅值) |
包络监测 |
1 |
4096 |
[mg] |
[Hz] |
||
86 |
频谱缓冲频率(幅值) |
包络信号速度 |
2 |
4096 |
[mm/s] |
[Hz] |
||
87 |
频谱缓冲频率(幅值) |
包络监测 |
2 |
4096 |
[mg] |
[Hz] |
||
90 |
频谱缓冲频率(幅值) |
包络信号速度 |
3 |
4096 |
[mm/s] |
[Hz] |
||
91 |
频谱缓冲频率(幅值) |
包络监测 |
3 |
4096 |
[mg] |
[Hz] |
||
94 |
频谱缓冲频率(幅值) |
包络信号速度 |
4 |
4096 |
[mm/s] |
[Hz] |
||
95 |
频谱缓冲频率(幅值) |
包络监测 |
4 |
4096 |
[mg] |
[Hz] |
||
nrArrayElements |
UDINT |
pArrayXaxis 和 pArrayYaxis 数组的元素个数(两个数组的长度必须相同) 示例:如果 nrArrayElements 设置为 8192,则 pArrayXaxis 数组必须包含 8192 个元素:如果 nrArrayElements 设置为 8192,则 pArrayXaxis 数组必须包含 8192 个元素。pArrayYaxis 数组也必须包含 8192 个元素。 |
||||||
pArrayXaxis |
UDINT (pointer to ARRAY of REAL) |
存储 X 轴的值。指向 REAL 数组的指针。建议数组长度:8192 个元素。用户必须将该数组分配到内存中。单位:[seconds] or [Hz] |
||||||
pArrayYaxis |
UDINT (pointer to ARRAY of REAL) |
存储 X 轴的值。指向 REAL 数组的指针。建议数组长度: 8192 个元素。用户必须将该数组分配到内存中。单位:[mg] or [mm/s] |
参数 |
数据类型 |
描述 |
---|---|---|
RequestBufferLock01 |
BOOL |
必须连接到模块的 I/O 映射(模块 I/O 数据点名称相同)。不应在应用代码中使用。 |
BufferLockValid01 |
BOOL |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferInputSequence01 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferRxByte01 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferRxByte02 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferRxByte03 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferRxByte04 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferRxByte05 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferOutputSequence01 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferTxByte01 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferTxByte02 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferTxByte03 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。应用代码中不应使用。 |
BufferTxByte04 |
USINT |
必须连接到模块的 I/O 映射(模块 I/O 数据点具有相同名称)。不应在应用程序代码中使用。 |
参数 |
数据类型 |
描述 |
---|---|---|
highFrequencyConfig |
REAL |
高频分支(用于高频参数和包络计算)的下限截止频率,单位 [Hz]。 |
取决于 I/O 配置寄存器: 高频配置 01 读取 |
||
channel01 |
vbioChannelCfg_t |
通道 01 的配置 |
channel02 |
vbioChannelCfg_t |
通道 01 配置 |
channel03 |
vbioChannelCfg_t |
通道 01 配置 |
channel04 |
vbioChannelCfg_t |
通道 01 配置 |
frequencyBand01 |
vbioFrequencyBandCfg_t |
配置频段 01 |
frequencyBand02 |
vbioFrequencyBandCfg_t |
频段 02 的配置 |
… |
… |
... |
frequencyBand32 |
vbioFrequencyBandCfg_t |
频段 32 的配置 |
参数 |
数据类型 |
描述 |
|
---|---|---|---|
analogInputScaling |
REAL |
双向最大值,单位为 [g] 或 [1]。如果超过该值,模拟输入值将达到饱和。 |
|
取决于 I/O 配置寄存器:模拟输入标度 01 读取 |
|||
analogInputCalculationEnabled |
BOOL |
如果启用了模拟输入参数计算,则此值为 TRUE。计算使用变量 analogInputMode、analogInputSignalSource 和 analogInputTriggered 写入。 |
|
取决于 I/O 配置寄存器:SamplesAnalogInput01Read 至 SamplesAnalogInput04Read |
|||
analogInputMode |
USINT |
只有当变量 analogInputCalculationEnabled 为 TRUE 时,该值才有效。该值指定用于计算模拟输入信号的方法。 |
|
模拟输入模式 |
|||
3 |
峰值系数 |
||
2 |
有效值 |
||
1 |
峰值 |
||
0 |
平均值 |
||
取决于 I/O 配置寄存器:模拟输入配置 01 读取 |
|||
analogInputSignalSource |
USINT |
只有当变量 analogInputCalculationEnabled 为 TRUE 时,该值才有效。这指定了模拟输入信号的来源。 |
|
模拟输入信号源 |
|||
0 |
频率域为 maxFrequencyRaw 的原始信号 |
||
1 |
频域设置为 10 kHz 的原始信号 |
||
取决于 I/O 配置寄存器:模拟输入配置 01 读取 |
|||
analogInputSamples |
UINT |
用于计算模拟输入参数的采样数目。 |
|
取决于 I/O 配置寄存器:SamplesAnalogInput01Read 至 SamplesAnalogInput04Read |
|||
analogInputTriggered |
BOOL |
当触发模拟输入计算时,该值为 TRUE。如果输入计算持续进行,则该值为 FALSE。 |
|
取决于 I/O 配置寄存器:模拟输入配置 01 读取 |
|||
isVelocitySignalEnabled |
BOOL |
当速度信号的计算被触发时,该值为 TRUE。 |
|
取决于 I/O 配置寄存器:传感器配置寄存器:SensorConfig01Read |
|||
maxFrequencyRaw |
REAL |
原始信号的上限截止频率(单位:Hz] |
|
取决于 I/O 配置寄存器:最大频率原始值01读取 |
|||
minFrequencyRaw |
REAL |
原始信号的下限截止频率(单位 [Hz] |
|
取决于 I/O 配置寄存器:最小频率 Raw01Read |
|||
frequencyResolutionSpectrumRaw |
REAL |
原始频谱的频率分辨率(单位:[Hz])。频谱两条线之间的距离。 |
|
取决于 I/O 配置寄存器:最大频率原始值01读取 |
|||
totalBufferTimeRaw |
REAL |
缓冲区总原始值的时间跨度(秒)。该缓冲时间取决于最大频率。 |
|
取决于 I/O 配置寄存器:最大频率 Raw01Read |
|||
sampleTimeRaw |
REAL |
原始时间信号的采样时间(秒)。 |
|
取决于 I/O 配置寄存器:最大频率原始值01读取 |
|||
maxFrequencyEnv |
REAL |
包络曲线的上限截止频率(单位:[Hz] |
|
取决于 I/O 配置寄存器:最大频率包络 01 读取 |
|||
minFrequencyEnv |
REAL |
包络曲线的下限截止频率(单位 [Hz] |
|
取决于 I/O 配置寄存器:最小频率包络 01 读取 |
|||
frequencyResolutionSpectrumEnv |
REAL |
包络曲线频谱的频率分辨率,单位 [Hz]。频谱两条线之间的距离。 |
|
取决于 I/O 配置寄存器:最大频率包络 01 读取 |
|||
totalBufferTimeEnv |
REAL |
缓冲器包络曲线总值的时间跨度(秒)。该缓冲时间取决于最大频率。 |
|
取决于 I/O 配置寄存器:最大频率包络 01 读取 |
|||
sampleTimeEnv |
REAL |
包络曲线时间信号的采样时间,单位为 [s]。 |
|
取决于 I/O 配置寄存器:最大频率包络 01 读取 |
|||
isCurrentSupplyActive |
BOOL |
如果 IEPE 电源已打开,则设置为 "true"。 |
|
取决于 I/O 配置寄存器:传感器配置 01 读取 |
参数 |
数据类型 |
描述 |
||
---|---|---|---|---|
isRmsValue |
BOOL |
如果正在使用用于检索配置频域有效值的频段,则设置为 TRUE。如果 .isRmsValue 和 .isNoise 输入均为 FALSE,则禁用该频段。 |
||
取决于 I/O 配置寄存器:将 FrequencyBand01ConfigRead 设为 FrequencyBand32ConfigRead,将 FrequencyBand01DmgFreq60rpmRead 设为 FrequencyBand32DmgFreq60rpmRead。 |
||||
isNoise |
BOOL |
如果正在使用用于检索噪声值的频段,则设置为 "true"。如果 .isRmsValue 和 .isNoise 输入均为 FALSE,则禁用该频段。 |
||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
noiseQuadrantNr |
USINT |
所选频谱象限。 |
||
噪声象限 |
||||
重要: minFrequency 和 maxFrequency 变量必须取自通道配置(数据类型 vbioChannelCfg_t),而绝不能取自通道配置结构。通道编号由该结构的下一个元素(.channelNr)定义。 |
||||
值 |
起始频率 |
结束频率 |
||
1 |
最小频率 |
¼ 最大频率 |
||
2 |
¼ 最大频率 |
½ 最大频率 |
||
3 |
½ 最大频率 |
¾ 最大频率 |
||
4 |
¾ 最大频率 |
最大频率 |
||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
channelNr |
USINT |
源通道编号 |
||
通道编号 |
||||
1 |
通道 01 |
|||
2 |
通道 02 |
|||
3 |
通道 03 |
|||
4 |
通道 04 |
|||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
isCoupled |
BOOL |
如果频段与实际当前速度信号相关联,则设置为 "true"。 |
||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
actSpeedNr |
USINT |
指定链接的实际速度信号的数量。如果 .isCoupled = TRUE,则此输出非常重要。 |
||
actSpeedNr |
||||
1 |
ActSpeed01 |
|||
2 |
ActSpeed02 |
|||
3 |
ActSpeed03 |
|||
4 |
ActSpeed04 |
|||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
useHarmonics |
BOOL |
如果在计算中使用谐波频带,则设置为 TRUE。 |
||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
isEnvelope |
BOOL |
如果在包络曲线频谱中计算频带,则设置为 "true"。 |
||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
isVelocity |
BOOL |
如果在速度频谱中计算频段,则设置为 "true"。 |
||
取决于 I/O 配置寄存器:FrequencyBand01ConfigRead 至 FrequencyBand32ConfigRead |
||||
normalizedDamageFrequency |
REAL |
指定所选实际速度信号(ActSpeed01 至 ActSpeed04)与单位为 [1] 的频带之间的转换。如果 .isCoupled = TRUE,则此输出非常重要。 |
||
取决于 I/O 配置寄存器:FrequencyBand01DmgFreq60rpmRead 至 FrequencyBand32DmgFreq60rpmRead |
||||
toleranceBand |
REAL |
该输出以 [± Hz] 为单位显示耦合频带的公差带。如果 .isCoupled = TRUE,则此输出非常重要。 |
||
取决于 I/O 配置寄存器:FrequencyBand01ToleranceRead 至 FrequencyBand32ToleranceRead |
||||
minFrequency |
REAL |
该输出以 [Hz] 为单位显示设定(非耦合)频段的下限截止频率。如果 .isCoupled = FALSE,则此输出非常重要。 |
||
取决于 I/O 配置寄存器:FrequencyBand01LowerFrequencyRead 至 FrequencyBand32LowerFrequencyRead |
||||
maxFrequency |
REAL |
该输出以 [Hz] 为单位显示所设置(非耦合)频段的上截止频率。如果 .isCoupled = FALSE,则此输出非常重要。 |
||
取决于 I/O 配置寄存器:FrequencyBand01UpperFrequencyRead 至 FrequencyBand32UpperFrequencyRead |
Function description
功能说明
下列模块缓冲区可从模块上载到 CPU:
•每个通道的基于时间的原始加速度信号
•每个通道的时基包络曲线加速度信号
•每个通道的原始加速度信号频谱
•每个通道的原始速度信号频谱
•每个通道的包络曲线原始加速度信号频谱
•每个通道的包络曲线原始速度信号频谱
错误初始化功能块:
CPU 重启后首次启用模块时,该功能块将上传模块的 I/O 配置。在上传模块缓冲区之前,I/O 配置上传必须已完成(.initDone 和.moduleCfgUploadDone = TRUE)。即使出现错误,功能块也会继续尝试读取 I/O 模块配置寄存器(.status 输出端会显示错误)。如果发生错误,只需更正输入参数(如模块路径不正确),并通过 .acknowledgeError 输入确认错误即可。
上传模块缓冲区出错:
如果出现 vbioERR_UPLOAD_BUFFER_NR1 (36219) 或 vbioERR_BUFFER_UPLOAD_ARRAYNR (36218) 错误,则必须完成缓冲区的上传(.moduleCfgUploadDone ist TRUE)。上传的缓冲区值有问题!纠正错误并确认错误状态后,可以重新开始上传缓冲区。
对于其他错误信息(即 vbioERR_UPLOAD_BUFFER_NR1 或 vbioERR_BUFFER_UPLOAD_ARRAYNR 以外的错误信息),在重新开始模块缓冲区上传之前,只需更正并确认错误即可。
在手动上传 I/O 模块配置时出错 :
如果发生错误,必须通过 .acknowledgeError 输入纠正错误并确认状态信息。然后才能开始新的 I/O 模块配置上传。
调试注意事项
将 CM4810 模块添加到 Automation Studio 项目中,并在 I/O 模块配置中启用缓冲区上载(这在模块默认配置中发生)。
1.将 AsIOVib 库添加到 Automation Studio 项目中。
2.确保总线周期时间配置与任务类周期时间同步。
3.确保总线周期时间配置为不短于任务类周期时间。
4.为该任务类添加一个新程序。
5.在新程序中创建 iovbCM4810() 功能块实例。
6.将功能块结构 .ioMapping 的所有变量分配给 CM4810 模块的 I/O 数据点。
7.根据 AsIOAcc 库中 AsIOAccRead() 功能块的写法指定模块路径(输入:.paramMain.pModulePath)。 示例:"IF6.ST1
8.在每个任务类周期内准确执行一次循环子程序中的功能块。
9.将项目传输到目标系统。
10.启用功能块。一旦 .initDone 输出为 "true",即可再次上传 I/O 模块配置 ()。
11.锁定模块(输入:.requestBufferLock)。
12.为上传的 Y 轴缓冲区值指定一个数组(输入:.paramBufferUpload.pArrayYaxis)。
13.为 X 轴指定一个具有相同值的缓冲区(输入:.paramBufferUpload.pArrayXaxis)。
14.指定两个缓冲数组中的元素数量(输入: .parameterBufferUpload.nrArrayElements)。
15.指定要从模块传输到 CPU 的模块缓冲区(输入:.parameterBufferUpload.moduleBuffer)。
16.在 .uploadBuffer 输入上触发一个上升沿。
17.只要输出标志 bufferUploadDone 为 TRUE,就可以使用 pArrayYaxis 和 pArrayXaxis 缓冲区中的数据。bufferUploadLength 输出提供了有效缓冲区元素的数量(在缓冲区上传期间循环)。
示例
i.完成上述 1-4 步骤即可开始。
ii.将映射表复制到 IoMap.iom 文件,然后将 <programName> 替换为程序名称,将 <moduleName> 替换为 CM4810 模块的路径(这与程序初始化子程序中指定的路径相同)。
iii.将 VAR、PROGRAM _INIT 和 PROGRAM _CYCLIC 部分复制到程序中。
iv.将 PROGRAM _INIT 部分中的 <moduleName> 替换为 CM4810 模块的路径。
v.将项目传输到目标系统。
vi.将 Start 变量设置为 TRUE,以上传模块缓冲区。
0:释放对模块缓冲区的锁定,重置功能块输出 .uploadBuffer。
1:锁定模块缓冲区,等待模块确认。
2:开始上传模块缓冲区并等待上传完成。
警告请注意,模块缓冲区上载完成后,模块缓冲区锁会自动释放。
这意味着,如果未对示例代码进行相应修改,则不支持为同一测量上传多个模块缓冲区。
VAR_CONFIG |
VAR |
PROGRAM _INIT |
PROGRAM _CYCLIC
CASE state OF (* Main state machine: 0...Unlock module buffers and reset the uploadBuffer variable, 1... Lock the module buffers, 2... Upload the module buffers *)
3: (* Cleanup *) |