Limits of (high frequency) sampling of AIO using RevPiModIO python
Posted: 22 Oct 2018, 10:31
Hi,
I was wondering what the limits are for the python programs running (using RevPiModIO) on the RevPi for pure measuring purposes (sensor values from the AIO)
I want to measure a 4..20 mA signal at a e.g. freq. of 100Hz. Currently (this was before I saw the concept of cycleloop) I've tried this with a manual loop (see part of script below). But this causes regularly crashes, without knowing the issues.
Also in a next step I want to write this data to a (binary) file to transfer it to the cloud. So I was wondering if you have examples or best practises for doing exactly this:
- simply measuring AIO values (4..20mA, 0-10V, RTD, ...)
- frequencies up to 100Hz --> limit??
- writing this data to file and upload files (-> too load intensive for RevPi??)
Thanks a lot,
I was wondering what the limits are for the python programs running (using RevPiModIO) on the RevPi for pure measuring purposes (sensor values from the AIO)
I want to measure a 4..20 mA signal at a e.g. freq. of 100Hz. Currently (this was before I saw the concept of cycleloop) I've tried this with a manual loop (see part of script below). But this causes regularly crashes, without knowing the issues.
Also in a next step I want to write this data to a (binary) file to transfer it to the cloud. So I was wondering if you have examples or best practises for doing exactly this:
- simply measuring AIO values (4..20mA, 0-10V, RTD, ...)
- frequencies up to 100Hz --> limit??
- writing this data to file and upload files (-> too load intensive for RevPi??)
Thanks a lot,
Code: Select all
IO_LIST = ['InputValue_1','InputValue_2','InputValue_4']
perf_time_next = now + 1
number_of_samples = 60*100 # 1 minute at 100Hz
sample_count = 0
rawdata = []
polling_time = 0.010 # 10 ms -> 100Hz
while sample_count < total_number_of_samples:
# Wait until next planned sample point start time
while perf_time_next > time.perf_counter():
pass
perf_time_next += polling_time # seconds
# ---------------------------------
# Sample
values = []
for input_name in IO_LIST:
values.append(float(revpi.io[input_name].value))
sample_count += 1
rawdata.append(values)