由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
EE版 - 请问:关于RS232接口编程控制一个马达部件?
相关主题
请教:用labview通过GPIB卡控制仪器不能持久为什么?有人用过linear的片子么
USB键盘出来的信号请教无线RF的embedded software一般需要了解RF端哪些知识
USB键盘出来的信号问大家一个控制方面的题
请教一下,大家写论文时画流程图用什么软件来画啊?一个硬件面试题
如何实现类似LabVIEW中系统框图绘制和元件连接与表示? (转载)寻答案;半导体 夕阳产业
为什么学硬件这么难找工作呢!!请教电路图,在线等
大家在论文里面加插图都是用什么画的?请教:怎么才能画出漂亮的publication图形
工作中的郁闷:工资越来越高,任务越来越蠢。Re: 请问谁有DOS下写RS232口的源代码
相关话题的讨论汇总
话题: dataout话题: fprintf话题: rs232话题: com1话题: fscanf
进入EE版参与讨论
1 (共1页)
c******k
发帖数: 1140
1
购买了一个光学仪器,是用马达控制其中的部件。然后马达链接6V电源,输出有个DB9
接头接计算机串口。现在要编个RS232小程序去控制这个马达,可以用labview or
matlab 编程序。但是还是没有头绪,比如程序框图是啥啊,仪器的manual有一些RS232
的命令,但是怎么用这些命令呢?
比如: G0:Stop the motor driver
M?: Return the minimum time dalay, in ps.
FH: Find home
SLEEP: Start sleep mode
。。。。。。
命令很多,怎么把这些融合到Matlab里呢?谢谢指导!
clear
s=serial('COM1');
fopen(s);
fprintf(s,'*IDN?');
DataOut=fscanf(s)
fclose(s);
delete(s)
clear s
c*******o
发帖数: 62
2
clear
s=serial('COM1');
fopen(s);
fprintf(s,'*IDN?');
DataOut=fscanf(s)
fclose(s);
delete(s)
clear s
把*IDN?替换成GO, M?, FH, SLEEP等等即可, *IDN?是读仪器的名字的通用命令
fopen在这里新建一个COM1口的任务, fprintf是写入ASCII命令,DataOut是读出
buffer,fclose是关闭任务,这算是四个最主要的function
不过你要是没有 matlab GUI经验或者这个马达控制要synchronize或者integrate到大
的project里,用labview可能更适合一点,compile executable/installer 也简单,
labview自带了很多visa的例子,看看应该就会了,rs232 communication算是比较简单的

DB9
RS232

【在 c******k 的大作中提到】
: 购买了一个光学仪器,是用马达控制其中的部件。然后马达链接6V电源,输出有个DB9
: 接头接计算机串口。现在要编个RS232小程序去控制这个马达,可以用labview or
: matlab 编程序。但是还是没有头绪,比如程序框图是啥啊,仪器的manual有一些RS232
: 的命令,但是怎么用这些命令呢?
: 比如: G0:Stop the motor driver
: M?: Return the minimum time dalay, in ps.
: FH: Find home
: SLEEP: Start sleep mode
: 。。。。。。
: 命令很多,怎么把这些融合到Matlab里呢?谢谢指导!

c******k
发帖数: 1140
3
但是我把 *IDN 替换成GO, M?, FH, SLEEP等时,结果:
DataOut=
Go
or
M?
然后没啥反应了。怎么测试RS232正在work?

【在 c*******o 的大作中提到】
: clear
: s=serial('COM1');
: fopen(s);
: fprintf(s,'*IDN?');
: DataOut=fscanf(s)
: fclose(s);
: delete(s)
: clear s
: 把*IDN?替换成GO, M?, FH, SLEEP等等即可, *IDN?是读仪器的名字的通用命令
: fopen在这里新建一个COM1口的任务, fprintf是写入ASCII命令,DataOut是读出

c*******o
发帖数: 62
4
这里面哪个命令是有返回值的?比如说返回encoder counter,firmware version,
Dataout=应该能返回什么的
或者能观察得到命令的作用的,比如驱动,停止之类的
还有马达说明书上要求是\n还是\r结尾的?
试试fprintf(s,'GO\r')
然后再加个pause(1)做响应时间
再读Dataout

