worker02
級(jí)別: 略有小成
![]() |
圖片:
![]() 實(shí)例為 6臺(tái)穿梭小車(穿梭車臺(tái)數(shù)可以實(shí)際情況增減),其中5臺(tái)設(shè)為目標(biāo),一臺(tái)為本地穿梭車。功能塊有分別輸出有:警告啟動(dòng)、減速啟動(dòng)、停車啟動(dòng)、兩車間隙值等。 源代碼如下: FUNCTION_BLOCK FB1026 VAR_INPUT CarData1:DINT;//目標(biāo)穿梭車1位置值 CarData2:DINT;//目標(biāo)穿梭車2位置值 CarData3:DINT;//目標(biāo)穿梭車3位置值 CarData4:DINT;//目標(biāo)穿梭車4位置值 CarData5:DINT;//目標(biāo)穿梭車5位置值 CarLocaL:DINT;//本地穿梭車位置值 Warning_JL1:DINT;//警告距離1設(shè)定 Warning_JL2:DINT;//警告距離2設(shè)定 Decelerate_JL1:DINT;//減速距離1設(shè)定 Decelerate_JL2:DINT;//減速距離2設(shè)定 StopCar_JL1:DINT;//停車距離1設(shè)定 StopCar_JL2:DINT;//停車距離2設(shè)定 END_VAR VAR I:INT; InData:ARRAY[1..5] OF DINT; END_VAR VAR_OUTPUT Out_Warning:BOOL;//警告啟動(dòng) Out_Decelerate:BOOL;//減速啟動(dòng) Out_Stop:BOOL;//停車啟動(dòng) D_Value:DINT;//兩車之間值 END_VAR; InData[1]:=CarData1; InData[2]:=CarData2; InData[3]:=CarData3; InData[4]:=CarData4; InData[5]:=CarData5; FOR I:= 1 TO 5 BY 1 DO IF (InData[I]>0)AND(((CarLocaL-InData[I]<0)AND(CarLocaL-InData[I]>=Warning_JL1))OR( CarLocaL-InData[I]>=Warning_JL2))THEN//判定是否已到警告距離 Out_Warning:=1;//警告啟動(dòng) D_Value:=CarLocaL-InData[I]; ELSE Out_Warning:=0; Out_decelerate:=0; Out_Stop:=0; D_Value:=0; END_IF; IF OUT_Warning THEN IF ((CarLocaL-InData[I]<0)AND(CarLocaL-InData[I]>=Decelerate_JL1))OR( CarLocaL-InData[I]>=Decelerate_JL2)THEN//判定是否已到減速距離 Out_decelerate:=1;//減速啟動(dòng) ELSE Out_decelerate:=0; END_IF; IF((CarLocaL-InData[I]<0)AND(CarLocaL-InData[I]>=StopCar_JL1))OR( CarLocaL-InData[I]>=StopCar_JL2)THEN//判定是否已到停車距離 Out_Stop:=1;//停車啟動(dòng) ELSE Out_Stop:=0; END_IF; EXIT; END_IF; END_FOR; END_FUNCTION_BLOCK |
---|---|
|
ranbin
學(xué)無(wú)止境!
級(jí)別: 略有小成
![]() |
路過(guò)看看,坐坐沙發(fā)!既然寫(xiě)最好把相關(guān)工藝流程一并寫(xiě)來(lái)。 |
---|---|
|
ranbin
學(xué)無(wú)止境!
級(jí)別: 略有小成
![]() |
沙發(fā)坐空了! ![]() FUNCTION_BLOCK FB1026 VAR_INPUT CarData1:DINT;//目標(biāo)穿梭車1位置值 CarData2:DINT;//目標(biāo)穿梭車2位置值 CarData3:DINT;//目標(biāo)穿梭車3位置值 CarData4:DINT;//目標(biāo)穿梭車4位置值 CarData5:DINT;//目標(biāo)穿梭車5位置值 CarLocaL:DINT;//本地穿梭車位置值 Warning_JL1:DINT;//警告距離1設(shè)定 Warning_JL2:DINT;//警告距離2設(shè)定 Decelerate_JL1:DINT;//減速距離1設(shè)定 Decelerate_JL2:DINT;//減速距離2設(shè)定 StopCar_JL1:DINT;//停車距離1設(shè)定 StopCar_JL2:DINT;//停車距離2設(shè)定 END_VAR VAR I:INT; InData:ARRAY[1..5] OF DINT; END_VAR VAR_OUTPUT Out_Warning:BOOL;//警告啟動(dòng) Out_Decelerate:BOOL;//減速啟動(dòng) Out_Stop:BOOL;//停車啟動(dòng) D_Value:DINT;//兩車之間值 END_VAR; InData[1]:=CarData1; InData[2]:=CarData2; InData[3]:=CarData3; InData[4]:=CarData4; InData[5]:=CarData5; FOR I:= 1 TO 5 BY 1 DO IF (InData[I]>0) AND(((CarLocaL-InData[I]<0) AND(CarLocaL-InData[I]>=Warning_JL1)) OR( CarLocaL-InData[I]>=Warning_JL2))THEN//判定是否已到警告距離 Out_Warning:=1;//警告啟動(dòng) D_Value:=CarLocaL-InData[I]; ELSE Out_Warning:=0; Out_decelerate:=0; Out_Stop:=0; D_Value:=0; END_IF; IF OUT_Warning THEN IF ((CarLocaL-InData[I]<0) AND(CarLocaL-InData[I]>=Decelerate_JL1)) OR( CarLocaL-InData[I]>=Decelerate_JL2)THEN//判定是否已到減速距離 Out_decelerate:=1;//減速啟動(dòng) ELSE Out_decelerate:=0; END_IF; IF((CarLocaL-InData[I]<0) AND(CarLocaL-InData[I]>=StopCar_JL1)) OR( CarLocaL-InData[I]>=StopCar_JL2)THEN//判定是否已到停車距離 Out_Stop:=1;//停車啟動(dòng) ELSE Out_Stop:=0; END_IF; EXIT; END_IF; END_FOR; END_FUNCTION_BLOCK 這樣看起來(lái)舒服些------- |
---|---|
|
1336547704
級(jí)別: 略有小成
![]() |
警告距離1設(shè)定和警告2設(shè)定對(duì)的區(qū)別是什么呀 |
---|---|
|
worker02
級(jí)別: 略有小成
![]() |
圖片:
![]() 5樓的朋友你看看這張圖就應(yīng)該明的為何都要設(shè)定2種距離了。 |
---|---|
|
shanyao0028
專業(yè)電鍍編程
級(jí)別: 略有小成
![]() |
雖然看不懂西門(mén)子的,還是很牛啊。三菱能實(shí)現(xiàn)不?對(duì)我們很有用啊,一直想研究這方面的,如果可以的話,可以合作! |
|
---|---|---|
|
wangnaizhi
級(jí)別: 論壇先鋒
![]() |
能講一下工藝嗎 是不是穿梭車在另外5輛車運(yùn)動(dòng)的過(guò)程中穿梭? |
---|---|
|