四軸機械臂控制

Ananke_Sheqk發表於2024-03-10

1.R1四軸控制

學習到的程式設計心得:
1.IO點位是數字,因為暫時不確定且為了可讀性,先用變數,然後給變數賦值
2.變數的名字進行分類,分IN和OUT在變數名前加上,若是實際線路未接的部分,字首再加上test進行模擬處理,用來遮蔽這些未接的訊號對程式的影響

require "Points"
require "Tools"
require "Users"
local a=1
local b=2
local str="LinkHou "
--------------------
local  in_zudangqigangshang=0   
local  in_daowei=1   
local  in_youliao=2   
local  in_houzhanfangliao=7           
local  out_qianzhanfangliao=0         
local  out_zudangqigang=4
local  out_cuiqi=5
-----------------------
local  test1=1         ---遮蔽前後站訊號  
local  test2=1         ---遮蔽氣缸訊號
local  test_in_youliao=1                   ---遮蔽有無料光電訊號
local  test_in_houzhanfangliao=1   --遮蔽後站放料訊號
----------------
function LMain()
   JSpeed={vel=10,accel=30,decel=30,tvel=0,rvel=0,blend=100,leave=0,reach=0}
   LSpeed={vel=500,accel=30,decel=30,tvel=0,rvel=0,blend=50,leave=0,reach=0}
   VELPCT(50)
   MOTOR(On)
   DELAY(500)
   ccpos=CCPOS()
   ccpos.z=home.z
   MOVJ(ccpos,tool1,JSpeed)
   MOVJ(home,tool1,JSpeed)
   while true do
       --------------------------------上料
       OUT(out_zudangqigang,Off)                      --阻擋上升          
       repeat
           SLEEP(30)
       until IN(in_zudangqigangshang)==On or test1==1  --阻擋到位
       if IN(in_daowei)==Off then
           OUT(out_qianzhanfangliao,On)                   --允許前站放料
       end
       a=0
       repeat
           if IN(in_daowei)==On then
               a=a+1
           else
               a=0
           end
           DELAY(50)
       until  IN(in_daowei)==On  and  a>10 
       OUT(out_qianzhanfangliao,Off)                   --允許前站放料關閉
       --------------------------------有料就工作,無料放空板或者報警
       if IN(in_youliao)==On or test_in_youliao==1 then
           OUT(out_cuiqi,On)
           MOVJ(p1,tool1,JSpeed)
           MOVL(p2,tool1,LSpeed)
           MOVL(p3,tool1,LSpeed)
           MOVL(p4,tool1,LSpeed)
           MOVL(p1,tool1,LSpeed)
           MOVJ(home,tool1,JSpeed)
           DELAY(0)
           OUT(out_cuiqi,Off)
       end
       -------------------------------------等放行
       repeat
           SLEEP(30)
       until IN(in_houzhanfangliao)==On or test_in_houzhanfangliao==1  --放行
       OUT(out_zudangqigang,On)                          --阻擋下降放行
       a=0
       repeat
           if IN(in_daowei)==Off then
               a=a+1
           else
               a=0
           end
           DELAY(50)
       until  IN(in_daowei)==Off  and  a>10                      
   end
end

相關文章