簡介
PC-6360 多功能模入接口卡技術說明書1. 概述:
PC-6360多功能模入接口卡適用於具有ISA匯流排的PC系列微機,具有很好的兼容性,CPU從目前廣泛使用的64位處理器直到早期的16位處理器均可適用,作業系統可選用經典的MS-DOS,目前流行的Windows系列、高穩定性的Unix等多種作業系統以及專業數據採集分析系統 LabVIEW等軟體環境。在硬體的安裝上也非常簡單,使用時只需將接口卡插入機內任何一個ISA匯流排插槽中,信號電纜從機箱外部直接接入。本卡上的A/D轉換結果為12位字長,同時還備有4路數字量輸入和4路數字量輸出接口和三路 16位字長的計數/定時器,以及1MHz 的基準時鐘。本卡的A/D轉換啟動方式可以選用程式觸發、定時器自動觸發、外同步觸發等方式,轉換狀態可以用程式查詢,也可以用中斷方式通知CPU讀取轉換結果。同時本卡還具有定時中斷和外觸發中斷供用戶選用。
本卡可以直接與我所研製的 PS-010/ PS-011 等前端信號處理板配套使用,方便地對熱電偶、熱電阻及各類感測器輸出的微弱信號進行放大和採集。每塊PC-6360 多功能模入接口卡最多可以連線8塊 PS-010 等前端信號處理板即128路模擬信號輸入。
2.主要技術參數:
2.1輸入通道數:單端8路; ( 標*為出廠標準狀態,下同 )2.2輸入信號範圍:0V~10V*;-5V~+5V;-10V~+10V
2.3輸入阻抗:≥ 10MΩ
2.4A/D轉換解析度:12位
2.5A/D轉換速度:10μS
2.6A/D啟動方式:程式啟動/定時觸發啟動/外觸發啟動
2.7A/D轉換結束識別:程式查詢/中斷方式
2.8A/D轉換非線性誤差:±1LSB
2.9A/D轉換輸出碼制:單極性原碼*/雙極性偏移碼
2.10 系統綜合誤差:≤ 0.1% F.S
2.11 DI:4路/DO:4路;TTL電平帶鎖存
2.12 16位字長計數/定時器:3路,用戶可外接使用一路計數/定時通道
2.13 基準時鐘:1MHz,占空比50%
2.14 電源功耗:( 不含外接前端信號處理板部分 )
+ 5V ( ±10% ) ≤ 200mA
+12V ( ±10% ) ≤ 50mA
-12V ( ±10% ) ≤ 50mA
2.15 使用環境要求:
工作溫度:10℃~40℃
相對濕度: 40%~80%
存貯溫度:-55℃~+85℃
2.16 外型尺寸:( 不含檔板 )
長×高=139.7mm×106.7mm( 5.5英寸×4.2英寸 )
3. 工作原理:
PC-6360模入接口卡主要由模擬量輸入及模數轉換電路、數字量輸入輸出電路、計數/定時器電路及接口控制邏輯電路構成。3.1 工作原理框圖:
PC-6360 模入接口卡工作原理框圖見圖1。
圖1 工作原理框圖
3.2 模擬量輸入及模數轉換電路:
外部模擬信號經多路轉換開關選擇並經高速跟隨器驅動後送入模數轉換器進行轉換。模數轉換器的啟動可以使用程式啟動方式或者定時器定時觸發啟動方式,也可用外部觸發方式啟動。其轉換狀態和結果可用程式查詢和讀出。轉換結束信號也可用中斷方式通知CPU進行處理。
3.3 數字量輸入輸出電路:
數字量輸入輸出電路可為用戶提供4路DI及4路DO的信號,並具備加電DO清零和輸出鎖存功能。其中4路DO信號可以作為PS-010等前端信號處理板的通道選擇控制信號。
3.4 計數/定時器電路:
計數/定時器電路由一片可程式定時/計數器 8253 晶片和基準時鐘電路以及有關的跨接選擇器組成。可為用戶提供3個16位字長的計數/定時通道和1MHz,占空比為50%的基準時鐘,其中兩路計數/定時通道供本卡內部使用,用戶可外接使用一路計數/定時通道。
3.5接口控制邏輯電路:
接口控制邏輯電路用來產生與各種操作有關的控制信號。
3.6 8253可程式計數/定時器套用簡介:
3.6.1 8253晶片管腳圖如圖2。
圖2 8253晶片管腳圖
3.6.2 8253 功能及框圖:
8253是INTEL公司微型計算機系統中的一個部件,可以將8253作為一個具有四個輸入/輸出接口的器件處理,其中三個是計數器,一個是可
編程式工作方式的控制暫存器。其內部結構圖如圖3所示。(見下頁)
圖3 8253內部結構圖
3.6.3 8253可程式計數/定時器編程要點:
8253 的全部功能是由CPU 編程設定的。CPU 通過輸出指令給8253裝入控制字,從而設定其功能。8253控制字格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
各位的功能見表1~表4:
表1SC1、SC0 - 計數器選擇
SC1 SC0 選 擇 計 數 器
0 0 選擇0#
0 1 選擇1#
1 0 選擇2#
1 1 非 法
表2RL1、RL0 -CPU讀/寫操作
RL1RL0 操 作 類 型
0 0 計數器封鎖操作
0 1 讀/寫計數器低8位
1 0 讀/寫計數器高8位
1 1 先讀/寫低8位,後讀/寫高8位
表3M2、M1、M0 -工作方式選擇
M3M2M1 計 數 工 作 方 式
0 0 0 方 式 0
0 0 1 方 式 1
0 1 0 方 式 2
0 1 1 方 式 3
1 0 0 方 式 4
1 0 1 方 式 5
表4BCD-計數方式選擇
BCD 數 碼 形 式
0 十六位二進制計數
1 四位十進制 ( BCD ) 碼計數
8253-5的三個計數器是獨立的16位減法計數器。計數器的工作方式由工作方式暫存器確定。計數器在編程寫入初始值後,在某些方式下計數到0後自動預置,計數器連續工作。CPU訪問計數器時,必須先設定工作方式控制字中的RL1、RL0位。計數器對CLK計數輸入端的輸入信號進行遞減計數。選通信號GATE控制計數工作的進行,其功能如表5所示。
表5選通信號 GATE 的功能
低電平或進入低電平 上 升 邊 沿 高 電 平
方式0 禁止計數 ---- 允許計數
方式1 ---- 1.初始化和計數
2.下一個時鐘後清除輸出 ----
方式2 1.禁止計數 2.使輸出立即變為高電平 1.重新裝入計數器
2.啟動計數 允許計數
方式3 1.禁止計數2.使輸出立即變為高電平 初始化和計數 允許計數
方式4 禁止計數 計數未結束時初始化和計數 允許計數
方式5 ---- 初始化和計數 ----
8253-5 的三個計數器按照各工作方式暫存器中控制字的設定進行工作。可以選擇的工作方式有六種。這六種方式是:
方式0:計數結束時中斷。編程後自動啟動,計數器減1計數,計數到終點( 減至0 )後輸出高電平,可用於中斷請求信號,GATE為低電平時停止計數,回到高電平後繼續往下計數。再次啟動要重新裝入計數值或重新編程。
方式1:可程式單脈衝輸出。GATE上升沿進行初始化並開始計數。輸出低電平的寬度等於計數時間。單脈衝輸出可用GATE 上升沿多次觸發。
方式2:比率發生器。編程後重複地循環計數。計數到終點時輸出一個時鐘周期寬度的低電平脈衝,自動初始化後繼續計數。用GATE的上升沿初始化,並開始計數。GATE為低電平時停止計數。
方式3:方波發生器。這種方式是在編程後重複地循環計數,輸出波形為方波。如果初始計數值為偶數,每個時鐘輸入脈衝使計數器減2,達到計數終點時輸出電平改變。如果初始計數值為奇數,則輸出高電平時第一個時鐘輸入脈衝使計數器減1,隨後每個輸入脈衝使計數器減2;輸出為低電平時第一個時鐘輸入脈衝使計數器減3,隨後每個輸入脈衝使計數器減2,到達計數終點時輸出電平改變,計數器自動初始化後繼續計數。用GATE的上升沿初始化並開始計數,GATE為低電平時停止計數。
方式4:軟體啟動選通脈衝輸出。編程後自動啟動,計數到終點後輸出一個時鐘周期的低電平脈衝。用GATE的上升沿初始化並開始計數,GATE為低電平時停止計數。
方式5:硬體啟動選通脈衝輸出。編程後,等待GATE上升沿進行初始化並開始計數,計數到終點後輸出一個時鐘周期的低電平脈衝,計數器開始計數後不受GATE信號電平的影響,這種選通脈衝的輸出可用GATE的上升沿多次觸發。在工作方式控制字中,如果設定計數器鎖存操作,則該控制字中工作方式選擇位 M1、M0 和計數方式選擇位BCD無效。設定鎖存操作時不影響計數器的工作方式,計數器鎖存操作,是在計數器計數過程中,在不影響正在進行的計數操作的條件下,把當前的計數值鎖存到暫存器,供CPU讀取,這時在工作方式控制字中,SC1、SC0 指定要鎖存的計數器,RL1、RL0=00表示鎖存操作,其餘4位無效,計數器按原來設定的方式工作。
當本卡A/D轉換選擇定時器定時觸發啟動工作方式時,一般將8253的工作方式設定為方式2 ( 即比率發生器 ),以保證符合A/D轉換啟動信號的要求。
4.安裝及使用注意:
本卡的安裝十分簡便,只要將主機機殼打開,在關電情況下,將本卡插入主機的任何一個空餘擴展槽中,再將檔板固定螺絲壓緊即可。37芯D型插頭可從主機後面引出並與外設連線。
本卡採用的器件可能會因靜電擊穿或過流造成損壞,所以在安裝或用手觸摸本卡時,應事先將人體所帶靜電荷對地放掉,同時應避免直接用手接觸器件管腳,以免損壞器件。
禁止帶電插拔本接口卡。設定接口卡開關、跨接套和安裝接口帶纜均應在關電狀態下進行。
當模入通道不全部使用時,應將不使用的通道就近對地短接不要使其懸空以避免造成通道間串擾和損壞通道。
本卡跨接選擇器較多,使用中應嚴格按照說明書進行設定操作。
為保證安全及採集精度,應確保系統地線計算機及外接儀器機殼)接地良好。並應注意對信號線進行禁止處理。
對外供電端應注意加以保護,嚴禁短路,否則將造成主機電源損壞,使用中應特別小心。
5. 使用與操作:
5.1 主要可調整元件位置見圖4。
圖4 主要可調整元件位置圖
5.2 I/O基地址選擇:
本卡的I/O基地址由地址匯流排A3~A9決定。用戶可根據需要通過K1自行確定I/O基地址(出廠時設為300H)。開關撥至ON處為“0”,反之為“1”。現舉例說明見圖5。(圖5請見下頁)
ON1234567 ON1234567
A3 A4 A5 A6A7A8A9 A3 A4A5 A6A7 A8A9
(a) 100H (b) 318H
圖5I/O基地址選擇舉例
5.3 輸入輸出插座接口定義:
輸入輸出插座接口定義見表6。
表6輸入輸出插座接口定義表
插座引腳號 信 號 定 義 插座引腳號 信 號 定 義
1 CH0 20 模擬地
2 CH1 21 模擬地
3 CH2 22 模擬地
4 CH3 23 模擬地
5 CH4 24 模擬地
6 CH5 25 模擬地
7 CH6 26 模擬地
8 CH7 27 模擬地
9 模 擬 地 28 模擬地
10 E.C 29 E.T
11 DI0 30 DI1
12 DI2 31 DI3
13 DO0 32 DO1
14 DO2 33 DO3
15 數字地 34 數字地
16 +5V輸出 35 +5V輸出
17 +12V輸出 36 +12V輸出
18 -12V輸出 37 -12V輸出
19 NC(未使用)
其中:E.T為外觸發信號,E.C為外時鐘信號。
5.4 跨接插座的用法:
5.4.1 轉換碼制選擇:
KJ1為轉換碼制選擇插座。碼制的定義參見5.6節。用戶應根據輸入信號的極性進行選擇,選擇方法見圖6。
D S D S
a. 單極性原碼b. 雙極性偏移碼
圖6轉換碼制選擇
5.4.2 A/D輸入量程選擇:
KJ2為A/D輸入量程選擇插座,輸入量程的選擇方法見圖7。
1 2 1 2
a. ±10V輸入 b. ±5V、0~10V輸入
圖7 A/D輸入量程選擇
5.4.3 定時觸發啟動選擇:
KJ3用於在定時觸發啟動方式時,選擇8253的定時/計數器輸出通道,本卡上的8253定時/計數器中,通道0和通道1已連成級連方式,即通道0的CLK0端接至1MHz時鐘上,OUT0端接至通道1的CLK1端,通道0、1、2上的GATE並聯接程控信號。通道2 留給用戶選用,其定義及連線方法見圖8,用戶可根據需要選擇。
KJ3KJ3KJ3
a. CTC0定時啟動 b. CTC1定時啟動 c. CTC2定時啟動
圖8 定時觸發啟動選擇
5.4.4 觸發信號及中斷信號方式選擇:
KJ4用於選擇A/D啟動觸發信號以及中斷信號。使用中應該注意A/D啟動觸發信號和中斷信號都必須是唯一的,不允許同時有多個觸發和中斷源。KJ4的定義見表7:
表7 KJ4 的定義
功 能 定 義 使 用 選 擇
P1:8253通道1輸出
P2:8253通道2輸入
P3:外觸發信號 8253通道2與通道1級連: P1-P2
8253通道2連線外部信號源:P2-P3
P4:定時觸發中斷
P5:定時觸發信號
P6:定時觸發啟動A/D 使用8253定時產生中斷: P4-P5
使用8253定時啟動A/D: P5-P6
P7:外觸發中斷
P8:外觸發信號
P9:外觸發啟動A/D 外觸發信號產生中斷: P7-P8
外觸發信號啟動A/D: P8-P9
P10:A/D轉換結束中斷
P11:A/D轉換結束信號
P12:NC A/D轉換結束後產生中斷: P10-P11
A/D轉換結束後不產生中斷:P11-P12
5.4.5 中斷源選擇:
KJ5為中斷選擇插座。該插座可用來選擇IORQ3、4、5、6、7中斷源,中斷源的選擇見圖9。
IORQ 3 4 5 6 7 IORQ3 4 5 6 7 IORQ 3 4 5 6 7
a.IRQ3中斷b.IRQ5中斷c.IRQ7中斷
圖9 中斷源的選擇
5.5 控制連線埠地址與有關數據格式:
5.5.1 各個控制端的操作地址與功能見表8:
表8連線埠地址與功能
連線埠操作地址 操作命令 功 能
基地址+0 寫 寫通道代碼
基地址+0 讀 啟動A/D轉換
基地址+1 寫 寫DO數據,寫8253程控及中斷允許代碼
基地址+1 讀 讀DI數據
基地址+2 讀 查詢A/D轉換狀態,讀高4位轉換結果
基地址+3 讀 讀低8位轉換結果,清除A/D中斷標誌
基地址+4 讀/寫 讀/寫8253計數器0通道數據
基地址+5 讀/寫 讀/寫8253計數器1通道數據
基地址+6 讀/寫 讀/寫8253計數器2通道數據
基地址+7 寫 寫入8253控制暫存器控制字
5.5.2 通道代碼數據格式見表9:
表9 通道代碼數據格式
通道號 通道代碼 通道號 通道代碼
1 0H 5 4H
2 1H 6 5H
3 2H 7 6H
4 3H 8 7H
5.5.3 8253程控信號及中斷申請允許信號的定義及數據格式:
8253程控信號及中斷申請允許信號的定義及數據格式見表10:
表108253程控信號及中斷申請允許信號的定義及數據格式
連線埠地址 操作命令 D7D6D5D4 D3 D2 D1 D0 操 作 結 果
基地址+1 寫 1XXX
0XXX D0(外通道代碼)
D0(外通道代碼) 8253 GATE允許8253 GATE禁止
基地址+1 寫 X1XX
X0XX D0(外通道代碼)
D0(外通道代碼) 中斷申請允許中斷申請禁止
5.5.4 查詢A/D轉換狀態數據格式:
查詢A/D轉換狀態數據格式及意義見表11( 連線埠地址為基地址+2 ) :
表11A/D轉換狀態數據格式 ( X表示任意 )
操作命令 D7 D6 D5 D4 D3 D2 D1 D0 A/D轉換狀態
讀 1 × × × × × × × 正在轉換
讀 0 × × × × × × × 轉換結束
5.5.5A/D轉換結果數據格式:
A/D轉換結果數據格式見表12:
表12A/D轉換結果數據格式
連線埠地址 操作命令 D7 D6 D5 D4 D3 D2 D1 D0 意 義
初始地址+2 讀 0 0 0 0 DB11 DB10 DB9 DB8 高4位數據
初始地址+3 讀 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 低8位數據
註:讀取低8位數據的另一附加作用是清除A/D轉換結束中斷標誌,在每一個A/D轉換程式段開始時,應通過空讀低8位數據初始化A/D轉換結束中斷申請標誌。
5.6 模入模出碼制以及數據與模擬量的對應關係:
5.6.1 本接口卡在單極性方式工作時,即模入模出的模擬量為0~10V時,轉換後的12位數碼為二進制原碼。此12位數碼錶示一個正數碼,其數碼與模擬電壓值的對應關係為:
模擬電壓值=數碼(12位)×10( V )/4096 ( V )
即:1LSB=2.44mV
5.6.2 本接口卡在雙極性方式工作時,轉換後的12位數碼為二進制偏移碼。此時12位數碼的最高位 ( DB11 ) 為符號位,“0”表示負,“1”表示正。此時數碼與模擬電壓值的對應關係為:
1. 模入信號為-5V~+5V時:
模擬電壓值=數碼(12位)×10( V )/4096-5 ( V )
即:1LSB=2.44mV
2. 模入信號為-10V~+10V時:
模擬電壓值=數碼(12位)×20( V )/4096-10 ( V )
即:1LSB=4.88mV
5.7 定時器定時觸發信號的要求及使用說明:
本卡的A/D轉換可以由本卡上的8253定時計數器自動定時觸發進行,其定時觸發脈衝波形及參數要求見圖10。
其中:T > 10uS,C.T為定時觸發信號,E.T為外觸發信號。
圖10 定時器脈衝或外觸發信號波形圖
由於A/D轉換時定時觸發啟動信號的要求,我們推薦8253定時通道選用原則如下:
①當定時間隔小於65.535mS時,應選用一級定時通道來完成。
②當定時間隔大於65.535mS時,可選用兩級定時通道串聯使用,本卡在設計上已將8253定時/計數器的通道0和通道1接成級連方式,用戶只需將KJ3選為2連線啟動,並對通道0、通道1進行編程操作即可。
③當定時間隔更大時,如果需要可通過KJ4將通道1與通道2接成級連方式,並將KJ3選為3連線啟動,同時對通道0、1、2進行編程操作。另外,在選用定時觸發方式前,應根據定時間隔的要求按照上述通道選用原則選擇 8253 的定時/計數通道,並將 KJ4設定好,然後參見8253編程要求 ( 說明書3.5.3節 ),對8253進行編程及裝入分頻係數,同時在適當的時間對8253程控端置位,8253定時通道即會產生啟動A/D轉換所需的定時負脈衝,A/D轉換的狀態可以通過查詢或進行中斷申請操作測知。
5.8 外觸發信號E.T的要求:
本卡的模入部分可以在外觸發方式下工作。每當E.T有一個低電平時,A/D就啟動轉換一次。使用該方式時,應注意外信號源E.T信號必須符合TTL電平標準,其波形也可參見圖10。
5.9 中斷工作方式:
本卡的A/D轉換結束信號以及定時觸發信號和外觸發信號在正確設定 KJ4 跨接選擇插座後可以採用中斷方式通知 CPU 進行處理。改變KJ5的位置可以選用IRQ3至IRQ7中斷。用戶在使用中斷方式時,應對主機系統的8259中斷管理器進行初始化並編制中斷處理程式。並在8259中斷允許之前,先清除本卡的中斷標誌。當A/D轉換結束或有一個定時觸發信號以及有一個外觸發信號時,本卡會向 8259 中斷管理器發出一個高電平的中斷申請,CPU接到中斷請求後轉向中斷處理程式運行讀數操作。當讀取低8位轉換結果時,會自動清除A/D轉換中斷標誌。
5.10 調整與校準:
5.10.1 產品出廠前,本卡的模入部分已按照單極性0~10V 調整好,一般情況下用戶不需進行調節,如果用戶改變了輸入量程或發現誤差較大時,可按本節所述方法進行調整。調整時應開機預熱 20 分鐘以上後進行。
5.10.2 各電位器功能說明:
W1為A/D轉換器雙極性偏移調節。
W2為A/D轉換器滿度調節。
5.10.3 模入部分調整:
①A/D轉換滿度調整:在任一通道接入一接近正滿度的電壓信號,運行程式對該通道採樣。調整W2使A/D轉換讀數值等於或接近外信號電壓。
②A/D轉換雙極性偏移調整:在單極性方式時,W1可用於零點輔助調整。在雙極性方式時,如果誤差較大,可在外連線埠分別加上正負電壓信號,調整W1使其對稱。
6. 驅動程式簡介∶
PC-6000 系列演示程式及驅動程式是為PC-6000 系列多功能工控採集板配製的工作在中西文Windows 95/ 98/ NT環境下的一組驅動程式以及使用該驅動程式組建的一個演示程式,可以方便地使用戶在中西文 Windows 環境下檢測硬體的工作狀態以及幫助軟體開發人員在常用的 C\C++, Visual Basic, Delphi, Borland C++ Builder, Borland Pascal for windows 等開發環境中使用 PC-6000 系列工控採集板進行數據採集和過程控制等工作.驅動程式是一個標準動態程式庫 (DLL檔案)。它的輸出函式可以被其它應用程式在運行時直接調用。用戶的應用程式可以用任何一種可以使用 DLL 程式庫的編程工具來編寫。 每種板卡依據其自身功能的不同具有不同的輸出函式和參數定義。
驅動程式輸出函式定義∶
所列函式的說明格式為 VC++6.0環境下PC6000.Dll庫函式的原函式格式,無論使用哪一種開發工具,務必請注意數據格式的匹配及函式的返回類型,本說明中所使用的數據類型定義如下:
short ~16位帶符號數
模擬量輸入部分∶
* 函式:short APIENTRY AI6360Single(short nAdd,short NCHa,short AIMode)
功能:非級聯時,進行某一通道的模擬量數據採集(程式啟動A/D方式)。
參數:nAdd 基地址
nCha 通道號: 0 - 7
AIMode 輸入方式: 0 -- 原碼值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
* 函式: short APIENTRY AI6360SingleLink(short nAdd,short nCha,short nCH,short AIMode)
功能: 進行級聯時,某一級聯板中某一通道的模擬量數據採集(程式啟動A/D方式)。
參數: nAdd 基地址
nCha 級聯板:0 - 7
nCH 選定級聯板的通道號:0-15
AIMode 輸入方式: 0 -- 原碼值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
* 函式: void APIENTRY AI6360AllLink(short nAdd,short nCha,short AIMode,short *p)
功能:採用級聯方式時,某一級聯板全部16通道的模擬量數據採集(程式啟動A/D方式)。
參數:nAdd 基地址
nCha 級聯板:0 - 7
AIMode 輸入方式:0 -- 原碼值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
p 指向16個通道的採集結果的起始地址
* 函式: void APIENTRY AI6360TimerAD0(short nAdd,short nCha,long nValue)
功能: 非級聯時,用8253定時器的0通道定時啟動某一通道,啟動A/D轉換的時間間隔在0-65.535ms(定時
啟動A/D方式)。
參數: nAdd 基地址
nCha 通道號: 0 – 7
nValue 8253定時器0通道預裝入值(0-65535)。
注意: 8253定時器0通道的CLK端接至內部時鐘(1MHz)。
* 函式: void APIENTRY AI6360TimerAD1(short nAdd,short nCha,long nValue0,long nValue1)
功能: 非級聯時,用8253定時器的0,1通道進行級連後定時啟動某一通道,啟動A/D的時間間隔可大於
65.535(ms)。
參數: nAdd 基地址
nCha 通道號: 0 – 7
nValue08253定時器0通道預裝入值(0-65535)。
nValue18253定時器1通道預裝入值(0-65535)。
注意: 板卡將8253定時器0通道與1通道進行級連,8253定時器0通道的CLK
端接至內部時鐘(1MHz),0通道的OUT端接至1通道的CLK端。
說明:啟動A/D的時間間隔的計算公式:
Q=1MHz / 定時器0通道分頻值N / 定時器1通道分頻值M
(其中N儘量小,太大會影響時間間隔精度,但最小不能為1)。
時間間隔和編程參數推薦表
時間間隔Q 定時器0通道分頻值N 定時器1通道分頻值M
100uS 0002H(2) 0032H(50)
1mS 0002H(2) 01F4H(500)
10mS 0002H(2) 1388H(5000)
100mS 0002H(2) C350H(50000)
1S 0014H(20) C350H(50000)
* 函式: void APIENTRY AI6360TimerAD2(short nAdd,short nCha,long nValue)
功能: 非級聯時,用8253定時器的2通道定時啟動某一通道,啟動A/D轉換的時間間隔由外部信號確定(定時
啟動A/D方式)。
參數: nAdd 基地址
nCha 通道號: 0 – 7
nValue 8253定時器2通道預裝入值(0-65535)。
注意: 8253定時器2通道接外部信號。
* 函式: short APIENTRY AI6360TimerRead(short nAdd,short AIMode)
功能: 非級聯時,進行某一通道的模擬量數據的讀取(定時啟動A/D方式)。
參數: nAdd 基地址
AIMode 輸入方式: 0 -- 原碼值
1 -- 0,10v
2 -- -5v,+5v
3 -- -10v,+10v
注意: 若返回值為0,則由基地址錯誤或A/D未轉換完造成。
數字量輸入輸出部分∶
* 函式: unsigned char APIENTRY DI6360Bit(short nAdd,short nBit)
功能: 採集某一位數字量輸入信號的狀態。
參數: nAdd 基地址
nBit 通道號:0-3
* 函式: unsigned char APIENTRY DI6360All(short nAdd)
功能: 採集全部通道(4路) 數字量輸入信號的狀態。
參數: nAdd 基地址
返回: 返回值為4個輸入信號的狀態。
* 函式: void APIENTRY DO6360Bit(short nAdd,short nBit,unsigned char nState)
功能: 進行某一個通道的數字量數據輸出操作。
參數: nAdd 基地址。
nBit 通道號: 0-3
nState1 表示將輸出高電平,0 表示將輸出低電平。
返回: 無返回值
* 函式: void APIENTRY DO6360All(short nAdd,unsigned char nGroup)
功能: 同時進行所有4個通道的數字量數據輸出操作。
參數: nAdd 基地址
nGroup各位輸出狀態, nGroup的D0代表Bit0, D3代表Bit3。
返回: 無返回值
計數定時部分:
* 函式: void APIENTRY CT6360Start(short nAdd,long nPreLoad)
功能: 初始化PC6360,設定8253計數器晶片第2通道的工作模式及暫存器預裝值。
參數: nAdd 基地址
nPreLoad 16位暫存器預裝入值(0-65535)
返回: 無返回值
說明: 此函式將暫存器預裝值裝入暫存器中,此時計數器是否開始計數,還取決於 Gate 端的狀態,通道2工
作於方式2。
* 函式: unsigned long APIENTRY CT6360Read(short nAdd)
功能: 此函式讀取8253計數器的暫存器值。
參數: nAdd 基地址
返回: 返回暫存器的當前值。
說明: 此函式不影響計數器的繼續計數工作。
註:如有需要使用 Windows 系列及 LabVIEW 驅動程式的用戶可向本公司索取, 請註明所使用的作業系統和開發軟體。
7. 編程舉例:
7.1 對通道0連續採樣100次,程式啟動和查詢。本程式可用於A/D部分調校。(BASIC語言程式)
10 CLS ;清屏
20 ADD=&H300 ;板基地址設為0300H
30 B=INP(ADD+3) ;空讀低8位,清除轉換狀態及中斷標誌
40 CH=0 ;對通道0採樣
50 OUT (ADD), CH;送通道代碼
60 FORN=0TO100:NEXT ;延時,延時常數由機型決定
70 FORJ=1 TO100 ;設採樣次數
80 A=INP(ADD) ;啟動A/D,讀出數值無關
90 IF INP(ADD+2)>=128THEN 90 ;查詢A/D轉換狀態
100 H=INP(ADD+2) ;轉換結束,讀高4位結果
110 L=INP(ADD+3) ;讀低8位結果
120 V=(H*256+L)×10000/4096 ;將結果轉換為十進制數據
130 PRINTH, L, V;“mV” ;顯示結果,用“mV”表示
140 NEXTJ ;循環100次
150 END
註:如果是雙極性信號,則120句改為:
V= ( H×256+L ) ×10000/4096-5000
7.2 要求同7.1(C語言程式):
#include "stdio.h"
#include "dos.h"
#include "conio.h"
main()
{
int ch; /* 定義通道變數 */
float value【100】; /* 定義數組變數 */
int dl,dh,i,j,base; /* 定義過程變數 */
clrscr(); /* 清屏 */
base=0x100; /* 設板基地址=100H */
dl=inportb(base+3); /* 空讀低8位,清除轉換狀態及中斷標誌
outportb(base+1,0); /* 置外通道為零 */
printf("Input channle number:"); /* 輸入通道號 */
scanf("%d",&ch);
outportb(base,ch); /* 送通道代碼 */
for(j=0;j<100;j++){ /* 設採樣次數 */
for(i=0;i<10;i++); /* 延時,常數由機型決定 */
dl=inportb(base); /* 啟動A/D,讀出數
/* 值無關 */
do{/* 查詢A/D轉換狀態 */
;
}while(inportb(base+2)>=128);
dh=inportb(base+2); /* 結束,讀高4位結果*/
dl=inportb(base+3); /* 讀低8位結果 */
value【j】=(dh*256+dl)*10.0/4096.0; /* 將結果轉換為十進制數據 */
}
for(j=0;j<100;j++) /* 顯示結果 */
printf("%f ",value【j】);
}
7.3 用通道0定時觸發啟動,定時間隔約為10mS,程式查詢取數,採樣1000組。(BASIC語言程式)
10 CLS ;清屏
20 ADD=&H300 ;設板基地址為0300H
30 DIMA1(1000) ;定義數組長度
40 OUT (ADD+&H7),&H35 ;設8253通道0工作於方式2,十進位BCD計數
50 OUT (ADD+&H4),5 ;通道0分頻係數為5
60 OUT (ADD+&H4),0
70 OUT (ADD+&H7),&H75;設8253通道1工作於
80 OUT (ADD+&H5),00;方式2,十進位BCD計數
90 OUT (ADD+&H5),&H20;定時間隔為10mS
100 B=INP(ADD+3) ;空讀低8位,清除轉換狀態及中斷標誌
110 OUT(ADD+0),0 ;送通道代碼
120 OUT(ADD+1), &H80 ;8253 GATE允許
130 FORT=1 TO1000;定義循環次數
135 IF INP(ADD+2)<128 THEN 135 ;等待啟動信號
140 IF INP(ADD+2)>=128THEN140 ;等待轉換結束
150 H=INP(ADD+2) ;取高4位結果
160 L=INP(ADD+3) ;取低8位結果
170 A1(T)=(H*256+L)*10000/4096-5000 ;處理後存入數組
180 NEXTT ;循環
190 OUT(ADD+1),0 ;關閉8253 GATE
.......... ;轉數據處理
7.4 循環採集8個通道,程式啟動和查詢。(C語言程式)
#include "stdio.h"
#include "dos.h"
#include "conio.h"
main()
{
int ch; /* 定義通道變數 */
float value【8】; /* 定義數組變數 */
int dl,dh,i,base; /* 定義過程變數 */
clrscr(); /* 清屏 */
base=0x100; /* 設板基地址=100H */
dl=inportb(base+3); /* 空讀低8位,清除轉換狀態及中斷標誌 */
outportb(base+1,0); /* 置外通道為零 */
for(ch=0;ch<=7;ch++){ /* 定義循環通道數 */
outportb(base,ch); /* 送通道代碼 */
for(i=0;i<10;i++); /* 延時,常數由機型決定 */
dl=inportb(base); /* 啟動A/D,讀出數值無關 */
do{ /* 查詢A/D轉換狀態 */
;
}while(inportb(base+2)>=128);
dh=inportb(base+2); /* 轉換結束,
/* 讀高4位結果*/
dl=inportb(base+3); /* 讀低8位結果 */
value【ch】=(dh*256+dl)*10.0/4096.0;/* 將結果轉換為十進制數據 */
}/* 下一個通道 */
for(ch=0;ch<=7;ch++) /* 顯示結果 */
printf("%f \n",value【ch】);
}
7.5 外接PS-010前端信號處理板,對PS-010板上16通道掃描一次,PS-010輸出信號接本卡通道0,雙極性信號。(BASIC語言程式)
10 CLS ;清屏
20 ADD=&H280 ;板基地址設為0280H
30 FORN=0TO15 ;對PS-010通道0~15掃描
40 OUT(ADD+0),0;本卡對通道1採樣
50 OUT(ADD+1),N;送PS-010通道號
60 FORT=0TO100:NEXT ;延時,延時常數由PS-010放大增益決定
70 A=INP(ADD+0);啟動A/D轉換
80 IF INP(ADD+2)>=128 THEN 80 ;等待轉換結束
90 H=INP(ADD+2);讀取高4位結果
100 L=INP(ADD+3);讀取低8位結果
110 V=(H*256+L)*1000/4096-5000
120 PRINT"ECH="N,V"mV" ;列印顯示
130 NEXTN ;循環
140 END ;結束
7.6 讀寫數字量:(BASIC語言程式)
10 CLS ;清屏
20 ADD=&H300 ;板基地址設為0300H
30 DO=XX ;設數據輸出為XX
40 OUT(ADD+1),DO ;寫出並鎖存
50 DI=INP(ADD+1) ;讀入數字量狀態
60 PRINTDI ;顯示
70 END
7.7 在 Windows 95/98環境下,使用 MicroSoft Visual Basic 6.0 開發環境,採取調用驅動程式的輸出函式的方法定時循環採集多個 A/D通道, 並對 D/A、數字I/O進行操作和計數器進行操作。
注意: 在vb 6.0 中, 數據類型 Integer 為 16 位帶符號整數, Long 為32 位帶符號整數。
首先創建一個視窗,名為 Form。設定一個定時器,名為Timer1。一個Label, 一個Text1,一個Text3。
'模入部分
Private Declare Function AI6360Single Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal AIMode As Integer) As Integer
Private Declare Function AI6360SingleLink Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal nCH As Integer, ByVal AIMode As Integer) As Integer
Private Declare Sub AI6360AllLink Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal AIMode As Integer, ByRef p As Integer)
Private Declare Sub AI6360TimerAD0 Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal nValue As Long)
Private Declare Sub AI6360TimerAD1 Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal nValue0 As Long, ByVal nValue1 As Long)
Private Declare Sub AI6360TimerAD2 Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nCha As Integer, ByVal nValue As Long)
Private Declare Function AI6360TimerRead Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal AIMode As Integer) As Integer
'數字量
Private Declare Function DI6360Bit Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nBit As Integer) As Byte
Private Declare Function DI6360All Lib "pc6000.dll" (ByVal nAdd As Integer) As Byte
Private Declare Sub DO6360Bit Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nBit As Integer, ByVal nState As Byte)
Private Declare Sub DO6360All Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nGroup As Byte)
'計數器
Private Declare Sub CT6360Start Lib "pc6000.dll" (ByVal nAdd As Integer, ByVal nPreLoad As Long)
Private Declare Function CT6360Read Lib "pc6000.dll" (ByVal nAdd As Integer) As Long
Private Sub Form_Load()
Call CT6360Start(256, 65535)
End Sub
Private Sub Timer1_Timer()
'單通道採集第0通道
Text1 = AI6360Single(256, 0, 1)
'I/O輸出
Call DO6360All(256, DoOutValue)
If DoOutValue = 0 Then
AoOutValue = 255
Else
AoOutValue = 0 '改變數字量輸出狀態.
End If
'I/O輸入
Text3 = DI6360All(256)
'計數器計數
Label = CT6360Read(256)
End Sub
附A. 名詞注釋∶
1. 單端輸入方式∶
各路輸入信號共用一個參考電位,即各路輸入信號共地,這是最常用的接線方式。使用單端輸入方式時,地線比較穩定,抗干擾能力較強,建議用戶儘可能使用此種方式。
2. 雙端輸入方式∶
各路輸入信號各自使用自己的參考電位,即各路輸入信號不共地。如果輸入信號來自不同的信號源,而這些信號源的參考電位(地線)略有差異,可考慮使用這種接線方式。使用雙端輸入方式時,輸入信號易受干擾,
所以,應加強信號線的抗干擾處理,同時還應確保模擬地以及外接儀器機殼接地良好。而且特別注意的是,所有接入的信號,不論是高電位還是低電位,其電平相對於模擬地電位應不超過 +12V 及 -5V, 以避免電壓過高造成器件損壞。
3. 單極性信號∶
輸入信號相對於模擬地電位來講,只偏向一側,如輸入電壓為0~10v.
4. 雙極性信號∶
輸入信號相對於模擬地電位來講,可高可低,如輸入電壓為-5V ~+5V.
5.碼制:
模擬量信號轉換為數字量後,形成一組由 0 開始的連續數字,每一個數字對應著一個特定的模擬量值, 這種對應關係稱為編碼方法或碼制。依據輸入信號的不同分為單極性原碼與雙極性偏移碼。單極性輸入信號對應著單極性原碼,雙極性信號對應著雙極性偏移碼.
6.單極性原碼∶
以 12 位A/D 為例, 輸入單極性信號 0~10V。轉換後得到 0 ~ 4095 的數字量,數字量 0 對應的模擬量為 0V,數字量 4095 對應的模擬量為 10V,這種編碼方法稱為單極性原碼,其數字量值與模擬電壓值的對應關係可描述為:
模擬電壓值=數碼(12位)×10(V)/4096 ( V )
即:1LSB(1個數碼位)=2.44mV
7.雙極性偏移碼∶
以 12 位A/D 為例, 輸入雙極性信號 -5~+5V。轉換後得到 0 ~ 4095 的數字量,數字量 0 對應的模擬量為 -5V,數字量 4095 對應的模擬量為 +5V,這種編碼方法稱為雙極性偏移碼,其數字量值與模擬電壓值的對應關係可描述為:
模擬電壓值=數碼(12位)×10(V)/4096-5 ( V )
即:1LSB(1個數碼位)=2.44mV
此時12位數碼的最高位(DB11)為符號位,此位為0表示負,1表示正。偏移碼與補碼僅在符號位上定義不同,如果反向運算,可以先求出補碼再將符號位取反就可得到偏移碼。
8.A/D轉換速率∶
表明A/D轉換晶片的工作速度。如對 BB774 來講,完成一次轉換所需要的時間是 10 微秒,則它的轉換速率為100 KHz。
9.通過率∶
指 A/D 採集卡對某一路信號連續採集時的最高採集速率。
10. 初始地址∶
使用板卡時,需要對卡上的一組暫存器進行操作,這組暫存器占用數個連續的地址,一般將其中最低的地址值定為此卡的初始地址,這個地址值需要使用卡上的撥碼開關來設定。
文字