Azzera filtri
Azzera filtri

problem in sending serial data to monochromator controller

3 visualizzazioni (ultimi 30 giorni)
I have a AMS DCB-241 Stepper motor controller controlling the Monochromator's grating motion.
I am trying to automate this system with MATLAB, i am using serial communication port USB-SIN11 adapter cable to connect computer to the controller.
With the propitiatory software commands like ex. '-1000' (move the grating to 1000nm clockwise), '+1000' move the grating to 0th positing anticlock wise) 'V=1000' (slew speed 1000 steps/s) etc...
When i send these commands through the Matlab code, Controller is NOT responding by moving the stepper motor in the monochormator.
Can you please help me out in resolving ths issue? Is there a problem with the code?
Kindly do the needful and oblige.
Here is the mat lab code i wrote:
s1 = serial ('com3', 'BaudRate', 9600, 'DataBits', 8);
fopen(s1);
fprintf (s1, 'i=50');
fprintf (s1, 'k=100,100');
fprintf (s1, 'v=1000');
fprintf (s1, '-8908');
pause (20);
fprintf (s1, '-213');
pause (10);
fprintf (s1, '-240');
pause (10);
fprintf (s1, '-133');
pause (10);
fprintf (s1, '+9494');
pause (20);
fclose(s1);
delete(s1);
Thanks in advance

Risposta accettata

Walter Roberson
Walter Roberson il 17 Gen 2014
The documentation for the device indicates that you need to set hardware flow control.
I also see that it needs a Terminator of CR. At the moment I do not see documented what the default terminator is, so it would be best to specify it specifically
'Terminator', 'CR'

Più risposte (1)

Shailendra
Shailendra il 21 Gen 2014
Thank you very much for your help. I included 'FlowControl', 'hardware' &'Terminator','CR' also " fprintf (s1, ' '); " command, this 'spacebar' starts up the program.
I could solve the problem :)
Below is my modified Matlab program.
delete(s1);
s1 = serial ('com3', 'BaudRate', 9600, 'DataBits', 8, 'Parity', 'none','StopBits', 1, 'FlowControl', 'hardware','Terminator','CR');
set (s1, 'BaudRate', 9600, 'DataBits', 8, 'Parity', 'none','StopBits', 1, 'FlowControl', 'hardware', 'Terminator','CR');
fopen(s1);
out = instrfind(s1)
fprintf (s1, ' '); % ' ' (spacebar) for start-up
pause (5);
fprintf (s1, 'I=50'); % initial velocity = 50
pause (5);
fprintf (s1, 'K=100,100'); % Ramp slope, ascending = 100, descending = 100
pause (5);
fprintf (s1, 'V=1000'); % Slew Velocity = 1000
pause (5);
fprintf (s1, '-8908'); % move monochromator grating to 3335 nm wavelength
pause (20); % Delay of 20 S for the grating to move
fprintf (s1, '-213'); % move monochromator grating to 3415 nm wavelength
pause (10); % Delay of 10 S for the grating to move
fprintf (s1, '-240'); % move monochromator grating to 3505 nm wavelength
pause (10); % Delay of 10 S for the grating to move
fprintf (s1, '-133'); % move monochromator grating to 3555 nm wavelength
pause (10); % Delay of 10 S for the grating to move
fprintf (s1, '+9494'); % move monochromator grating to 0th location
pause (20); % Delay of 20 S for the grating to move
fclose(s1);
out = instrfind(s1)
delete(s1)
out = instrfind(s1) % Close the port S1

Community Treasure Hunt

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

Start Hunting!

Translated by