I am a beginner trying to read some data from the OBD2 port (vehicle speed, engine RPM, MAP, etc.) using an OBD2 adapter to my laptop, so I can try to perform my own post-processing while connected to the car. However, it looks like there is a limit on how frequent we can send PID requests and receive responses, hence sampling frequency is limited (I've read 20 Hz, but not too sure). Can I instead attempt to just read raw CAN frames from the vehicle through the OBD2 port in order to be able to sample at a higher frequency? Will this require additional hardware equipment (recommendations are welcome) and will this require having to reverse-engineer the CAN frames (eg. figure out message IDs, how many bytes is the signal, etc.)?
Thanks for the help!
Yes, the amount of PIDs you can read per second is limited by various factors, among those the speed of the bus (of course), the computational speed of the ECUs, and the speed of involved adapters. I did talk about those factors a bit more in this post here.
Depending on the hard- and software you're using, you might get 50 to 100 PIDs per second in the best case.
If you want to maximize this, don't use an OBD2 adapter with a serial chip based on the ELM327 communication protocol. Those are wasting a lot of bandwidth due to two times binary<-->ASCII conversion. Use a "direct" CAN-bus adapter instead.
As for interpreting protocol values, there is no change between what's going on on the bus and what the OBD2 adapter shows you, like I said, it only converts between binary and ASCII. As long as you are interested in emission diagnostics, it's all documented.