profil_cena = [0.17, 0.17, 0.17, 0.17, 0.17, 0.2999, 0.2999, 0.2999, 0.2999, 0.2999, 0.2999, 0.2999, 0.2999, 0.17, 0.17, 0.2999, 0.2999, 0.2999, 0.2999, 0.2999, 0.2999, 0.2999, 0.17, 0.17]; profil_poboru = [40, 30, 30, 40, 60, 80, 140, 180, 160, 110, 90, 80, 70, 80, 80, 110, 120, 110, 110, 90, 80, 70, 60, 50]; Hs = 24; Hp = 24; w_u = 1; w_q = 100; v0 = 100; eps_v0 = 50; v_min_max = [50 500]; u_min_max = [0 100 100; -100 100 100]; da = opcda('192.168.1.11', 'Kepware.KEPServerEX.V5'); connect(da); grp = addgroup(da, 'Fanuc') itm1 = additem(grp, {'Channel1.Fanuc.pompa'}); itm2 = additem(grp, {'Channel1.Fanuc.kat'}); itm3 = additem(grp, {'Channel1.Fanuc.flaga3'}); i=1; while(1) profil_poboru_new = 0; profil_cena_new = 0; flaga = read(itm3); pause(1); if flaga.Value == 1 for j = 1:Hs profil_poboru_new(j) = profil_poboru(j+i-1); profil_cena_new(j) = profil_cena(j+i-1); end [U tr_zb koszt Q] = MPC_SW(Hs, Hp, w_u, w_q, v0, eps_v0, v_min_max, u_min_max, profil_cena_new, profil_poboru_new); for k = 1:Hs U(k,2) = 1.1436789*atand(0.05*U(k,2)) + 90; end profil_poboru_new profil_cena_new Hs Hp U i Hp = Hp - 1; Hs = Hs - 1; write(itm1, int16(U(1,1)*320)) write(itm2, int16(U(1,2)*32000/180)) i = i + 1; if i == 24 i = 1; Hp = 24; Hs = 24; end end write(itm3, 0); end