I'm researching what would be needed to do the following:
1. Collect 8 discrete inputs and one analog input every 1 millisecond, along with a millisecond timestamp, for about 1.5 seconds total collection time.
I think the Arduino is fast enough to handle this, although outputting it to the computer might be a bit slower.
2. After collection, dump to a PC for analysis (USB or Ethernet)?
I generally use USB, but it depends on the application. If the Arduino is near the computer, USB will work fine, but if the Arduino is some distance away Ethernet would work better.
3. Discrete I/O is 24vdc, Analog is +-10vdc.
You'll want to wire in some opto-couplers and a voltage divider to step this down to the Arduino's 0-5v. If you want values between +10 and -10, the Arduino has a map() function which will allow you to map 0->5 onto -10->+10.
This process would re-occur once every 6 seconds.
The Arduino can probably handle this timing by itself, although it tends to drift by a few seconds every hour (depending on a variety of factors).
My questions would be:
1. which piece of hardware.
Any Arduino should do just fine.
2. programming method, IDE or gcc.
Your choice; the IDE converts your code to C++ and runs it through GCC.
3. I assume i'll have to use a sheild with opto couplers for the discrete inputs, and a voltage divider for the analog?
Correct; the Arduino can't handle voltages in the range you specified.
4. Method to move the data to the PC (VB .NET)
Serial should work, although you may find that you need to store the data for the 1500ms and transmit it after the readings are done, as Serial will slow down everything else. You'll need 1500*2 bytes, or 3K of RAM. I think
the Mega has enough memory for this.
5. is there anything else to consider?
Not that I can think of.