MATLAB Answers

Arduino/ Simulink Project: ' Error occurred while executing External Mode'. Where is the Problem?

17 views (last 30 days)
Leonard Herbstmann
Leonard Herbstmann on 13 Jan 2018
Answered: Erneto Rosas on 12 Mar 2019
Hello everyone,
with my Arduino Uno I got this error in Simulink2017b: 'Error occurred while executing External Mode MEX-file 'ext_comm': Timed-out waiting for second connect response packet. Unable to connect to the 'Arduino Uno' target for 'Project_Name' For a few days now I tried to solve the problem but still have no solution. In this Arduino-Project I want to read out the measurement of 2 IR-Sharp sensors to locate a Object between these two sensors. I attach 2 graphics which show my Simulink model and the full 'Diagnostic Viewer' Report after I tried to build and run the project in External Mode.
I would be so thankful if anyone can help me out!

Answers (3)

Darshan Ramakant Bhat
Darshan Ramakant Bhat on 16 Jan 2018
This error is due to MATLAB is not able to connect with the Hardware. It might be the case that the drivers are not installed properly for the Arduino Uno. Please try to re-install the driver from the Arduino official website.
Additionally, there is an cause related to the background daemon that MATLAB uses to establish connection with the Arduino.
The daemon could be timing out before external mode is able to start successfully. The expected time needed to establish connection varies from computer to computer, and as a result, you may need to modify the timeout value to use external mode. Some users have only noticed this error when I2C sensors are connected to the Arduino.
Please follow these instructions to modify the timeout value: 1. Delete the file, which will be located in the following directory within the Support Package Root Directory: RootDirectory\toolbox\target\supportpackages\arduinobase\+codertarget\+arduinobase\+registry\startDaemon.p
To determine the support package root on your local machine, please execute the following command:
>> SupportPackageRoot = matlabshared.supportpkg.getSupportPackageRoot
For example, if the above command returns "C:\ProgramData\MATLAB\SupportPackages\R2017a\", then the file will be located at: C:\ProgramData\MATLAB\SupportPackages\R2017a\\toolbox\target\supportpackages\arduinobase\+codertarget\+arduinobase\+registry\startDaemon.p
For more information on this command, please refer to the documentation: http://www.mathworks.com/help/matlab/ref/matlabshared.supportpkg.getsupportpackageroot.html
2. Copy the file startDaemon.m (attached file) to SupportPackageRoot\toolbox\target\supportpackages\arduinobase\+codertarget\+arduinobase\+registry\
3. Adjust the timeout value for your system by modifying the "ethernetTimeout" variable at line 80 of startDaemon.m and save the file.
4. Run the following commands at MATLAB command prompt: >> clear classes; >> clear pcode; >> rehash toolboxcache After making these changes, you should be able to run the external mode connection as before. Repeat steps 3 and 4 to tune the timeout value as needed for your system

toussi ayadi
toussi ayadi on 7 Sep 2018
i have the same problem. i noticed when i see directly outputs of MPU 6050.code works and when i add the complmantary filter bloc, i get the same error of yours.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!