That error message is somewhat misleading.
There are two problems in your code. The first is that your boundary condition function is incorrect. From from your IC function, I believe you want
pl = ul-.002*sech((xl/0.5)^2)-0.75;
ql = 0;
pr = ur-.002*sech((xr/0.5)^2)-0.75;
qr = 0;
This change will allow you to obtain a solution; however the solution will be incorrect as you will clearly see. The error message you are getting relates to this problem. The pdepe function is designed to solve partial differential equations that are second-order in x. That is, it expects that f in your pdeex1pde function will include a term with DuDx. One work-around to this is to simply include a small DuDx term in your f-coefficient like this:
alpha = 1e-3;
f = -(u/2)*(2-u) + alpha*DuDx;
You have to experiment with the value of alpha. Too small a value and the solution contains the spurious oscillations. Too large and the solution differs significantly from the correct one.