S7-200SMART 圓形軌跡的算法
![圖片](https://img65.chem17.com/9/20221130/638054004582446684546.png)
(1)原理圖:Q0.0為X軸脈沖,Q0.2為X軸方向;Q0.1為y軸脈沖,Q0.7為y軸方向
(2)實(shí)物圖:三個(gè)步進(jìn)驅(qū)動(dòng)器,三套電機(jī)配合絲桿,定義往電機(jī)方向移動(dòng)為正方向,絲桿的邏輯為4mm,步進(jìn)驅(qū)動(dòng)的細(xì)分設(shè)置為3200個(gè)脈沖一轉(zhuǎn)。如下圖所示:
![圖片](https://img65.chem17.com/9/20221130/638054004582446684546.png)
西門子S7-200SMART系列PLC不支持圓弧插補(bǔ)功能,所以需要自己根據(jù)算法進(jìn)行計(jì)算后分別驅(qū)動(dòng)X軸和Y軸的移動(dòng)從而來(lái)實(shí)現(xiàn)畫圓功能,要驅(qū)動(dòng)XY軸畫圓,可采用極限逼近法,把畫圓弧變成畫線段,如下圖所示左側(cè)為六等分,角度a=30°,右側(cè)為十二等分,角度a=15°。
從上圖中可以看出,當(dāng)?shù)冗叾噙呅蔚倪呍蕉鄷r(shí),則多邊形的軌跡就越和圓相近,所以當(dāng)角度a足夠小時(shí),則得到的多邊形軌跡就越與圓接近。根據(jù)以上分析需要完成畫圓功能,我們需要知道“圓心坐標(biāo)值"、“圓的半徑"、“畫圓的速度",然后根據(jù)分為三部分來(lái)實(shí)現(xiàn):
1、畫筆移動(dòng)到圓上
把XY軸分別回原點(diǎn),回原點(diǎn)后的位置默認(rèn)為XY平面坐標(biāo)的原點(diǎn),然后由原點(diǎn)移動(dòng)到圓心坐標(biāo),如下圖所示1#點(diǎn)為圓心,2#點(diǎn)為圓上點(diǎn)。
假設(shè)1#點(diǎn)的坐標(biāo)為(X1,Y1),速度為V,則X軸移動(dòng)的距離為X1,Y軸移動(dòng)的距離為Y1。根據(jù)勾股定理可計(jì)算出原點(diǎn)到圓心的距離“Y(0→1)"、X軸移動(dòng)速度“VXaxis"和Y軸移動(dòng)速度“VYaxis" ,計(jì)算公式如下所示:
當(dāng)畫筆到達(dá)1#點(diǎn)后,然后Y軸不動(dòng),X軸以V的速度移動(dòng)半徑R的距離到達(dá)圓上2#點(diǎn)位置,假2#點(diǎn)的坐標(biāo)為(X2,Y2)
2、畫筆開始畫圓
畫筆從2#點(diǎn)位置開始移動(dòng)畫圓,假設(shè)下個(gè)圓上的點(diǎn)為3#點(diǎn),坐標(biāo)為(X3,Y3),從圓心到3#點(diǎn)和從圓心到2#點(diǎn)的角度為a,如下圖所示:
根據(jù)三角函數(shù)可計(jì)算出3#點(diǎn)的坐標(biāo)(X3,Y3)的值分別為:
X3=Cos(a)*R+X1,Y3=Sin(a)*R+Y1
根據(jù)勾股定理可計(jì)算出XY軸要移動(dòng)的距離 “Y(2→3)"的值。X軸移動(dòng)速度“VXaxis"和Y軸移動(dòng)速度“VYaxis" ,計(jì)算公式如下所示:
注:此時(shí)X2和Y2為X軸和Y軸的當(dāng)前位置,X3和Y3為X軸和Y軸要移動(dòng)的目標(biāo)位置,速度需要取絕對(duì)值。
同理:當(dāng)畫筆到達(dá)3#點(diǎn)后,角度變?yōu)?span style="margin: 0px; padding: 0px; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; font-family: Calibri;">2a,則對(duì)應(yīng)的圓上點(diǎn)為4#點(diǎn),坐標(biāo)為(X4,Y4),如下圖所示:
根據(jù)三角函數(shù)可計(jì)算出4#點(diǎn)的坐標(biāo)(X4,Y4)的值分別為:
X4=Cos(2a)*R+X1,Y4=Sin(2a)*R+Y1
根據(jù)勾股定理可計(jì)算出XY軸要移動(dòng)的距離 “Y(3→4)"的值。X軸移動(dòng)速度“VXaxis"和Y軸移動(dòng)速度“VYaxis" ,計(jì)算公式如下所示:
注:此時(shí)X3和Y3為X軸和Y軸的當(dāng)前位置,X4和Y4為X軸和Y軸要移動(dòng)的目標(biāo)位置,速度需要取絕對(duì)值。
依次下去,每走完一次后,角度自加一次,當(dāng)角度值大于360°時(shí),則認(rèn)為畫圓完成。
![圖片](https://img65.chem17.com/9/20221130/638054004582446684546.png)
根據(jù)分析,對(duì)于S7-200SMART系列PLC的程序設(shè)計(jì)主要分為“運(yùn)動(dòng)向?qū)У慕M態(tài)配置"、“初始與會(huì)原點(diǎn)程序"、“速度計(jì)算程序"、“開始畫圓程序"
(1)初始化和回原點(diǎn)
(2)速度換算程序
(3)畫圓程序
![圖片](https://img65.chem17.com/9/20221130/638054004582446684546.png)
![圖片](https://img65.chem17.com/9/20221130/638054004582446684546.png)
【延伸閱讀】S7-200 SMART 運(yùn)動(dòng)控制指令詳解
S7-200 smart 運(yùn)動(dòng)控制指令由編程軟件向?qū)?,運(yùn)動(dòng)控制指令有很多條構(gòu)成,且每條指令都帶有很多接口參數(shù),想要使用這些指令,要先知道接口是什么意思,雖然幫助文章都有解釋,但讀懂幫助文件也很費(fèi)勁,今天就詳細(xì)給大家介紹運(yùn)動(dòng)指令的使用。
S7-200 SMRAT 運(yùn)動(dòng)控制指令如下圖生成:
1、選擇"運(yùn)動(dòng)"右鍵打開。
2、本次就以"軸0"為例。
3、命個(gè)名字。
4、數(shù)字1位選擇工程單位,可以使工程單位,也可以使用脈沖。
數(shù)字2是電機(jī)旋轉(zhuǎn)一圈的脈沖量,我目前步進(jìn)撥碼設(shè)定是10000個(gè)脈沖旋轉(zhuǎn)一周
數(shù)字3是單位,根據(jù)自己需要設(shè)定
數(shù)字4是電機(jī)旋轉(zhuǎn)一圈的工程量,我設(shè)定的是360度,也就是說(shuō)10000個(gè)脈沖對(duì)應(yīng)360度。
5、方向控制,我是用的脈沖加方向,所以選擇單項(xiàng)2軸。
6、正負(fù)極限根據(jù)需要設(shè)定,我這個(gè)沒(méi)有正負(fù)極限就沒(méi)有選擇。
7、零電位使用,走絕對(duì)位置和相對(duì)位置之前一定要定義好原點(diǎn),否則絕對(duì)位置和相對(duì)位置不運(yùn)行。
8、0脈沖位置,也可以使用此點(diǎn)定義0點(diǎn)。
9、停止根據(jù)需要選擇,通過(guò)閱讀STP就能理解什么意思。
10、停止根據(jù)需要選擇,通過(guò)閱讀TRIG就能理解什么意思。
11、禁用根據(jù)需要選擇,通過(guò)閱讀DIS就能理解什么意思。
12、最大速度和最小速度根據(jù)現(xiàn)場(chǎng)情況設(shè)定,我設(shè)定最大速度為360度/秒。
13、JOG命令也就是手動(dòng)運(yùn)行,根據(jù)需要設(shè)定速度,建議設(shè)定小一些,看看運(yùn)行速度再調(diào)整。
14、此處設(shè)定加減速時(shí)間,也就是脈沖輸出的加減速時(shí)間,根據(jù)現(xiàn)場(chǎng)情況設(shè)定。
15、急停補(bǔ)償。
16、反沖補(bǔ)償,也就是校準(zhǔn)絲杠間隙。
17、參考點(diǎn)設(shè)定
18、找零點(diǎn)時(shí)速度和方向設(shè)定。
19、偏移量設(shè)定
20、搜索參考點(diǎn)方式選擇
21、從驅(qū)動(dòng)器中讀取絕對(duì)位置
22、曲線設(shè)定,我這里沒(méi)用曲線,沒(méi)有生成曲線。
23、點(diǎn)"建議"自動(dòng)分配地址。
24、組件
25、映射顯示
26、完成,點(diǎn)擊生成就完成了。
1.啟用并初始化軸
AXISx_CTRL子程序(控制)啟用和初始化運(yùn)動(dòng)軸,方法是自動(dòng)命令運(yùn)動(dòng)軸每CPU更改為RUN模式時(shí)加載組態(tài)/曲線表。在項(xiàng)目中只對(duì)每條運(yùn)動(dòng)軸使用此子程序一次,并確保程序會(huì)在每次掃描時(shí)調(diào)用此子程序。使用SM0.0(始終開啟)作為EN參數(shù)的輸入。
管腳含義:
MODE:?jiǎn)⒂媚K。1=可發(fā)送命令;0=中止進(jìn)行中的任何命令
Done:完成標(biāo)志位
Error:錯(cuò)誤代碼(字節(jié))
C_Pos:軸的當(dāng)前位置(絕對(duì)定位或者相對(duì)定位),工程單位:Real型數(shù)據(jù);相對(duì)脈沖:DINT型數(shù)據(jù)
C_Speed:軸的當(dāng)前速度,Real型數(shù)據(jù)
C_Dir:軸的當(dāng)前方向(1=反向,0=正向)
2.手動(dòng)控制軸
AXISx_MAN子例程(手動(dòng)模式)將運(yùn)動(dòng)軸置為手動(dòng)模式。這允許電機(jī)按不同的速度運(yùn)行,或沿正向或負(fù)向慢進(jìn)。在同一時(shí)間僅能啟用RUN、JOG_P或JOG_N輸入之一。
管腳含義:
RUN:1=軸手動(dòng)運(yùn)行(速度和方向分別由Speed和Dir管腳控制)0=停止手動(dòng)控制
JOG_P:1=正轉(zhuǎn)點(diǎn)動(dòng)控制
JOG_N:1=反轉(zhuǎn)點(diǎn)動(dòng)控制
Speed:RUN運(yùn)行時(shí)的目標(biāo)速度,Real型數(shù)據(jù)
Dir:RUN運(yùn)行時(shí)的方向
Error:錯(cuò)誤代碼(字節(jié))
C_Pos:軸當(dāng)前位置(絕對(duì)定位或者相對(duì)定位),工程單位:Real型數(shù)據(jù);相對(duì)脈沖:DINT型數(shù)據(jù)
C_Speed:軸當(dāng)前速度,Real型數(shù)據(jù)
C_Dir:軸的當(dāng)前方向(1=反向,0=正向)
3、查找參考點(diǎn)
走絕對(duì)位置和相對(duì)位置前需要找到真實(shí)的零點(diǎn),絕對(duì)位置和相對(duì)位置才能根據(jù)零點(diǎn)運(yùn)行。
AXISx_RSEEK子程序(搜索參考點(diǎn)位置)使用組態(tài)/曲線表中的搜索方法啟動(dòng)參考點(diǎn)搜索操作。運(yùn)動(dòng)軸找到參考點(diǎn)且運(yùn)動(dòng)停止后,運(yùn)動(dòng)軸將RP_OFFSET參數(shù)值載入當(dāng)前位置。
管腳含義:
START:每接通一個(gè)掃描周期,就執(zhí)行一次查找參考點(diǎn)(參考點(diǎn)查找方式由軸組態(tài)確定)
Done:完成標(biāo)志位
Error:錯(cuò)誤代碼(字節(jié))
4.絕對(duì)或者相對(duì)定位
AXISx_GOTO子程序命令運(yùn)動(dòng)軸轉(zhuǎn)到所需位置。
管腳含義:
START:每接通一個(gè)掃描周期,就執(zhí)行一次定位
Pos:目標(biāo)位置(絕對(duì)定位為坐標(biāo)點(diǎn),相對(duì)定位為兩點(diǎn)間距離),工程單位:Real型數(shù)據(jù);相對(duì)脈沖:DINT型數(shù)據(jù)
Speed:目標(biāo)速度,Real型數(shù)據(jù)
MODE:移動(dòng)模式0:絕對(duì)位置 1:相對(duì)位置 2:?jiǎn)嗡龠B續(xù) 正向旋轉(zhuǎn) 3:?jiǎn)嗡龠B續(xù)反向旋轉(zhuǎn)
Abort:停止正在執(zhí)行的運(yùn)動(dòng)
Done:完成標(biāo)志位
Error:錯(cuò)誤代碼(字節(jié))
C_Pos:軸當(dāng)前位置(絕對(duì)定位或者相對(duì)定位),工程單位:Real型數(shù)據(jù);相對(duì)脈沖:DINT型數(shù)據(jù)
C_Speed:軸當(dāng)前速度,Real型數(shù)據(jù)