【在 c******k 的大作中提到】
: 但是我把 *IDN 替换成GO, M?, FH, SLEEP等时,结果:
: DataOut=
: Go
: or
: M?
: 然后没啥反应了。怎么测试RS232正在work?

c******k
发帖数: 1140
5
请参考下图。但不清楚那个命令有返回值

【在 c*******o 的大作中提到】
: 这里面哪个命令是有返回值的?比如说返回encoder counter,firmware version,
: Dataout=应该能返回什么的
: 或者能观察得到命令的作用的,比如驱动,停止之类的
: 还有马达说明书上要求是\n还是\r结尾的?
: 试试fprintf(s,'GO\r')
: 然后再加个pause(1)做响应时间
: 再读Dataout

c******k
发帖数: 1140
6
Sorry,图片贴不上,直接拷贝
The unit responds with an output string on the RS-232 line when the RS-232
lines become active, at startup, or in response to a software reset command
when the RS-232 lines are connected. The string is:
OZ Optics Ltd.
ODL-300 Vh.hh_n.nn
where h.hh is the hardware version number
where n.nn is the firmware version number
When the unit passes the self-test routine, the unit outputs the string:
Ready:
When the unit fails a portion of the self-test routine, an

【在 c*******o 的大作中提到】
: 这里面哪个命令是有返回值的?比如说返回encoder counter,firmware version,
: Dataout=应该能返回什么的
: 或者能观察得到命令的作用的,比如驱动,停止之类的
: 还有马达说明书上要求是\n还是\r结尾的?
: 试试fprintf(s,'GO\r')
: 然后再加个pause(1)做响应时间
: 再读Dataout

c*******o
发帖数: 62
7
try this
clc;
close all;
clear all;
s=serial('COM1');
fopen(s);
fprintf(s,'D?\r');
pause(1);
DataOut=fscanf(s)
fprintf(s,'GF\r');
fclose(s);
delete(s);
clear s
c*******o
发帖数: 62
8
try this
clc;
close all;
clear all;
s=serial('COM1');
fopen(s);
fprintf(s,'D?\r');
pause(1);
DataOut=fscanf(s)
fprintf(s,'GF\r');
fclose(s);
delete(s);
clear s
c******k
发帖数: 1140
9
Thank you, but it won't work.
Always get this:
Warning: A timeout occurred before the Terminator was reached.
(Type "warning off MATLAB:serial:fscanf:unsuccessfulRead" to suppress this
warning.)
DataOut =
D?\r

【在 c*******o 的大作中提到】
: try this
: clc;
: close all;
: clear all;
: s=serial('COM1');
: fopen(s);
: fprintf(s,'D?\r');
: pause(1);
: DataOut=fscanf(s)
: fprintf(s,'GF\r');

c*******o
发帖数: 62
10
你确定马达连在了COM1口?如果是笔记本+usb/rs232 converter那可能是COM3口
还有试试get(s,{'BaudRate','DataBits','Parity','StopBits','Terminator'})
看看端口的缺省设置和马达说明书上的要求是否一致,尤其是DataBits和Parity
其他应该就没什么了
稍微改一下再试试
clc;
close all;
clear all;
s=serial('COM1');
set(s,'Terminator','CR');
fopen(s);
fprintf(s,'D?');
pause(1);
DataOut=fscanf(s)
fprintf(s,'GF');
fclose(s);
delete(s);
clear s
s******u
发帖数: 247
11
1 (共1页)
进入EE版参与讨论
相关主题
Re: 请问谁有DOS下写RS232口的源代码如何实现类似LabVIEW中系统框图绘制和元件连接与表示? (转载)
EPaper为什么学硬件这么难找工作呢!!
EPaper大家在论文里面加插图都是用什么画的?
外行请教OPC与LabVIEW工作中的郁闷:工资越来越高,任务越来越蠢。
请教:用labview通过GPIB卡控制仪器不能持久为什么?有人用过linear的片子么
USB键盘出来的信号请教无线RF的embedded software一般需要了解RF端哪些知识
USB键盘出来的信号问大家一个控制方面的题
请教一下,大家写论文时画流程图用什么软件来画啊?一个硬件面试题
相关话题的讨论汇总
话题: dataout话题: fprintf话题: rs232话题: com1话题: fscanf