編程turn
我說的是這個題解題思路,代碼自己實現
初始車位置(0,0),四個朝向{{1,0},{0,-1},{-1,0},{0,1}};初始方向0,也就是朝向第一個下標
讀取所有輸入後從第一組輸入開始,車(x,y) += 朝向[方向]*時間*速度,實現車移動
判斷指令,1:方向+1,2:方向-1,3:結束;(這里注意方向只能是0,1,2,3超出後修正)
輸出車坐標
㈡ 數控車床指令turntransfer是指什麼
程序段跳轉(就是中間有部分程序不需要執行,直接跳過去)
㈢ 求助:簡單c++編程
//在主程序中創造需要分析的數據數組
//再用自程序完成數據的排序、和、平均值計算
//然後再用自程序完成程序的分析(包括找出出現最頻繁的數均以及出現的次數)
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
void turn(int[],int);
void totle_average(int[],int);
void analyse(int[],int[],int);
int counter=0;
void main()
{
//本程序可以以程序中的給定的數據為計算數值,也可以以隨機生成的數據為計算的數值
const int size=200;
int i;
int a[1000];
int freqence[100]={0};
/*a[size]=
{7,8,1,5,7,6,5,7,5,8,
7,8,2,5,4,6,5,6,7,9,
8,5,5,7,3,9,7,8,9,9,
8,6,5,4,7,1,8,7,4,5,
9,8,7,9,5,6,9,3,8,4,
8,8,7,2,5,9,5,4,7,8,
4,8,3,5,7,9,5,7,8,4,
8,8,1,7,5,4,8,6,7,8,
8,5,2,7,8,9,8,4,5,7,
8,8,3,5,7,6,9,5,4,9};*/
//產生隨機數100個。
for(i=0;i<size;i++)
{
a[i]=(1+rand()%10);
}
cout<<"\n原數據是(未經處理的):"<<endl;
for(i=1;i<size;i++)
{
if(i%10==0)
cout<<endl;
cout<<" "<<a[i-1]<<setw(2);
}
cout<<"\n\n經過分析處理的數據是:"<<endl;
cout<<"安從大到小的順序輸出這"<<size<<"個數據,並且其平均值以及其和是:"<<endl;
turn(a,size);
totle_average(a,size);
//數據分析:出現最平凡的數字以及其出現的次數
cout<<"\n出現最平凡的數字以及其出現的次數是:"<<endl;
analyse(a,freqence,size);
}
void turn(int b[],int size)
{
int i,model;
model=0;
for(int pass=0;pass<size-1;pass++)
for(i=0;i<size-1;i++) //排序
if(b[i]>b[i+1])
{
model=b[i];
b[i]=b[i+1];
b[i+1]=model;
}
cout<<"\nDate in turn is :\n"<<endl;
for(i=1;i<=size;i++)
{
//if(i%10==0)
// cout<<endl;
if(b[i-1]==b[i]) ///一定要注意如果這里是b[i]「=」b[i+1]
///否則運算結果就不會正確!
{
cout<<" "<<b[i]<<setw(2);
}
else
cout<<endl;
}
//計算隨機出現的數中總共有幾種數,用counter作為統計。
for(i=1;i<=size;i++)
if(b[i-1]!=b[i])
{
counter+=1;
}
cout<<"\n共出現過 "<<counter<<" 個數。"<<endl;
}
void totle_average(int b[],int size)
{
cout<<"\n總數以及平均值分別是:"<<endl;
int i,totle;
double average;
totle=0;
average=0;
for(i=0;i<size;i++) /////計算總數
{
totle+=b[i];
}
average=totle/100; ////計算平均值
cout<<"\n這一百個數的總數是:"<<totle<<"\n平均值是:"<<average<<endl;
}
void analyse(int b[],int freq[],int size) ///數據分析自程序
{
int bigest=0,i,value=0;
cout<<"\n ======================================\n \t\tmodle\n ======================================"<<endl;
for(i=0;i<counter;i++) ////初始化
freq[i]=0;
for(int j=0;j<size;j++)
++freq[b[j]]; //數據的統計,如果是2那麼就freq自加,如果是3那麼就freq[3]自加
for (i=0;i<counter;i++)
{
cout<<"\n ----------------------------\n \t\tmodle\n ----------------------------"<<endl;
cout<<freq[i];
}
cout<<setw(5)<<"Response"<<setw(12)<<"freqence"<<setw(12)<<"Histogram\n"<<endl;
for(i=1;i<counter+1;i++)
{
cout<<setw(5)<<i<<setw(12)<<freq[i]<<" ";
if(freq[i]>bigest)
{
bigest=freq[i];
value=i;
}
for(int h=1;h<=freq[i];h++)
cout<<" *";
cout<<endl;
}
cout<<"\n出現頻率最高的數是: "<<value<<"\n出現了"<<bigest<<"次\n\n"<<endl;
}
前邊的輸入輸出我相信你都能搞得定,這部分是後面的關鍵部分,包括統計等,這個程序使用的是0~100的隨機數,靠你的智商來完成你需要的工作嘍。
㈣ 西門子數控車床怎麼編程
西門子數控系統編程:
1.用半徑和終點進行圓弧編程
圓弧運動通過以下幾點來描述:
• 圓弧半徑 CR= 和
• 在直角坐標 X,Y,Z中的終點
除了圓弧半徑,您還必須用符號+/-表示運行角度是否應該大於或者小於180°。正符可以不註明。
識別符表示:
CR=+…:角度小於或者等於 180°
CR=–…:角度大於 180°
舉例:
N10 G0X67.5 Y80.211
N20 G3X17.203 Y38.029 CR=34.913 F500
在這種處理方式下您不一定要給出中點。整圓(運行角度 360°)不能用CR=來編程,而是通過圓弧終點和插補參數來編程。
2.用圓弧角和圓心或者終點進行圓弧編程
圓弧運動通過以下幾點來描述:
• 圓弧角 AR= 和
• 在直角坐標 X,Y,Z中的終點或者
• 地址 I,J,K上的圓弧中點
分別表示:
AR=:圓弧角,取值范圍 0° 至 360°
I,J,K的意義參見前面幾頁。
整圓(運行角度 360°)不能用 AR=來編程,而是通過圓弧終點和插補參數來編程。
舉例:
N10 G0X67.5 Y80.211
N20 G3X17.203 Y38.029 AR=140.134 F500
或者
N20 G3I–17.5 J–30.211 AR=140.134 F500
3.用極坐標進行圓弧編程
圓弧運動通過以下幾點來描述:
• 極角 AP=
• 和極半徑 RP=
在這種情況下,適用以下規定:
極點在圓心。
極半徑和圓弧半徑相符。
舉例:
N10 G0X67.5 Y80.211
N20 G111X50 Y50
N30 G3RP=34.913 AP=200.052 F500
編程舉例
以下程序是圓弧編程舉例。必需的尺寸在右邊的加工圖紙中。
N10 G0 G91 X133 Y44.48 S800 M3 回到起始點
N20 G17 G1 Z-5 F1000 刀具橫向進給
N30 G2X115 Y113.3 I-43 J25.52 用增量尺寸表示的圓弧終點,圓心
或者
N30 G2X115 Y113.3 I=AC(90) J=AC(70) 用絕對尺寸表示的圓弧終點,圓心
或者
N30 G2X115 Y113.3 CR=-50 圓弧終點,圓弧半徑
或者
N30 G2AR=269.31 I-43 J25.52 用增量尺寸表示的圓弧角,中心點
或者
N30 G2AR=269.31 X115 Y113.3 圓弧角,圓弧終點
N40 M30 程序結束
5、螺旋線插補G2/G3TURN
編程:
G2/G3 X… Y… Z… I… J… K… TURN=
G2/G3 X… Y… Z… I… J… K… TURN=
G2/G3 AR=… I… J… K… TURN=
G2/G3 AR=… X… Y… Z… TURN=
G2/G3 AP… RP=… TURN=
指令和參數說明
G2 沿圓弧軌跡順時針方向運行
G3 沿圓弧軌跡逆時針方向運行
X Y Z 直角坐標的終點
I J K 直角坐標的圓心
AR 圓弧角
TURN= 附加圓弧運行次數的范圍從 0至 999
AP= 極角
RP= 極半徑
功能
螺旋線插補可以用來加工如螺紋或油槽 (延遲線插補)。
操作順序
在螺旋線插補時,兩個運動是疊加的並且並列執行。
• 水平圓弧運動
• 垂直直線運動
圓弧運動在工作平面確定的軸上進行。
舉例:工作平面 G17,針對圓弧插補的軸 X和 Y。
然後在垂直的橫向進給軸上進行橫向進給運動,這里是 Z軸。
運動順序
1. 回到起始點
2. 執行用TURN= 編程的整圓
3. 回到圓弧終點,例如:作為部分旋轉
4. 執行第2,3步穿過進刀深度
加工螺旋線所需的螺距 = 整圓數 + 編程的終點 -穿過的進刀深度。
編程舉例
螺旋線插補
N10 G17 G0 X27.5 Y32.99 Z3 回到起始位置
N20 G1 Z-5 F50 刀具橫向進給
N30 G3X20 Y5 Z-20 I=AC(20) J=AC (20) TURN=2 帶以下參數的螺旋線:從起始位置執行兩個整圓,然後回到終點
N40 M30 程序結束
㈤ 單片機c語言編程錯誤求解決,怎麼改 float AD_turn(uchar i) *** 要改成沒有錯誤的答案
#include"reg51.h"
#include"absacc.h"
#include"intrins.h"
#include"math.h"
#include"string.h"
#defineuintunsignedint
#defineucharunsignedchar
#definemenxian3.2
#definemenxian24.5
ucharZKB1=0;
ucharclick;
ucharcontrolflag=0;
uchark;
ucharn=5;
ucharshe=0;
ucharflagAD=0;
ucharflagSY=0;
uintcount=0;
uintNum;
sbitTlc549_Clk=P1^0;
sbitTlc549_Data=P1^1;
sbitTlc549_Cs=P1^2;
sbitLED=P2^0;
sbitkz=P3^2;
sbitpwm=P2^1;
ucharTlc549(void)//AD549採集電壓
{
uchari;
uintTT=0;
Tlc549_Cs=0;
for(i=0;i<8;i++)//這兒多個{
{
Tlc549_Clk=1;
TT=TT<<1;
if(Tlc549_Data==1)
TT=TT+1;
Tlc549_Clk=0;
}
Tlc549_Cs=1;
Num=TT;
returnNum;
}
floatAD_turn(uchari)
{
floatff;
ff=5.0/255*i;
returnff;
}
//這兒多個}
voidTimer_init(void)
{
TMOD=0x01;
TH0=0xFF;
TL0=0x06;//賦初值
EA=1;
ET0=1;
EX0=1;
IT0=1;
LED=0;
}
voidmain()
{
floatbian;
Timer_init();
while(1)
{
k=Tlc549();//讀取AD採集的光照感測器的數值
bian=AD_turn(k);//讀取AD採集的光照感測器的數值轉換成電壓
if(bian>menxian)//電壓值高於門限
{
flagAD=1;//光照低於一定的值,黑天
}
else
{
flagAD=0;//白天
}
if(flagAD&&flagSY)//黑天且有聲音
{
TH0=0xFF;
TL0=0x06;
TR0=1;
LED=1;//打開LED燈
count=0;
flagSY=0;
EX0=0;
controlflag=1;
}
if(bian>menxian2)//pwm////////////////////////////////
{
ZKB1=50;
}
else
{
ZKB1=140-bian*20;//255檔歸為100級,及占空比100%可調
}
}
}
voidTimer_inter(void)interrupt1
{
count++;
if(controlflag==1)
{
if(count>60000)
{
count=0;
LED=0;
EX0=1;
controlflag=0;
}
}
TH0=0xFF;
TL0=0x06;//定時250us
TR0=1;
++click;
if(click>100)click=0;//靠這個定時計數來實現PWM控制周期
if(click<ZKB1)/*當小於占空比值時輸出低電平,高於時是高電平,從而實現占空比的調整*/
{
pwm=0;
}
else
{
pwm=1;
}
}////////////////////////////////////////////////////////////////////////
voidExtra_inter(void)interrupt0
{
if(kz==1)
{
flagSY=1;
}
else
{
flagSY=0;
}
}
㈥ 西門子turn的用法
西門子PLC中SM是特殊標志繼電器。
特殊標志繼電器用「SM」表示,特殊標志繼電器區根據功能和性質不同具有位、位元組、字和雙字操作方式。其中SMB0、SMB1為系統狀態字,只能讀取其中的狀態數據,不能改寫,可以位定址。系統狀態字中部分常用的標志位說明如下:
SM0.0:始終接通;
SM0.1:首次掃描為1,以後為0,常用來對程序進行初始化;
SM0.2:當機器執行數學運算的結果為負時,該位被置1;
SM0.3:開機後進入RUN方式,該位被置1一個掃描周期;
SM0.4:該位提供一個周期為1分鍾的時鍾脈沖,30秒為1,30秒為0;
SM0.5:該位提供一個周期為1秒鍾的時鍾脈沖,0.5秒為1,0.5秒為0;
SM0.6:該位為掃描時鍾脈沖,本次掃描為1,下次掃描為0;
㈦ 西門子數控編程指令代碼含義
1、准備功能(G指令)
2、 GOO快速定位(模態指令)
3、 G01直線插補(模態指令)
4、G02/G03圓弧插補(模態指令)
5、G02/G03 TURN螺旋線插補
6、G04暫停時間(非模態指令)
7、G17、G18、G19平面選擇(模態指令)
8、G40、G41、G42刀具半徑補償功能(模態指令)
9、 G33恆螺距螺紋切削(模態指令)
10、G53、G153、SUPA(非模態)、(3-500(模態指令)
11、G54、G65、G56、G57工件坐標系(模態指令)
12、G09(非模態指令)、G60(模態指令)准確停止
13、 G63攻螺紋方式(非模態指令)
14、G64/G641連續切削加工方式(模態指令)
15、 G70/G7l/G700/G7lO公制/英制編程單位選擇(模態指令)
16、G74自動返回到參考點(非模態指令)
㈧ 編程,大小寫轉換
import java.util.Scanner;
/**
* 大小寫轉換
*
*/
public class Turn {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入字元串,回車結束!");
String scanStr = scanner.nextLine();
System.out.println("您輸入的字元串為:"+scanStr);
System.out.println("字元串轉換中……");
System.out.print("轉換後的字元為:");
turn(scanStr);//轉換函數
}
/**
* 轉換函數
* @param scanStr
*/
private static void turn(String scanStr) {
for (int i = 0; i < scanStr.length(); i++) {
if((scanStr.charAt(i)+"").matches("[a-z]")){
lowerTOupper(scanStr.charAt(i));//如果是小寫,則執行小寫轉大寫函數
}else if((scanStr.charAt(i)+"").matches("[A-Z]")){
upperTOlower(scanStr.charAt(i));//如果是小寫,則執行小寫轉大寫函數
}else{
System.out.print(scanStr.charAt(i));//直接列印當前字元
}
}
}
/**
* 大寫轉小寫
* @param charAt
*/
private static void upperTOlower(char charAt) {
System.out.print((char)(charAt+32));
}
/**
* 小寫轉大寫
* @param charAt
*/
private static void lowerTOupper(char charAt) {
System.out.print((char)(charAt-32));
}
}
這是所有的代碼 用java寫的,已經測試過了
㈨ 西門子840D系統TURN挑螺紋程序怎麼編程轉速進給怎麼求值
《西門子840d數控編程實例加強版》工廠實際加工案例,來自一線的經典教材學數控必備,每個加工步驟都配有詳細的解釋,自學編程的好材料,例題後面都配有課後習題,依據實際加工為基礎作者精心雕琢,循序漸進