dospar = {a -> 0.1, b -> 0.5, c ->  .08, 
          k -> 0.001};
vyr[u_] = 
        k*u + a*Exp[((u - b)/c)] - a*Exp[((-b)/c)] /. 
          dospar;
Plot[vyr[u], {u, - .5,  .1}, PlotRange -> All, 
      AxesLabel -> {"Ud", "Id"}]
Plot[vyr[u], {u, -2, 1}, PlotRange -> All, 
      AxesLabel -> {"Ud", "Id"}]
uz = 40*(Sqrt[(((1.  Sin[314*t]))^2)]);
Plot[uz, {t, 0, ((2  Pi)/314)}, 
      AxesLabel -> {"t", "uz"}]
rr1 = 
        L*i1'[t] + r1*i1[t] == 
          uz - u1[t];
rr2 = 
        c2*u1'[t] + u1[t]/r3 + vyr[u1[t] - u2[t]] == 
          i1[t];
rr3 = -vyr[u1[t] - u2[t]] + c1*u2'[t] + u2[t]/r2 == 
          0;
p1 = u1[0] == 0;
p2 = i1[0] == 0;
p3 = u2[0] == 0;

pokdos = {c1 -> 4.7*(10^(-3)), L -> 0.01, r1 -> 0.2, 
          r2 -> 20, r3 -> 1000, 
          c2 ->  .1*(10^(-6))};
tmax =  .8;
rce = {rr1, rr2, rr3, p1, p2, p3} /. 
          pokdos;
res = NDSolve[rce, {i1[t], u2[t], u1[t]}, {t, 0, tmax}, 
            MaxSteps -> (10^9)][[1]];
napetikond[t_] = Evaluate[u2[t] /. res];
Plot[napetikond[t], {t, 0, tmax}, PlotRange -> All, 
      AxesLabel -> {"t", "uc[t]"}]
Plot[napetikond[t], {t, tmax - 0.04, tmax}, PlotRange -> All, 
      AxesLabel -> {"t", "uc[t]"}]
proudzdroj[t_] = Evaluate[i1[t] /. res];
Plot[proudzdroj[t], {t, 0, tmax}, PlotRange -> All, 
      AxesLabel -> {"t", "i1[t]"}]
Plot[proudzdroj[t], {t, tmax - 0.04, tmax}, PlotRange -> All, 
      AxesLabel -> {"t", "i1[t]"}]