本文是在MATLAB R2018b中配置兩個DT9837B模塊用于同步模擬輸入采集的指南。它也可以應用于對同一型號的其他模塊進行分組,例如DT9837A,DT9837C,DT9847系列,DT9857E系列。由于MATLAB的64位會話不支持主/從模式,因此需要此過程。
1.本文假定目標系統已配置為使用帶有MATLAB R2018b(或更高版本)的數據轉換硬件。如果不是這種情況,請參考知識庫文章#50741“配置Windows系統以將數據轉換硬件與MATLAB R2017b一起使用”(https://kb.mccdaq.com/KnowledgebaseArticle50741.aspx)。
2.您將需要安裝最新版本的Data Translation's Device Collection Manager v1.0.0.4。
3.如果已經連接到目標系統的USB端口,請關閉所有軟件應用程序并斷開DT9837B模塊的連接。
4.將一個DT9837B模塊連接到目標系統,然后在Windows(舊版)控制面板中打開Data Translation的“數據獲取控制面板”小程序。在小程序中記下“ DT開放層名稱”(又名板名稱),然后將其關閉。
5.將第二個DT9837B模塊連接到目標系統,然后再次打開“數據采集控制面板”小程序。記下第二個模塊的“ DT開放層名稱”(又名板名稱)。確認它看起來與下面的圖像相似,然后關閉小程序。

6.打開位于目標系統上的DT設備收集管理器。該應用程序應已安裝到以下文件夾:“ C:\ Program Files(x86)\ Data Translation \ Utilities”。
7.單擊“新集合”,然后輸入一個集合名稱,例如DT9837Bsync。

8.從左下角的組合框中選擇一個設備,然后單擊“添加設備”按鈕。

9.從組合框中選擇第二個設備,然后再次單擊“添加設備”按鈕。

10.單擊指定為“主設備”的設備,然后選擇“主設備”屬性。第二個設備將不會選擇此屬性值。


11.關閉DT設備收集管理器,然后打開“數據采集控制面板”小程序。驗證板子列表上是否顯示了“ DT9837Bsync”集合名稱,該名稱將是MATLAB中使用的“設備”。

12.同步多個DT9837B模塊時,在兩個模塊之間連接RJ45電纜(長度小于1英尺)。請參考DT9837系列用戶手冊(https://www.mccdaq.com/PDFs/Manuals/UM9837.pdf)。

13.關閉“數據采集控制面板”小程序,然后啟動MATLAB R2018b(或更高版本)。首先驗證可用的數據轉換設備。在此示例中,將使用“ DT9837Bsync”設備ID。模擬輸入子系統顯示兩個模塊之間的14個通道。前八個通道是BNC模擬輸入通道。其余通道對應于轉速計計數器通道和門計數器通道。(請參閱《 DT9837系列用戶手冊》中的“支持的設備驅動程序功能”表。)

下面的代碼行在.m腳本中使用,以從兩個DT9837B模塊的模擬輸入子系統獲取并顯示數據。
%從創建會話開始。
s = daq.createSession('dt');
%在設備集合中為每個DT9837B模塊添加一個模擬輸入通道,
%,測量類型設置為“電壓”。
CollectionName ='DT9837Bsync';
ch0 = addAnalogInputChannel(s,CollectionName,'0','Voltage'); %采集設備#0的第一個AIN通道
ch4 = addAnalogInputChannel(s,CollectionName,'4','Voltage'); %采集設備#1的第一個AIN通道
%配置模擬輸入通道屬性
ch0.Coupling ='DC';
ch0.TerminalConfig ='SingleEnded';
ch0.Range = [-10,10];
ch4.Coupling ='DC';
ch4.TerminalConfig ='SingleEnded';
ch4.Range = [-10,10];
%%設置會話屬性
%設置采集速率(30kHz)。
利率= 30000;
%%設置輸入事件處理程序
%為DataAvailable事件添加一個偵聽器。回調函數圖
相對于時間獲取的數據的百分比
lh = addlistener(s,'DataAvailable',@(src,event)plot(event.TimeStamps,event.Data));
%在后臺獲取連續數據
s.IsContinuous = true;
startBackground(s);
durationInSeconds = 10;
localTimer = tic;
而s.IsRunning && toc(localTimer)<durationInSeconds
暫停(1)
fprintf('已獲取掃描數=%d \ n',s.ScansAcquired)
結尾
% 清理
停止;
%刪除監聽器和會話。
delete(lh);
刪除;