24小时热门版块排行榜    

查看: 781  |  回复: 0

koala198909

新虫 (初入文坛)

[求助] 使用session-based interface CounterOutputChannel控制电机移动

以前用老版本的interface编程思路是:
对电机发脉冲,通过设定步数来使让电机走几步。
但现在使用session-based interface后里面的属性都变了。
s = daq.createSession('ni');
ch = s.addCounterOutputChannel(DevicesID, 'ctr0', 'PulseGeneration');

这是我的建立通道代码
我看了下s的属性
s.NumberOfScans,
s.DurationInSeconds,
s.Rate,
s.IsContinuous,
s.NotifyWhenDataAvailableExceeds,
s.IsNotifyWhenDataAvailableExceedsAuto,
s.NotifyWhenScansQueuedBelow,
s.IsNotifyWhenScansQueuedBelowAuto,
s.Vendor,
s.Channels,
s.IsRunning,
s.IsLogging,
s.IsDone,
s.RateLimit,
s.ScansQueued,
s.ScansOutputByHardware,
s.ScansAcquired

这些属性中我所使用的一个是s.NumberOfScans, s.DurationInSeconds, s.Rate三个。
我的问题是:之前我使用 s.DurationInSeconds, s.Rate来控制电机的移动,但是总是存在误差,后来改用s.NumberOfScans虽然设定了数量,但是误差依然存在。
matlab帮助文档里面对NumberOfScans的描述是这样的:

When working with the session-based interface, use the DurationInSeconds property to change the duration of an acquisition. When the session contains output channels, DurationInSeconds becomes a read only property and its value is determined by s.scanQueued/s.Rate. 这又是什么意思。
我在想是不是不管我设置什么,matlab都会自动折算成时间。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 koala198909 的主题更新
信息提示
请填处理意见