使用 Python 的 DAQ I/O 模块(三)

本文将举例如何控制DAQ设备的Python代码。使用 DAQ 设备时,通常会用到4个操作。
1. 模拟输出(写) - AO
2. 模拟输入(读取) - AI
3.  数字输出(写) - DO
4. 数字输入(读取) - DI
下面将分别展示一些基本示例。这些示例可以帮助解决如下的应用:从连接到 DAQ 设备的一个或多个传感器中(如温度传感器)读取数值。或者创建一个控制系统,读取过程值,然后将计算出的控制信号值(例如使用 PID 控制器)写回到 DAQ 设备和过程中。

1. 模拟输出(写) - AO

实例中运用USB6008,需要注意的是它只能输出0到5V之间的电压信号。USB-6008 仅有 2 个模拟输出通道:AO0 和 AO1。

在运行下面代码时,可以使用万用表检查程序输出的数值是否正确。

import nidaqmx
task = nidaqmx.Task()
task.ao_channels.add_ao_voltage_chan('Dev1/ao0','mychannel',0,5)
task.start()
value = 2
task.write(value)
task.stop()
task.close()

2. 模拟输入(读取) - AI

USB-6008 有 8 个 AI 参考单端 (RSE) 模拟输入通道,或 4 个 AI 差分模拟输入通道。

在运行下面代码时,可以读取到端口AI0的输入电压值。

import nidaqmx
task = nidaqmx.Task()
task.ai_channels.add_ai_voltage_chan("Dev1/ai0")
task.start()
value = task.read()
print(value)
task.stop
task.close()

模拟输入有着差分(比如AI 0+ AI 0-)和单端 RSE (比如AI0 GND)的区别。接下来将从代码上区分他们。

下面代码是单端模拟输入(RSE)的配置:

import nidaqmx
from nidaqmx.constants import (TerminalConfiguration)
task = nidaqmx.Task()
task.ai_channels.add_ai_voltage_chan("Dev1/ai0",
terminal_config=TerminalConfiguration.RSE)
task.start()
value = task.read()
print(value)
task.stop()
task.close()

而差分模拟输入配置如下:

import nidaqmx
from nidaqmx.constants import (TerminalConfiguration)
task = nidaqmx.Task()
task.ai_channels.add_ai_voltage_chan("Dev1/ai0",
terminal_config=TerminalConfiguration.DIFFERENTIAL)
task.start()
value = task.read()
print(value)
task.stop()
task.close()

3.  数字输出(写) - DO

USB6008 有着12 个数字通道 ,端口 0 数字 I/O 通道 0 至 7 和 端口 1 数字 I/O 通道 0 至 3。可以将每个信号单独配置为输入或输出。

下面是写数字信号的代码:

import nidaqmx
task = nidaqmx.Task()
task.do_channels.add_do_chan("Dev1/port0/line0")
task.start()
value = True
task.write(value)
task.stop
task.close()

因为写入的为True,所以用万用表测得P0.0处电压为5V。

如果是写多个数字信号,如下代码可以参考:

import nidaqmx
import time
from nidaqmx.constants import (LineGrouping)
task = nidaqmx.Task()
task.do_channels.add_do_chan("Dev1/port0/line0:7","MyDOChannels",
line_grouping=LineGrouping.CHAN_PER_LINE)
task.start()
data = [True,False,True,True,False,True,False,True]
task.write(data)
time.sleep(5)
data[1] = True
task.write(data)
task.stop
task.close()

4. 数字输入(读取) - DI

数字信号的读取可以参考下面代码:

import nidaqmx
task = nidaqmx.Task()
task.di_channels.add_di_chan("Dev1/port0/line1")
task.start()
value = task.read()
print(value)
task.stop
task.close()

运行后将读取端口P0.1的逻辑值。

最后一个例子,是同一端口数字信号的写和读。

import nidaqmx
task = nidaqmx.Task()
task.do_channels.add_do_chan("Dev1/port0/line0")
task.start()
value = False #也可改变为True测试
task.write(value)
task.stop
task.close()
task = nidaqmx.Task()
task.di_channels.add_di_chan("Dev1/port0/line1")
task.start()
value = task.read()
print(value)
task.stop
task.close()

Python 控制 DAQ的内容就这些了,完结。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值