FRUpdatePDU () не отправляет другой экземпляр PDU, он просто обновляет следующую итерацию данными из объекта frPDU, поскольку мы говорим о PDU статического кадра, как только VN начинает его отправлять, вы не можете остановить его индивидуально с помощью PDU контроль. ![введите описание изображения здесь](https://i.stack.imgur.com/UuhPJ.png)
Фрейм и PDU Фрейм - это физический фрейм Flexray в сети. PDU - это виртуализация части (или всей) полезной нагрузки кадра. Аналогия: почтовый грузовик - это FlexRay Frame, а коробки в нем - PDU. Для почтовой службы (протокол Flexray - уровень OSI 1) важной единицей является сам грузовик, а для вас (клиента) - коробки в нем. Вас никогда не будет интересовать, на каком грузовике доставлены ваши вкусности в ящике, вас интересует только сам контент.
Когда вы вызываете FrUpdatePDU (), вы не только начинаете отправлять PDU, но также активируете (отправляете ненулевые кадры) его слот. Установив для кадра внизу ненулевой кадр, вы гарантируете (в случае статического кадра), что он будет автоматически отправляться циклически с этой точки, независимо от того, что вы хотите делать с PDU (грузовики все равно едут, даже если вы не хотите отправлять в них ящики).
Решение. Я полагаю, что у вас нет библиотек DLL IL, которые могли бы вам помочь, поэтому вы ограничены функциями, которые среда CANoe предоставляет в качестве общих функций IL FlexRay.
- Вам необходимо идентифицировать фрейм, несущий PDU.
- Вам также необходимо управлять фреймом с помощью frUpdateStatFrame ().
frframe FramefromDBCofTEMPPDU InstanceofFrameTemp;
на frStartCycle * {
if (@FR_namespace::TEMP_Enablebutton==1)
{
mframe.fr_flags=0x0;
frUpdateStatFrame(mframe);
TEMP_Pdu.byte(0xAA);
FrUpdatePDU(TEMP_Pdu, 1, 1));
}
else
{
mframe.fr_flags=0x80;
frUpdateStatFrame(mframe);
}
}
Итак, на самом деле вам также нужно изменить рамку. Что касается флагов фреймов, ознакомьтесь с определением фреймов в справке.
![введите описание изображения здесь](https://i.stack.imgur.com/VkLeU.png)
person
VioletVynil
schedule
13.12.2018