Я строю тест HIL / SIL с Simulink, который проверяет блок управления транспортным средством (VCU) от транспортного средства. Этот VCU взаимодействует с модулем распределения питания (PDM) по сети CAN J1939. PDM обрабатывает входы и выходы от переключателей и исполнительных механизмов и выводит информацию на шину CAN. Затем VCU знает, что PDM видит из подключенных датчиков. В свою очередь, VCU помещает на шину CAN информацию о том, как PDM должен управлять подключенными приводами.
Мой ноутбук подключен к той же шине CAN с векторным адаптером и Simulink.
Чтобы проверить VCU, мне нужно имитировать PDM и отправлять сообщения в VCU, как если бы я был PDM. Затем VCU должен предпринять правильные действия и соответственно контролировать реальный PDM.
Очевидно, что если я просто имитирую PDM, мои сообщения будут мешать тем, которые отправляются с реального PDM. В общем, мне нужно, чтобы PDM заткнулся и только слушал. Я разговариваю за ДПМ. Однако PDM не настраивается в режиме только для прослушивания, поэтому мне приходится перехватывать все отправляемые им сообщения, чтобы они никогда не поступали в VCU.
Моя идея состояла в том, чтобы я обнаружил (наблюдая поле арбитража всех сообщений), когда PDM начинает отправку, и потянул немного вниз в поле арбитража. Он распознал бы приоритет моего «сообщения» над своим собственным и прекратил бы передачу. Было бы так, как будто шина CAN всегда занята, чтобы освободить место для PDM. Это закроет PDM без ошибок. Но другие предложения приветствуются.
Так (как) возможно ли перехватывать сообщения CAN J1939 в MATLAB / Simulink или с отдельным контроллером CAN?