Here is a example that uses the gamestudio CUBE_MDL (that shows the movement of wheels quite good).

Code:
#include <acknex.h>
#include <default.c>
#include <ackphysx.h>


void main()
{
	/* Init */
	wait(1);
	level_load(NULL);
	physX_open();
	
	camera.x = 218;
	camera.y = 442;
	camera.z =  81;
	camera.pan = 247;

	ENTITY* ground = ent_create(CUBE_MDL,vector(0,0,0),NULL);
	vec_set(ground.scale_x,vector(100,100,1));
	pXent_settype(ground,PH_STATIC,PH_BOX); 
	pXent_setfriction(ground,90);

 
	/* Vehicle */
	var motion[6] = { 0, 0, 0, NX_D6JOINT_MOTION_FREE, 0, 0};
	var drive[6] = { 0, 0, 0, NX_D6JOINT_DRIVE_VELOCITY, 0, 0 };

	VECTOR pos;
	vec_set(pos, vector(0,0,100));


	ENTITY *chassis = ent_create(CUBE_MDL, pos, NULL);
	vec_set(chassis.scale_x, vector(10,5,4));

	pXent_settype(chassis, PH_RIGID, PH_BOX);
	pXent_setgroup(chassis, 2);
	pXent_setmass(chassis, 50);


	ENTITY *wheel1 = ent_create(CUBE_MDL, pos, NULL);
	vec_fill(wheel1.scale_x, 2);
	vec_add(wheel1.x, vector(60,60,-32));

	pXent_settype(wheel1, PH_RIGID, PH_SPHERE);
	pXent_setgroup(wheel1, 2);
	pXent_setmass(wheel1, 30);

	pXcon_add(PH_6DJOINT, wheel1, chassis, 0);
	pXcon_setparams1(wheel1, wheel1.x, NULL, NULL);
	pXcon_set6djoint(wheel1, motion, drive);

	ENTITY *wheel2 = ent_create(CUBE_MDL, pos, NULL);
	vec_fill(wheel2.scale_x, 2);
	vec_add(wheel2.x, vector(60,-60,-32));

	pXent_settype(wheel2, PH_RIGID, PH_SPHERE);
	pXent_setgroup(wheel2, 2);
	pXent_setmass(wheel2, 30);

	pXcon_add(PH_6DJOINT, wheel2, chassis, 0);
	pXcon_setparams1(wheel2, wheel2.x, NULL, NULL);
	pXcon_set6djoint(wheel2, motion, drive);

	ENTITY *wheel3 = ent_create(CUBE_MDL, pos, NULL);
	vec_fill(wheel3.scale_x, 2);
	vec_add(wheel3.x, vector(-60,60,-32));

	pXent_settype(wheel3, PH_RIGID, PH_SPHERE);
	pXent_setgroup(wheel3, 2);
	pXent_setmass(wheel3, 30);

	pXcon_add(PH_6DJOINT, wheel3, chassis, 0);
	pXcon_setparams1(wheel3, wheel3.x, NULL, NULL);
	pXcon_set6djoint(wheel3, motion, drive);

	ENTITY *wheel4 = ent_create(CUBE_MDL, pos, NULL);
	vec_fill(wheel4.scale_x, 2);
	vec_add(wheel4.x, vector(-60,-60,-32));

	pXent_settype(wheel4, PH_RIGID, PH_SPHERE);
	pXent_setgroup(wheel4, 2);
	pXent_setmass(wheel4, 30);

	pXcon_add(PH_6DJOINT, wheel4, chassis, 0);
	pXcon_setparams1(wheel4, wheel4.x, NULL, NULL);
	pXcon_set6djoint(wheel4, motion, drive);


	var accel;

	while(1)
	{
		accel = (key_w-key_s)*500;
		pXcon_setmotor(wheel1, vector(0,0,accel), 0);
		pXcon_setmotor(wheel2, vector(0,0,accel), 0);
		wait(1);
	}
}



This is only for driving forward and backward, as the wheels start spinning whenever I use NX_D6JOINT_MOTION_FREE / NX_D6JOINT_MOTION_LIMITED (with limits set).