卓發智能
相互學習,共同進步。
級別: 工控俠客
![]() |
請教各位朋友,PLC程序怎么讀取編碼器的數據?2個編碼器要怎么與PLC進行接線?碼碼器旋轉一圈是360脈沖 |
|
---|---|---|
|
lxdddd1
天天向上
級別: 論壇先鋒
![]() |
編碼器字.BoolData[0]:=棕色; 編碼器字.BoolData[1]:=橙色; 編碼器字.BoolData[2]:=黃色; 編碼器字.BoolData[3]:=綠色; 編碼器字.BoolData[4]:=藍色; 編碼器字.BoolData[5]:=紫色; 編碼器字.BoolData[6]:=灰色; 編碼器字.BoolData[7]:=白色;//256到7,360到8 編碼器字.BoolData[8]:=粉色;//360編碼器輸入 脈沖命令(Clk:=初始校正);//初始校正脈沖 CASE 編碼器選擇 OF 360: 初始校正后角度:=Gray(編碼器字.wordData,_R360,UINT#76,UINT#0);//格雷碼轉換值 當前角度L:=Gray(編碼器字.wordData,_R360,UINT#76,初始校正后角度UINT);//經過初始校正后轉換值 IF 脈沖命令.Q =TRUE THEN; 初始校正后角度UINT:=LREAL_TO_UINT(初始校正后角度);//初始校正角度寄存 END_IF; IF 角度取反 = TRUE THEN ;//角度取正 編碼器角度:= UDINT#10*LREAL_TO_UDINT(當前角度L); ELSE;//角度取反 編碼器角度:=UDINT#10*(UDINT#360-LREAL_TO_UDINT(當前角度L)); END_IF; 256://256編碼器 當前角度L2:=Gray(編碼器字.wordData,_R256,UINT#0,UINT#0); Angle_1:=UDINT#10*LREAL_TO_UDINT(當前角度L2); IF 角度取反 = TRUE THEN;//角度取正 編碼器實際位置:=Angle_1; ELSE;//角度取反 編碼器實際位置:=UDINT#3590-Angle_1; END_IF; IF 脈沖命令.Q =TRUE THEN; 編碼器零位:=編碼器實際位置;//初始校正寄存器 END_IF; IF 編碼器實際位置<編碼器零位 THEN; 編碼器角度:=編碼器實際位置+UDINT#3590-編碼器零位; END_IF; IF 編碼器實際位置>=編碼器零位 THEN; 編碼器角度:=編碼器實際位置-編碼器零位; END_IF; END_CASE; |
---|---|
|