gpt4 book ai didi

python - 使用 python 读取 NI 9219 上的称重传感器

转载 作者:行者123 更新时间:2023-12-01 07:37:04 26 4
gpt4 key购买 nike

我正在尝试从 NI cDAQ 9174 读取称重传感器,该 NI cDAQ 9174 的第一个插槽中有 NI 9219 模块,但我收到此错误:

In [1]: runfile('C:/Users/Desktop/Testing/Training/Python/Spyder Data 
Analysis/Loadcells/Load cell trial.py',
wdir='C:/Users/Desktop/Testing/Training/Python/Spyder Data
Analysis/Loadcells')
Traceback (most recent call last):

File "<ipython-input-1-2d4c817735fa>", line 1, in <module>
runfile('C:/Users/Desktop/Testing/Training/Python/Spyder Data
Analysis/Loadcells/Load cell trial.py',
wdir='C:/Users/Desktop/Testing/Training/Python/Spyder Data
Analysis/Loadcells')

File "C:\Users\AppData\Local\Continuum\anaconda3\lib\site-
packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
execfile(filename, namespace)

File "C:\Users\AppData\Local\Continuum\anaconda3\lib\site-
packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/Desktop/Testing/Training/Python/Spyder Data
Analysis/Loadcells/Load cell trial.py", line 35, in <module>
custom_scale_name=None)
File "C:\Users\AppData\Local\Continuum\anaconda3\lib\site-
packages\nidaqmx\_task_modules\ai_channel_collection.py", line 743, in
add_ai_force_bridge_table_chan
min_val, max_val, units.value, bridge_config.value,

AttributeError: 'int' object has no attribute 'value'

我们的想法是,负载将显示在图表上,直到采集了 30 个样本并停止。不过,我可以从 NI 9174 中读取另一个模块,即第三个模块 (NI 9211),该模块有 3 个热电偶,没有任何问题,并且图表将读取热电偶(30 个样本并停止)。

API 提供了几种不同的方法来添加力测量 channel ,我已经尝试了几种,但仍然无法读取。

引用这里:https://nidaqmx-python.readthedocs.io/en/latest/ai_channel_collection.html

理想情况下,我想使用 .add_ai_force_bridge_table_chan() 方法,因为我有一个校准表来添加信息,但是当我收到上述错误时,我也尝试了 add_ai_force_bridge_two_point_lin_chan( ) 但也收到错误。任何帮助是极大的赞赏!

我还想提一下,我有一个 LabVIEW 程序,可以读取称重传感器,使其正常工作。我的想法是最终将所有控制引入 Python,这样我就可以加快测试后数据分析的速度,而且我认为这会很有趣!

有效的热电偶代码:

#import the national instrument wrapper and plotting
import nidaqmx
import matplotlib.pyplot as plt

#keep the plat from closing between data sets
plt.ion()

i = 0

#code portion to read from the NI instrument
with nidaqmx.Task() as task:
task.ai_channels.add_ai_thrmcpl_chan("cDAQ3Mod3/ai0:2")

while i<30:
data = task.read(number_of_samples_per_channel=1)
plt.scatter(i,data[0],c='r')
plt.scatter(i,data[1],c='b')
plt.scatter(i,data[2],c='g')
plt.pause(0.05)
plt.show()
i=i+1
print(data)

给出错误的称重传感器代码:

import nidaqmx
import matplotlib.pyplot as plt

#keep the plat from closing between data sets
plt.ion()

i = 0

#code portion to read from the NI instrument
with nidaqmx.Task() as task:
#adding linear table of values for load cell reading: loadcell SN 666133
task.ai_channels.add_ai_force_bridge_table_chan("cDAQ3Mod3/ai0",
name_to_assign_to_channel="Loadcell",
min_val=-4000.0, max_val=4000.0, units= 15876,
bridge_config=10182,
voltage_excit_source=10200,
voltage_excit_val=2.5, nominal_bridge_resistance=350.0,
electrical_vals= [-19183, 0, 0.3383, 0.7703, 1.1525, 1.535,
1.9183],
electrical_units=15897,
physical_vals=[-4000, 0, 800, 1600, 2400, 3200, 4000],
physical_units=15876,
custom_scale_name=None)

while i<30:
data = task.read(number_of_samples_per_channel=1)
plt.scatter(i,data[0],c='r')
#plt.scatter(i,data[1],c='b')
plt.pause(0.05)
plt.show()
i=i+1
print(data)

最佳答案

现在的样子供引用:

import nidaqmx
import matplotlib.pyplot as plt

#keep the plat from closing between data sets
plt.ion()

i = 0

#code portion to read from the NI instrument
with nidaqmx.Task() as task:
#adding linear table of values for load cell reading: loadcell SN 666133
task.ai_channels.add_ai_force_bridge_table_chan("cDAQ3Mod1/ai0",
name_to_assign_to_channel="Loadcell",
min_val=-4000.0, max_val=4000.0, units= nidaqmx.constants.ForceUnits.POUNDS,
bridge_config=nidaqmx.constants.BridgeConfiguration.FULL_BRIDGE,
voltage_excit_source= nidaqmx.constants.ExcitationSource.INTERNAL,
voltage_excit_val=2.5, nominal_bridge_resistance=350.0,
electrical_vals= [-1.9183, 0, 0.3383, 0.7703, 1.1525, 1.535, 1.9183],
electrical_units=nidaqmx.constants.BridgeElectricalUnits.M_VOLTS_PER_VOLT,
physical_vals=[-4000, 0, 800, 1600, 2400, 3200, 4000],
physical_units=nidaqmx.constants.BridgePhysicalUnits.POUNDS,
custom_scale_name=None)

while i<30:
data = task.read(number_of_samples_per_channel=1)
plt.scatter(i,data[0],c='r')
#plt.scatter(i,data[1],c='b')
plt.pause(0.05)
plt.show()
i=i+1
print(data)

关于python - 使用 python 读取 NI 9219 上的称重传感器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56943580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com