第一篇:網(wǎng)絡(luò)編程實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)一 TCP Socket API程序設(shè)計(jì)
一、預(yù)備知識(shí)
1.網(wǎng)絡(luò)編程基本概念
網(wǎng)絡(luò)上的計(jì)算機(jī)間的通訊,實(shí)質(zhì)上是網(wǎng)絡(luò)中不同主機(jī)上的程序之間的通訊。在互聯(lián)網(wǎng)中使用IP地址來標(biāo)識(shí)不同的主機(jī),在網(wǎng)絡(luò)協(xié)議中使用端口號(hào)來標(biāo)識(shí)主機(jī)上不同進(jìn)程,即使用(IP地址,端口號(hào))二元組。
套接字(Socket)用于描述IP地址和端口,是一個(gè)通信鏈的句柄,通信時(shí)一個(gè)網(wǎng)絡(luò)程序?qū)⒁獋鬏數(shù)囊欢涡畔懭胨谥鳈C(jī)的Socket中,該Socket通過與網(wǎng)絡(luò)接口卡相連的傳輸介質(zhì)將這段信息發(fā)送到另一臺(tái)主機(jī)的Socket中,以供其他程序使用。
圖1-1 TCP通信流程 2.TCP通信流程
TCP程序是面向連接的,程序運(yùn)行后,服務(wù)器一直處于監(jiān)聽狀態(tài),客戶端與服務(wù)器通信之前必須首先發(fā)起連接請(qǐng)求,由服務(wù)器接收請(qǐng)求并在雙方之間建立連接后才可以互相通信。
二、實(shí)驗(yàn)?zāi)康?/p>
1.了解Winsock API編程原理; 2.掌握TCP Socket程序的編寫; 3.了解C/S模式的特點(diǎn); 4.學(xué)會(huì)解決實(shí)驗(yàn)中遇到的問題。
三、實(shí)驗(yàn)任務(wù)
使用Winsock API相關(guān)類實(shí)現(xiàn)TCP Socket通信程序,并能成功運(yùn)行。
四、實(shí)驗(yàn)環(huán)境及工具
1.Windows2000/XP/7 2.Visual C++開發(fā)平臺(tái) 3.Visual Studio2010
五、實(shí)驗(yàn)內(nèi)容和步驟
參照《Visual C++網(wǎng)絡(luò)編程教程》書中81頁,TCP Socket API程序設(shè)計(jì)。連接:
void CChatClientDlg::OnConnect(){
WSADATA wsd;
//WSADATA結(jié)構(gòu)
WSAStartup(MAKEWORD(2,2),&wsd);
//加載協(xié)議,使用Winsock 2.2版
m_client = socket(AF_INET,SOCK_STREAM,0);//創(chuàng)建流式套接字
//服務(wù)器地址
sockaddr_in serveraddr;
UpdateData();
if(ServerIP.IsBlank())
{
AfxMessageBox(“請(qǐng)指定服務(wù)器IP!”);
return;
}
if(sPort.IsEmpty())
{
AfxMessageBox(“請(qǐng)指定端口!”);
return;
}
//獲取服務(wù)器進(jìn)程的IP和端口
BYTE nFild[4];
CString sIP;
ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);
sIP.Format(“%d.%d.%d.%d”,nFild[0],nFild[1],nFild[2],nFild[3]);
//設(shè)置服務(wù)器地址結(jié)構(gòu)的內(nèi)容
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.S_un.S_addr = inet_addr(sIP);
serveraddr.sin_port = htons(atoi(sPort));
//發(fā)起連接須指明要訪問的服務(wù)器進(jìn)程地址,這個(gè)地址存儲(chǔ)在serveraddr中
if(connect(m_client,(sockaddr*)&serveraddr,sizeof(serveraddr))!= 0)
{
MessageBox(“連接失敗”);
return;
}
else
{
m_ListWords.AddString(“連接服務(wù)器成功!”);
m_ListWords.SetTopIndex(m_ListWords.GetCount()1);
ServerIP.EnableWindow();
ServerPort.EnableWindow();
m_ButtonConnect.EnableWindow();
m_ButtonDisconnect.EnableWindow(false);
m_EditWords.EnableWindow(false);
m_ButtonSend.EnableWindow(false);
m_ButtonExit.EnableWindow();}
“發(fā)送”按鈕事件過程代碼如下:
void CChatClientDlg::OnSend(){
//向服務(wù)器發(fā)送信息
UpdateData();
if(m_sWords.IsEmpty())
{
AfxMessageBox(“發(fā)送的消息不能為空!”);
return;
}
//開始發(fā)送數(shù)據(jù)
int i = send(m_client,m_sWords.GetBuffer(0),m_sWords.GetLength(),0);
m_ListWords.AddString(“發(fā)送:” + m_sWords);
m_ListWords.SetTopIndex(m_ListWords.GetCount()1);
closesocket(m_client);
ServerIP.EnableWindow();
ServerPort.EnableWindow();
m_ButtonConnect.EnableWindow();
m_ButtonDisconnect.EnableWindow(false);
m_EditWords.EnableWindow(false);
m_ButtonSend.EnableWindow(false);
m_ButtonExit.EnableWindow();} “清空”按鈕的事件過程: m_ListWords.ResetContent();“關(guān)于”按鈕的事件過程: CAboutDlg dlgAbout;dlgAbout.DoModal();
服務(wù)器端: 開始監(jiān)聽代碼:
void CChatServerDlg::OnListen(){
WSADATA wsd;
//WSADATA結(jié)構(gòu)
WSAStartup(MAKEWORD(2,2),&wsd);
//加載協(xié)議棧,使用Winsock 2.2版
m_server = socket(AF_INET,SOCK_STREAM,0);//創(chuàng)建流式套接字
//將網(wǎng)絡(luò)中的事件關(guān)聯(lián)到窗口的消息函數(shù)中,定義消息號(hào)為20000,偵測(cè)客戶端的連接請(qǐng)求
WSAAsyncSelect(m_server,m_hWnd,20000,FD_ACCEPT);
m_client = 0;
BYTE nFild[4];
CString sIP;
UpdateData();
if(ServerIP.IsBlank())
{
AfxMessageBox(“請(qǐng)?jiān)O(shè)置IP地址!”);
return;
}
if(sPort.IsEmpty())
{
AfxMessageBox(“請(qǐng)?jiān)O(shè)置監(jiān)聽端口!”);
return;
}
ServerIP.GetAddress(nFild[0],nFild[1],nFild[2],nFild[3]);
sIP.Format(“%d.%d.%d.%d”,nFild[0],nFild[1],nFild[2],nFild[3]);
//服務(wù)器地址
sockaddr_in serveraddr;
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.S_un.S_addr = inet_addr(sIP);
serveraddr.sin_port = htons(atoi(sPort));
//綁定地址
if(bind(m_server,(sockaddr*)&serveraddr,sizeof(serveraddr)))
{
MessageBox(“綁定地址失敗.”);
return;
}
//監(jiān)聽開始,服務(wù)器等待連接請(qǐng)求的到來
listen(m_server,5);
m_ListWords.AddString(“監(jiān)聽開始:”);
m_ListWords.AddString(“地址” + sIP + “ 端口” + sPort);
m_ListWords.AddString(“等待客戶端連接??”);
//界面完善
m_ListWords.SetTopIndex(m_ListWords.GetCount()-1);
ServerIP.EnableWindow(false);
ServerPort.EnableWindow(false);
m_ButtonListen.EnableWindow(false);
m_ButtonStopListen.EnableWindow();
m_ButtonClear.EnableWindow();
m_ButtonExit.EnableWindow(false);} “停止監(jiān)聽”按鈕事件過程代碼如下: void CChatServerDlg::OnStopListen(){
//停止監(jiān)聽
closesocket(m_server);
m_ListWords.AddString(“停止監(jiān)聽”);
m_ListWords.SetTopIndex(m_ListWords.GetCount()1);} “斷開”按鈕事件過程代碼如下: void CChatServerDlg::OnDisconnect(){
closesocket(m_client);
m_ListWords.AddString(“與客戶端斷開”);
m_ListWords.SetTopIndex(m_ListWords.GetCount()1);
//界面完善
m_ButtonDisconnect.EnableWindow();
m_EditWords.EnableWindow();
m_ButtonSend.EnableWindow();} ReceiveData()函數(shù)代碼如下:
void CChatServerDlg::ReceiveData(){
//接收客戶端的數(shù)據(jù)
char buffer[1024];
int num = recv(m_client,buffer,1024,0);
buffer[num] = 0;
CString sTemp;
sTemp.Format(“收到:%s”,buffer);
m_ListWords.AddString(sTemp);//顯示信息
m_ListWords.SetTopIndex(m_ListWords.GetCount()1);
closesocket(m_client);//關(guān)閉與客戶端通信的Socket
WSAAsyncSelect(m_server,m_hWnd,20000,FD_ACCEPT);//準(zhǔn)備接收新的客戶端連接
//界面完善
m_ButtonDisconnect.EnableWindow(false);
m_EditWords.EnableWindow(false);
m_ButtonSend.EnableWindow(false);} 服務(wù)器的初始化代碼如下: //界面初始化
m_ButtonStopListen.EnableWindow(false);m_ButtonDisconnect.EnableWindow(false);m_ButtonClear.EnableWindow(false);m_EditWords.EnableWindow(false);m_ButtonSend.EnableWindow(false);
運(yùn)行結(jié)果:
六、思考題
1.用Winsock API編程時(shí),主要進(jìn)行哪些通行的操作步驟? 2.闡述C/S模式的通信過程。答:
1.通行的操作
1.Winsock的打開(WSAStartup())。2.建立套接字(socket()或WSASocket())。3.地址綁定(bind())。
4.服務(wù)器監(jiān)聽連接(listen())。
5.客戶端提出連接申請(qǐng)(connect()或WSAConnect())。6.服務(wù)器接收客戶端的連接請(qǐng)求(accept()或WSAAccept())。7.數(shù)據(jù)的發(fā)送(send()或WSASend(),sendto()或WSASendTo())。8.數(shù)據(jù)的接收(recv()或WSARecv(),recvfrom()或WSARecvfrom())。9.關(guān)閉套接字(closesocket())。10.關(guān)閉Winsock(WSACleanup())。
2通信過程
第二篇:嵌入式串口和網(wǎng)絡(luò)編程實(shí)驗(yàn)報(bào)告
嵌入式實(shí)驗(yàn)報(bào)告
題目:linux
串口和網(wǎng)絡(luò)編程
一、實(shí)驗(yàn)?zāi)康模?/p>
1、強(qiáng)化本學(xué)期所學(xué)的相關(guān)的內(nèi)容。
2、掌握串口相關(guān)設(shè)置。
3、強(qiáng)化基于TCP網(wǎng)絡(luò)傳輸?shù)娜挝帐帧?/p>
4、自學(xué)Linux線程的使用。
二、實(shí)驗(yàn)內(nèi)容:
本試驗(yàn)基于server和client的透明傳輸來實(shí)現(xiàn)類似于QQ的聊天功能。
三、實(shí)驗(yàn)過程:
1、linux開發(fā)環(huán)境的建立
2、嵌入式linux系統(tǒng)的搭建
1>BootLoader的移植
2>linux系統(tǒng)的裁剪與移植 Linux內(nèi)核裁剪
./make_image生成自己的uImage2638
上電驗(yàn)證:
3>根文件系統(tǒng)的移植 修改hostname為:whmtt
./mkcramfsdisk_new 生成rootfs_new.cramfs
大小從老師給的40000到37b00(因?yàn)橛械臎]有用到,大小變小了):
上電驗(yàn)證:
3、客服端編程client.c 相關(guān)代碼: #include
#define SERVER_PORT 20000 //設(shè)置服務(wù)端口
#define CLIENT_PORT((20001+rand())%65536)//設(shè)置客戶端端口(隨機(jī))#define BUFFER_SIZE 256 #define LENGTH_OF_LISTEN_QUEUE 10 //可竊聽隊(duì)列長(zhǎng)為10 #define WELCOME_MESSAGE “welcome to connect the server.”
void usage(char* name){ printf(“usage: %s IpAddrn ” ,name);}
struct sockaddr_in servaddr,cliaddr;int servfd,clifd,length=0;struct sockaddr_in servaddr,cliaddr;socklen_t socklen=sizeof(servaddr);char buf[BUFFER_SIZE],buf2[BUFFER_SIZE];pthread_t tidp,tidp2;int pth;int runflag=0;
void *Thread1(void *arg)/*等待runflag為1,當(dāng)為1時(shí)清空buf,同時(shí)接收來自server的數(shù)據(jù)并輸出。
但當(dāng)沒有清空,則break.*/ { while(runflag){
memset(buf,0,BUFFER_SIZE);
length=recv(clifd,buf,BUFFER_SIZE,0);
if(strstr(buf,“$”)>0){runflag=0;printf(“stop!n”);break;}
if(length>0)printf(“from server:%s”,buf);
} }
void *Thread2(void *arg)/*等待發(fā)送數(shù)據(jù)給Server*/ { printf(“Please input your words to Server:--$ to stopn”);while(runflag){
memset(buf2,0,BUFFER_SIZE);
scanf(“%s”,buf2);
send(clifd,buf2,strlen(buf2),0);
if(strstr(buf2,“$”)>0){runflag=0;printf(“stop!n”);break;}
} }
int main(int argc, char** argv){ if(argc < 2){
usage(argv[0]);
exit(1);} if((clifd = socket(AF_INET,SOCK_STREAM,0))< 0)//用tcp定義socket {
printf(“ create socket error!n ”);
exit(1);}
srand(time(NULL));// initialize random generator
bzero(& cliaddr, sizeof(cliaddr));cliaddr.sin_family = AF_INET;cliaddr.sin_port = htons(CLIENT_PORT);cliaddr.sin_addr.s_addr = htons(INADDR_ANY);
if(bind(clifd,(struct sockaddr*)&cliaddr,sizeof(cliaddr))< 0){
printf(“bind to port %d failure!n ” ,CLIENT_PORT);
exit(1);}//綁定的目的是讓其端口是隨機(jī)的,否則端口是自增1 //一般情況下client端不用綁定
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;inet_aton(argv[1], &servaddr.sin_addr);servaddr.sin_port = htons(SERVER_PORT);
if(connect(clifd,(struct sockaddr *)&servaddr, socklen)< 0){
printf(“can't connect to %s!n”, argv[1]);
exit(1);}
runflag=1;
pth=pthread_create(&tidp,NULL,Thread1,NULL);
if(pth!=0){printf(“error!”);return-1;}
pth=pthread_create(&tidp2,NULL,Thread2,NULL);
if(pth!=0){printf(“error!”);return-1;}
pthread_detach(tidp);
pthread_detach(tidp2);
while(runflag){;}
close(clifd);
return 0;}
4、服務(wù)端server.c編寫
相關(guān)代碼: #include #define COM0 0 #define BLOCK_MODE 1 #define NONBLK_MODE 0 #define SERVER_PORT 20000 #define LENGTH_OF_LISTEN_QUEUE 10 #define QUEUE 20 #define BUFFER_SIZE 256 #define WELCOME_MESSAGE “welcome to connect the server.” static struct termios g_newtio,g_oldtio; static int speed_arr[] = { B115200, B57600, B38400, B19200, B9600, B4800, B2400, B1200, B300, B115200, B57600, B38400, B19200, B9600, B4800, B2400, B1200, B300, }; static int name_arr[] = { 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200, 300, 115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200, 300, }; int Init_COM(int Comm,int Baudrate,int Parity,int Stopbit,int Flagblock){ int ret,i;char dev_buf[16]; if(Comm > 3){ printf(“Com%d not existn”,Comm); return-1;} memset(dev_buf,0x00,sizeof(dev_buf));sprintf(dev_buf,“/dev/ttyS%d”,Comm); if(Flagblock){ ret = open(dev_buf, O_RDWR | O_NOCTTY);//以默認(rèn)阻塞方式打開 } else { ret = open(dev_buf, O_RDWR | O_NOCTTY | O_NONBLOCK);//以非阻塞方式打開 } if(ret < 0){ printf(“Open ttyS%d failedn”,Comm); return-1; } if(tcgetattr(ret, &g_oldtio)< 0)//保存原先的端口 { printf(“Get Com Parameter Error.n”); return-1;} for(i= 0;i < sizeof(speed_arr)/ sizeof(int);i++){ if(Baudrate == name_arr[i]) { cfsetispeed(&g_newtio,speed_arr[i]);/*設(shè)置輸入輸出波特率*/ cfsetospeed(&g_newtio,speed_arr[i]); break; } } if(i>=sizeof(speed_arr)/ sizeof(int)){ printf(“Unsupported Speed!n”); return-1;} switch(Parity){ case 'n': case 'N': g_newtio.c_cflag &= ~PARODD; g_newtio.c_cflag &= ~PARENB; break; case 'o': case 'O': g_newtio.c_cflag |= PARENB; g_newtio.c_cflag |= PARODD;//奇校驗(yàn) break; case 'e': case 'E': g_newtio.c_cflag |= PARENB;//偶校驗(yàn) g_newtio.c_cflag &= ~PARODD; break; default: printf(“Unsupported Parityn”); return-1;} switch(Stopbit)//設(shè)置停止校驗(yàn)位是為2,否為1.{ case 1: g_newtio.c_cflag &= ~CSTOPB; break; case 2: g_newtio.c_cflag |= CSTOPB; break; default: printf(“Unsupported Stopbit!n”); return-1;} g_newtio.c_iflag = 0;g_newtio.c_oflag = 0;g_newtio.c_lflag = 0; g_newtio.c_cc[VTIME] = 1;//最大等待時(shí)間為1*100ms g_newtio.c_cc[VMIN] = 1;//最小讀數(shù)為1 g_newtio.c_iflag &= ~INPCK;g_newtio.c_cflag &= ~CRTSCTS;g_newtio.c_cflag &= ~CSIZE;//設(shè)置數(shù)據(jù)位 g_newtio.c_cflag |= CS8;// g_newtio.c_cflag |= CLOCAL;g_newtio.c_cflag |= CREAD; if(tcsetattr(ret, TCSANOW, &g_newtio)!= 0)//激活設(shè)置 { printf(“Set Com Parameter Error!n”); return-1;} tcflush(ret, TCIOFLUSH);//刷新輸入輸出緩存 return ret;} //以上為套接字的相關(guān)定義 //一下類似與client一樣設(shè)置數(shù)據(jù)接收和發(fā)送。 void RestoreComConfiguration(int fd,struct termios *ptios){ if(tcsetattr(fd, TCSANOW, ptios)!= 0){ printf(“Restore Com Parameter Error!n”);} } int fd;char buf[1024],buf2[1024];int servfd,clifd; struct sockaddr_in servaddr,cliaddr;int runflag=0; void *Thread1(void *arg){ printf(“Please input your words to Server:--$ to stopn”);while(runflag){ memset(buf,0,BUFFER_SIZE); read(fd,buf,1024); send(clifd,buf,strlen(buf),0); if(strstr(buf,“$”)>0){runflag=0;printf(“stop!n”);break;} } } void *Thread2(void *arg){ int length=0;while(runflag){char stdstr[1024]=“from client:”; memset(buf2,0,BUFFER_SIZE); length=recv(clifd,buf2,1024,0);if(length>0){ strcat(stdstr,buf2);strcat(stdstr,“n”); if(strstr(buf2,“$”)>0) {runflag=0;printf(“stop!n”);break;} write(fd,stdstr,strlen(stdstr)); } } } void socket_init(void){ if((servfd=socket(AF_INET,SOCK_STREAM,0))<0){printf(“create socket error!n”);exit(1);} bzero(&servaddr,sizeof(servaddr));servaddr.sin_family=AF_INET;servaddr.sin_port=htons(SERVER_PORT);servaddr.sin_addr.s_addr=htons(INADDR_ANY);if(bind(servfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0){printf(“bind to port %d failure!n”,SERVER_PORT);exit(1);} if(listen(servfd,QUEUE)<0){printf(“call listen failure!n”);exit(1);} socklen_t length=sizeof(cliaddr);clifd=accept(servfd,(struct sockaddr*)&cliaddr,&length);if(clifd<0){ printf(“error comes when call accept!n”);exit(1);} } int main(int argc,char *argv[]){ fd = Init_COM(COM0,115200,'N',1,BLOCK_MODE);socket_init();pthread_t tidp,tidp2;int pth;if(fd >= 0)RestoreComConfiguration(fd,&g_oldtio); runflag=1; pth=pthread_create(&tidp,NULL,Thread1,NULL); if(pth!=0){printf(“error!”);return-1;} pth=pthread_create(&tidp2,NULL,Thread2,NULL); if(pth!=0){printf(“error!”);return-1;} pthread_detach(tidp); pthread_detach(tidp2); while(runflag){;} close(clifd);close(fd);close(servfd);//全部關(guān)閉 return 0;} 編譯結(jié)果: 5、nfs掛載 四、實(shí)驗(yàn)結(jié)果: 五、心得體會(huì): 一、實(shí)驗(yàn)報(bào)告為紙質(zhì)報(bào)告,手寫,不少于8頁紙。 二、報(bào)告首頁為標(biāo)準(zhǔn)實(shí)驗(yàn)報(bào)告封面,有課程名稱、實(shí)驗(yàn)名稱、姓名、時(shí)間 三、報(bào)告內(nèi)容為:1、2、3、4、實(shí)驗(yàn)?zāi)康?實(shí)驗(yàn)題目 實(shí)驗(yàn)過程步驟,詳細(xì)說明實(shí)驗(yàn)編程的過程 實(shí)驗(yàn)程序的主要代碼和注釋說明(不需要完整的程 序?。?。 5、6、實(shí)驗(yàn)中遇到的問題,怎么解決的。實(shí)驗(yàn)心得 四、報(bào)告的得分主要根據(jù)3、4、5五、三份實(shí)驗(yàn)報(bào)告裝訂在一起 六、班長(zhǎng)將報(bào)告收齊,按照班級(jí)序號(hào)排好,交給實(shí)驗(yàn)老師。 目錄 一、實(shí)驗(yàn)?zāi)康?----------3 二、實(shí)驗(yàn)要求-----------3 三、數(shù)控車床實(shí)驗(yàn)一-----3(1)、實(shí)驗(yàn)內(nèi)容(2)、實(shí)驗(yàn)零件圖樣(3)、車削加工程序 (4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 四、數(shù)控車床實(shí)驗(yàn)二-----6(1)、實(shí)驗(yàn)內(nèi)容(2)、實(shí)驗(yàn)零件圖樣(3)、車削加工程序 (4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 五、數(shù)控銑床實(shí)驗(yàn)一-----10(1)、實(shí)驗(yàn)內(nèi)容(2)、實(shí)驗(yàn)零件圖樣(3)、銑削加工程序 (4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 六、數(shù)控銑床實(shí)驗(yàn)二-----14(1)、實(shí)驗(yàn)內(nèi)容(2)、實(shí)驗(yàn)零件圖樣(3)、銑削加工程序 (4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 一、實(shí)驗(yàn)?zāi)康?/p> “數(shù)控機(jī)床加工程序編制”(簡(jiǎn)稱數(shù)控編程)課程,是機(jī)械和機(jī)電等各類專業(yè)本、??平虒W(xué)計(jì)劃中開設(shè)的一門應(yīng)用性和實(shí)踐性很強(qiáng)的專業(yè)課程。學(xué)好本課程,不僅要掌握數(shù)控編程的基本理論知識(shí)和編程方法,更重要的是要通過一定的實(shí)踐教學(xué),在實(shí)踐教學(xué)中運(yùn)用所掌握的機(jī)械加工工藝知識(shí)、數(shù)控編程的理論知識(shí)、數(shù)控編程的方法編制零件加工程序,并完成對(duì)零件的數(shù)控加工。采用仿真軟件在計(jì)算機(jī)上進(jìn)行模擬加工,是完成這一實(shí)踐教學(xué)的有效手段。因此,在各專業(yè)本、專科“數(shù)控編程”課程的教學(xué)計(jì)劃中均設(shè)有“仿真實(shí)驗(yàn)”這一實(shí)踐教學(xué)環(huán)節(jié)。其實(shí)驗(yàn)的目的是: 1.熟悉并學(xué)會(huì)運(yùn)用計(jì)算機(jī)仿真技術(shù),模擬數(shù)控車床、數(shù)控銑床完成零件加工的全過程; 2.為后續(xù)的“數(shù)控編程實(shí)訓(xùn)”,實(shí)地操作數(shù)控機(jī)床進(jìn)行數(shù)控加工,積累和打下操作技能訓(xùn)練的基礎(chǔ)。 二、實(shí)驗(yàn)要求 1.熟悉并掌握FANUC 0i系統(tǒng)仿真軟件面板操作過程; 2.按給定車削零件圖樣,編制加工程序,在計(jì)算機(jī)上運(yùn)用仿真軟件,進(jìn)行模擬加工; 3.按給定銑削零件圖樣,編制加工程序,在計(jì)算機(jī)上運(yùn)用仿真軟件,進(jìn)行模擬加工; 4.按實(shí)驗(yàn)內(nèi)容,編寫實(shí)驗(yàn)報(bào)告。 三、數(shù)控車床實(shí)驗(yàn)一(1)、實(shí)驗(yàn)內(nèi)容 如圖A所示,毛坯直徑為φ45mm,起刀點(diǎn)在圖示編程坐標(biāo)系的P點(diǎn),試運(yùn)用G71,G70指令編制圖示軸類零件車削加工程序。 給定切削條件是:粗車時(shí)切深為2mm,退刀量為1mm,精車余量X方向?yàn)?.6mm(直徑值),Z方向?yàn)?.3mm,主軸轉(zhuǎn)速為S 600 r /min,進(jìn)給速度為F 0.15 mm/ r; 精車時(shí)主軸轉(zhuǎn)速為S800 r /min ,進(jìn)給速度為F 0.1 mm / r。[注:φ45外圓不加工](2)、實(shí)驗(yàn)零件圖樣 圖A (3)、車削加工程序 O1;N10 G50 X100.Z100.T0101; N20 G90 G97 S600 M03;N30 G00 X51.Z3.M08;N40 G71 U2.R1.;N50 G71 P60 Q120 U0.6 W0.3 F0.15;N60 G00 X22.;N70 G01 Z-12.F0.1 S800;N80 G02 X38.Z-20.I8.; N90 G01 Z-30.;N100 X44.Z-40.;N110 Z-55.;N120 X51.;N130 G70 P60 Q120;N140 G00 X100.Z100.T0100 M09;N150 M05; N160 M30; (4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 1.進(jìn)入宇龍數(shù)控加工仿真系統(tǒng)3.7版,首先啟動(dòng)加密鎖管理程序,然后啟動(dòng)數(shù)控加工仿真系統(tǒng)。 2.打開菜單“機(jī)床/選擇機(jī)床?”,或單擊選擇機(jī)床圖標(biāo),系統(tǒng)彈出“選擇機(jī)床”對(duì)話框。選擇數(shù)控系統(tǒng)FANUC0i的車床,選擇標(biāo)準(zhǔn)(平床身前置刀架),按“確定”按鈕,系統(tǒng)即可切換到車床仿真加工界面。 3.打開菜單“零件/定義毛坯”,或單擊定義毛坯圖標(biāo),系統(tǒng)彈出“定義毛坯”對(duì)話框,點(diǎn)擊尺寸輸入框,改變毛坯尺寸為φ45×150 mm,按“確定”按鈕,保存定義的毛坯并且退出本操作。4.打開菜單“零件/放置零件”,或單擊放置零件圖標(biāo),系統(tǒng)彈出“選擇零件”對(duì)話框,在列表中點(diǎn)擊所需的零件,選中的零件信息加亮顯示,按下“安裝零件”按鈕,系統(tǒng)自動(dòng)關(guān)閉對(duì)話框,零件將被放到機(jī)床上。 5.毛坯在放置到工作臺(tái)(三爪卡盤)后,系統(tǒng)將自動(dòng)彈出一個(gè)小鍵盤,通過按動(dòng)小鍵盤上的方向按鈕,實(shí)現(xiàn)零件的平移和旋轉(zhuǎn)或車床零件調(diào)頭。再按小鍵盤上的“退出”按鈕,關(guān)閉小鍵盤。6.打開菜單“機(jī)床/選擇刀具”,或單擊選擇刀具圖標(biāo),系統(tǒng)彈出“車刀選擇”對(duì)話框。選擇外圓加工,刀片D55°,刀柄93°,修改刀尖半徑為0,按“確認(rèn)退出”按鈕,完成選刀。7.點(diǎn)擊機(jī)床操作面板中“緊急停止”,“啟動(dòng)”操作按鈕,加載驅(qū)動(dòng),當(dāng)“機(jī)床電機(jī)”和“伺服控制”指示燈亮,表示機(jī)床已被激活。在回零指示狀態(tài)下(回零模式),選擇機(jī)床操作面板上的“X軸”、“Z軸”,點(diǎn)擊“+”按鈕,此時(shí)X軸、Z軸將回零,當(dāng)回到機(jī)床參考點(diǎn)時(shí),相應(yīng)操作面板上“X原點(diǎn)燈”、“Z原點(diǎn)燈”的指示燈亮。 8.點(diǎn)擊機(jī)床操作面板中“手動(dòng)”操作按鈕,將機(jī)床切換到JOG狀態(tài),進(jìn)入“手動(dòng)”方式,點(diǎn)擊MDI鍵盤的“POS”按鈕,LCD顯示刀架在機(jī)床坐標(biāo)系中的坐標(biāo)值,將刀具移近零件毛坯,準(zhǔn)備對(duì)刀。(1).點(diǎn)擊“主軸正轉(zhuǎn)”按鈕,使主軸轉(zhuǎn)動(dòng),點(diǎn)擊“Z軸”,“-”負(fù)向移動(dòng)按鈕,用刀具試切工件外圓。然后,點(diǎn)擊“+”正向移動(dòng)按鈕,Z向退刀,將刀具退離零件毛坯。記下LCD界面上顯示的X絕對(duì)坐標(biāo) 為X1=255.733mm。點(diǎn)擊“主軸停止”按鈕,使主軸停止轉(zhuǎn)動(dòng),點(diǎn)擊菜單“測(cè)量/剖面圖測(cè)量?”,點(diǎn)擊試切外圓時(shí)所切線段,記下測(cè)量對(duì)話框中對(duì)應(yīng)線段的X值(試切外圓的直徑)為X2=44.367mm。此時(shí),工件中心軸線X的坐標(biāo)值即為X1-X2,記為X=211.366mm。 (2).同理,刀具移動(dòng)在切右端面的位置,試切端面,切完后,Z向不動(dòng),沿X退刀,同時(shí)記下此時(shí)的Z坐標(biāo)值,記為Z=147.483mm。(3).點(diǎn)擊MDI鍵盤的“OFFSET SETING”按鈕,進(jìn)入?yún)?shù)設(shè)置畫面,點(diǎn)擊“坐標(biāo)系”軟鍵,進(jìn)入坐標(biāo)系設(shè)定畫面,將通過對(duì)刀得到的坐標(biāo)值(X、Z)輸入G54坐標(biāo)系。 9.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕,輸入O2;G01 X100.Z100.;再點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行”,“循環(huán)啟動(dòng)”操作按鈕,將刀具移動(dòng)到刀具起點(diǎn)。 10.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕。打開菜單“機(jī)床/DNC傳送?”,在打開文件對(duì)話框中選取文件。在文件名列表框中選中文件O1,按“打開”確認(rèn)。按LCD畫面軟鍵“[(操作)]”,再點(diǎn)擊畫面軟鍵向右,再按畫面“[READ]”對(duì)應(yīng)軟鍵。在MDI鍵盤在輸入文件名O1。點(diǎn)擊畫面“[EXEC]”對(duì)應(yīng)軟鍵,即輸入預(yù)先編輯好的車削加工程序,并在LCD顯示。 11.點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行” 操作按鈕,點(diǎn)擊MDI鍵盤的“CUSFOM GRAPH”按鈕,程序執(zhí)行轉(zhuǎn)入檢查運(yùn)行軌跡模式;再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可觀察數(shù)控程序的運(yùn)行軌跡。 12.點(diǎn)擊MDI鍵盤的“CUSFOM GRAPH”按鈕,再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可加工零件。13.打開菜單“文件/另存項(xiàng)目”,系統(tǒng)彈出“選擇保存類型”對(duì)話框,按“確定”按鈕。系統(tǒng)彈出“另存為”對(duì)話框,輸入O1.mac文件名,保存在桌面,按“保存”按鈕。 四、數(shù)控車床實(shí)驗(yàn)二(1)、實(shí)驗(yàn)內(nèi)容 如圖B所示,毛坯直徑為φ45mm,起刀點(diǎn)在圖示編程坐標(biāo)系的P點(diǎn),試運(yùn)用G71,G70指令編制圖示軸類零件車削加工程序。 給定切削條件是:粗車時(shí)切深為2mm,退刀量為1mm,精車余量X 方向?yàn)?.6mm(直徑值),Z方向?yàn)?.3mm,主軸轉(zhuǎn)速為S 600 r /min,進(jìn)給速度為F 0.15 mm/ r; 精車時(shí)主軸轉(zhuǎn)速為S800 r /min ,進(jìn)給速度為F 0.1 mm / r。[注:φ45外圓不加工] (2)、實(shí)驗(yàn)零件圖樣 圖B (3)、車削加工程序 O2;N10 G50 X100.Z100.T0101;N20 G90 G97 S600 M03;N30 G00 X51.Z3.M08;N40 G71 U2.R1.;N50 G71 P60 Q140 U0.6 W0.3 F0.15;N60 G00 X20.;N70 G01 Z-15.F0.1 S800;N80 G03 X30.Z-20.k-5.;N90 G01 Z-35.;N100 X34.Z-47.;N110 Z-57.;N120 G02 X44.Z-62.I5.;N130 G01 Z-78.;N140 X51.;N150 G70 P60 Q140;N160 G00 X100.Z100.T0100 M09;N170 M05;N180 M30; (4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 1.進(jìn)入宇龍數(shù)控加工仿真系統(tǒng)3.7版,首先啟動(dòng)加密鎖管理程序,然后啟動(dòng)數(shù)控加工仿真系統(tǒng)。 2.打開菜單“機(jī)床/選擇機(jī)床?”,或單擊選擇機(jī)床圖標(biāo),系統(tǒng)彈出“選擇機(jī)床”對(duì)話框。選擇數(shù)控系統(tǒng)FANUC0i的車床,選擇標(biāo)準(zhǔn)(平床身前置刀架),按“確定”按鈕,系統(tǒng)即可切換到車床仿真加工界面。 3.打開菜單“零件/定義毛坯”,或單擊定義毛坯圖標(biāo),系統(tǒng)彈出“定義毛坯”對(duì)話框,點(diǎn)擊尺寸輸入框,改變毛坯尺寸為φ45×150 mm,按“確定”按鈕,保存定義的毛坯并且退出本操作。4.打開菜單“零件/放置零件”,或單擊放置零件圖標(biāo),系統(tǒng)彈出“選擇零件”對(duì)話框,在列表中點(diǎn)擊所需的零件,選中的零件信息加亮顯示,按下“安裝零件”按鈕,系統(tǒng)自動(dòng)關(guān)閉對(duì)話框,零件將被放到機(jī)床上。 5.毛坯在放置到工作臺(tái)(三爪卡盤)后,系統(tǒng)將自動(dòng)彈出一個(gè)小鍵盤,通過按動(dòng)小鍵盤上的方向按鈕,實(shí)現(xiàn)零件的平移和旋轉(zhuǎn)或車床零件調(diào)頭。再按小鍵盤上的“退出”按鈕,關(guān)閉小鍵盤。6.打開菜單“機(jī)床/選擇刀具”,或單擊選擇刀具圖標(biāo),系統(tǒng)彈出“車刀選擇”對(duì)話框。選擇外圓加工,刀片D55°,刀柄93°,修改刀尖半徑為0,按“確認(rèn)退出”按鈕,完成選刀。7.點(diǎn)擊機(jī)床操作面板中“緊急停止”,“啟動(dòng)”操作按鈕,加載驅(qū)動(dòng),當(dāng)“機(jī)床電機(jī)”和“伺服控制”指示燈亮,表示機(jī)床已被激活。在回零指示狀態(tài)下(回零模式),選擇機(jī)床操作面板上的“X軸”、“Z軸”,點(diǎn)擊“+”按鈕,此時(shí)X軸、Z軸將回零,當(dāng)回到機(jī)床參考點(diǎn)時(shí),相應(yīng)操作面板上“X原點(diǎn)燈”、“Z原點(diǎn)燈”的指示燈亮。 8.點(diǎn)擊機(jī)床操作面板中“手動(dòng)”操作按鈕,將機(jī)床切換到JOG狀態(tài),進(jìn)入“手動(dòng)”方式,點(diǎn)擊MDI鍵盤的“POS”按鈕,LCD顯示刀架在機(jī)床坐標(biāo)系中的坐標(biāo)值,將刀具移近零件毛坯,準(zhǔn)備對(duì)刀。(1).點(diǎn)擊“主軸正轉(zhuǎn)”按鈕,使主軸轉(zhuǎn)動(dòng),點(diǎn)擊“Z軸”,“-”負(fù)向移動(dòng)按鈕,用刀具試切工件外圓。然后,點(diǎn)擊“+”正向移動(dòng)按鈕,Z向退刀,將刀具退離零件毛坯。記下LCD界面上顯示的X絕對(duì)坐標(biāo)為X1=256.333mm。點(diǎn)擊“主軸停止”按鈕,使主軸停止轉(zhuǎn)動(dòng),點(diǎn)擊菜單“測(cè)量/剖面圖測(cè)量?”,點(diǎn)擊試切外圓時(shí)所切線段,記下測(cè)量對(duì)話框中對(duì)應(yīng)線段的X值(試切外圓的直徑)為X2=44.967mm。此時(shí),工件中心軸線X的坐標(biāo)值即為X1-X2,記為X=211.366mm。 (2).同理,刀具移動(dòng)在切右端面的位置,試切端面,切完后,Z向不動(dòng),沿X退刀,同時(shí)記下此時(shí)的Z坐標(biāo)值,記為Z=147.500mm。(3).點(diǎn)擊MDI鍵盤的“OFFSET SETING”按鈕,進(jìn)入?yún)?shù)設(shè)置畫面,點(diǎn)擊“坐標(biāo)系”軟鍵,進(jìn)入坐標(biāo)系設(shè)定畫面,將通過對(duì)刀得到的坐標(biāo)值(X、Z)輸入G54坐標(biāo)系。 9.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕,輸入O3;G01 X100.Z100.;再點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行”,“循環(huán)啟動(dòng)”操作按鈕,將刀具移動(dòng)到刀具起點(diǎn)。 10.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕。打開菜單“機(jī)床/DNC傳送?”,在打開文件對(duì)話框中選取文件。在文件名列表框中選中文件O2,按“打開”確認(rèn)。按LCD畫面軟鍵“[(操作)]”,再點(diǎn)擊畫面軟鍵向右,再按畫面“[READ]”對(duì)應(yīng)軟鍵。在MDI鍵盤在輸入文件名O2。點(diǎn)擊畫面“[EXEC]”對(duì)應(yīng)軟鍵,即輸入預(yù)先編輯好的車削加工程序,并在LCD顯示。 11.點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行” 操作按鈕,點(diǎn)擊MDI鍵盤的“CUSFOM GRAPH”按鈕,程序執(zhí)行轉(zhuǎn)入檢查運(yùn)行軌跡模式;再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可觀察數(shù)控程序的運(yùn)行軌跡。 12.點(diǎn)擊MDI鍵盤的“CUSFOM GRAPH”按鈕,再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可加工零件。13.打開菜單“文件/另存項(xiàng)目”,系統(tǒng)彈出“選擇保存類型”對(duì)話 框,按“確定”按鈕。系統(tǒng)彈出“另存為”對(duì)話框,輸入O2.mac文件名,保存在桌面,按“保存”按鈕。 五、數(shù)控銑床實(shí)驗(yàn)一(1)、實(shí)驗(yàn)內(nèi)容 如圖A所示,毛坯尺寸為140×100×50,起刀點(diǎn)位置在編程坐標(biāo)系的(0,0,20)處,按圖示的走刀路線ABCDEFGA編制銑削加工程序。選用φ20 mm的鍵槽銑刀,F(xiàn) 60mm/min, S 750r/min。 (2)、實(shí)驗(yàn)零件圖樣 圖A (3)、銑削加工程序 O3;N10 G92 X0 Y0 Z20.;N20 M03 S750;N30 G90 G00 X-50.Y-50.Z0 M08;N40 G41 G01 X0 Y0 Z-3.F60 D01;N50 G01 X20.Y10.;N60 Y62.; N70 G02 X44.Y86.I24.;N80 G01 X96.;N90 G03 X120.Y62.I24.;N100 G01 Y40.;N110 X100.Y14.;N120 X16.;N130 X0 Y0;N140 G40 Z20.M09;N150 M05;N160 M30; D01=10.(4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 1.進(jìn)入宇龍數(shù)控加工仿真系統(tǒng)3.7版,首先啟動(dòng)加密鎖管理程序,然后啟動(dòng)數(shù)控加工仿真系統(tǒng)。 2.打開菜單“機(jī)床/選擇機(jī)床?”,或單擊選擇機(jī)床圖標(biāo),系統(tǒng)彈出“選擇機(jī)床”對(duì)話框。選擇數(shù)控系統(tǒng)FANUC0i的銑床,選擇標(biāo)準(zhǔn),按“確定”按鈕,系統(tǒng)即可切換到銑床仿真加工界面。3.打開菜單“零件/定義毛坯”,或單擊定義毛坯圖標(biāo),系統(tǒng)彈出“定義毛坯”對(duì)話框,點(diǎn)擊尺寸輸入框,改變毛坯尺寸為140×100×100 mm,按“確定”按鈕,保存定義的毛坯并且退出本操作。 打開菜單“零件/安裝夾具”,或單擊夾具圖標(biāo),系統(tǒng)彈出“選擇夾具”對(duì)話框。在“選擇零件”列表框中選擇已定義毛坯。在“選擇夾具”列表框中選擇平口鉗,按“確定”按鈕。4.打開菜單“零件/放置零件”,或單擊放置零件圖標(biāo),系統(tǒng)彈出“選擇零件”對(duì)話框,在列表中點(diǎn)擊所需的零件,選中的零件信息加亮顯示,按下“安裝零件”按鈕,系統(tǒng)自動(dòng)關(guān)閉對(duì)話框,零件將被放到機(jī)床上。5.毛坯在放置到工作臺(tái)(三爪卡盤)后,系統(tǒng)將自動(dòng)彈出一個(gè)小鍵盤,通過按動(dòng)小鍵盤上的方向按鈕,實(shí)現(xiàn)零件的平移和旋轉(zhuǎn)。再按小鍵盤上的“退出”按鈕,關(guān)閉小鍵盤。6.打開菜單“機(jī)床/基準(zhǔn)工具?”,或單擊基準(zhǔn)工具圖標(biāo),系統(tǒng)彈出“基準(zhǔn)工具”對(duì)話框。選擇φ14×75 mm的剛性芯棒基準(zhǔn)工具,按“確定”按鈕,剛性芯棒基準(zhǔn)工具被放到機(jī)床上。7.點(diǎn)擊機(jī)床操作面板中“緊急停止”,“啟動(dòng)”操作按鈕,加載驅(qū)動(dòng),當(dāng)“機(jī)床電機(jī)”和“伺服控制”指示燈亮,表示機(jī)床已被激活。在回零指示狀態(tài)下(回零模式),選擇機(jī)床操作面板上的“X軸”、“Y軸”、“Z軸”,點(diǎn)擊“+”按鈕,此時(shí)X軸、Y軸、Z軸將回零,當(dāng)回到機(jī)床參考點(diǎn)時(shí),相應(yīng)操作面板上“X原點(diǎn)燈”、“Y原點(diǎn)燈”、“Z原點(diǎn)燈”的指示燈亮。 8.點(diǎn)擊機(jī)床操作面板中“手動(dòng)”操作按鈕,將機(jī)床切換到JOG狀態(tài),進(jìn)入“手動(dòng)”方式,點(diǎn)擊MDI鍵盤的“POS”按鈕,LCD顯示刀架在機(jī)床坐標(biāo)系中的坐標(biāo)值,將零件毛坯移近基準(zhǔn)工具,準(zhǔn)備剛性芯棒采用檢查塞尺松緊的方式對(duì)刀。 (1).利用機(jī)床操作面板上的選擇軸按鈕,單擊選擇“X軸”,再通過軸移動(dòng)鍵“+”,“-”,采用點(diǎn)動(dòng)方式移動(dòng)機(jī)床,將裝有基準(zhǔn)工具的機(jī)床主軸在X方向上移動(dòng)到工件左側(cè),借助“視圖”菜單中的動(dòng)態(tài)旋轉(zhuǎn)、動(dòng)態(tài)放縮、動(dòng)態(tài)平移等工具,調(diào)整工作區(qū)大小到工件左側(cè)的大致位置。取正向視圖,點(diǎn)擊菜單“塞尺檢查/1mm”,安裝塞尺。 (2).點(diǎn)擊機(jī)床操作面板上“手動(dòng)脈沖”按鈕,切換到手輪方式,點(diǎn)擊操作面板右下角的“H”拉出手輪,選中X軸,調(diào)整手輪倍率。按鼠標(biāo)右鍵為主軸向X軸“-”方向運(yùn)動(dòng),按鼠標(biāo)左鍵為主軸向X軸“+”方向運(yùn)動(dòng),如此移動(dòng)芯棒,使得提示信息對(duì)話框顯示“塞尺檢查的結(jié)果:合適”。 (3).記下塞尺檢查結(jié)果為“合適”時(shí)LCD界面中顯示的X坐標(biāo)值,此為基準(zhǔn)工具中心的X坐標(biāo),記為X1=-578.000 mm;將基準(zhǔn)工件直徑記為X2=14.000 mm,將塞尺厚度記為X3=1.000 mm,則:工件上表面左下角的X向坐標(biāo)為:基準(zhǔn)工具中心的X坐標(biāo)+基準(zhǔn)工具半徑+塞尺厚度,即:X=X1+X2/2+X3=-578+7+1=-570 mm。 (4).在不改變Z向坐標(biāo)的情況下,將剛性芯棒在JOG手動(dòng)方式下移動(dòng)到零件的前側(cè),同理可得到工件上表面左下角的Y坐標(biāo):Y=Y1+Y2/2+Y3=-473+7+1=-465 mm。9.打開菜單“機(jī)床/選擇刀具”,或單擊選擇刀具圖標(biāo),選擇φ20 mm的鍵槽銑刀,按“確定”按鈕。點(diǎn)擊機(jī)床操作面板中“手動(dòng)”操作按鈕,將機(jī)床切換到JOG狀態(tài),進(jìn)入“手動(dòng)”方式,為主軸裝上實(shí)際加工刀具,點(diǎn)擊MDI鍵盤的“POS”按鈕,LCD顯示刀架在機(jī)床坐標(biāo)系中的坐標(biāo)值。 利用機(jī)床操作面板上的選擇軸按鈕,單擊選擇“Z軸”,再通過軸移動(dòng)鍵“+”,“-”,采用點(diǎn)動(dòng)方式移動(dòng)機(jī)床,將裝有刀具的機(jī)床主軸在Z方向上移動(dòng)到工件上表面的大致位置。類似在X,Y方向?qū)Φ兜姆椒ㄟM(jìn)行塞尺檢查,得到“塞尺檢查:合適”時(shí)Z的坐標(biāo)值,記為Z1=-247.000 mm。則相應(yīng)刀具在工件上表面中心的Z坐標(biāo)值為:Z=Z1-塞尺厚度=-247-1=-248 mm。 點(diǎn)擊MDI鍵盤的“OFFSET SETING”按鈕,進(jìn)入?yún)?shù)設(shè)置畫面,輸入刀具半徑補(bǔ)償D01=10.000 mm ,再點(diǎn)擊“坐標(biāo)系”軟鍵,進(jìn)入坐標(biāo)系設(shè)定畫面,將通過對(duì)刀得到的坐標(biāo)值(X、Y、Z)輸入G54坐標(biāo)系。10.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕,輸入O4;G01 X0 Y0 Z20.;再點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行”,“循環(huán)啟動(dòng)”操作按鈕,將刀具移動(dòng)到刀具起點(diǎn)。 11.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕。打開菜單“機(jī)床/DNC傳送?”,在打開文件對(duì)話框中選取文件。在文件名列表框中選中文件O3,按“打開”確認(rèn)。按LCD畫面軟鍵“[(操作)]”,再點(diǎn)擊畫面軟鍵向右,再按畫面“[READ]”對(duì)應(yīng)軟鍵。在MDI鍵盤在輸入文件名O3。點(diǎn)擊畫面“[EXEC]”對(duì)應(yīng)軟鍵,即輸入預(yù)先編輯好的銑削加工程序,并在LCD顯示。 12.點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行” 操作按鈕,點(diǎn)擊MDI鍵盤的“CUSFOM GRAPH”按鈕,程序執(zhí)行轉(zhuǎn)入檢查運(yùn)行軌跡模式;再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可觀察數(shù)控程序的運(yùn)行軌跡。 13.點(diǎn)擊MDI鍵盤的“CUSFOM GRAPH”按鈕,再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可加工零件。14.打開菜單“文件/另存項(xiàng)目”,系統(tǒng)彈出“選擇保存類型”對(duì)話框,按“確定”按鈕。系統(tǒng)彈出“另存為”對(duì)話框,輸入O3.mac文件名,保存在桌面,按“保存”按鈕。 六、數(shù)控銑床實(shí)驗(yàn)二(1)、實(shí)驗(yàn)內(nèi)容 如圖B所示,毛坯尺寸為150×80×30,起刀點(diǎn)位置在編程坐標(biāo)系的(0,0,20)處,按圖示的工件尺寸編制銑削加工程序并仿真。突臺(tái)高5 mm,孔深10 mm,選用φ8 mm的鍵槽銑刀,φ20mm鉆頭,F(xiàn) 60 mm/min, S 750r/min。 (2)、實(shí)驗(yàn)零件圖樣 圖B (3)、銑削加工程序 O4;N10 G92 X0 Y0 Z20.;N20 M03 S750 T0101;N30 G90 G00 X-50.Y-50.Z0 M08;N40 G41 G01 X0 Y-10.Z-5.F60 D01;N50 G01 Y20.;N60 X27.017 Y64.988;N70 G02 X35.521 Y70.R10.;N80 G01 X80.;N90 G02 X90.Y60.J-10.;N100 G03 X120.I15.;N110 G01 Y75.;N120 X130.;N130 G02 X140.Y65.J-10.;N140 G01 Y0;N150 X-10.;N160 G00 G40 X-50.Y-50.Z200.T0100 M09;N170 M05;N180 M00;N190 M06 T0202;N200 M03 S750;N210 G43 G00 Z5.H02;N220 G99 G81 X50.Y28.Z-10.R2.F60;N230 G98 X100.Y20.;N240 G80; N250 G00 X-50.Y-50.;N260 G49 Z200.T0200;N270 M05;N280 M30; D01=4.;H02=100.; (4)、FANUC 0i系統(tǒng)仿真軟件面板操作過程 1.進(jìn)入宇龍數(shù)控加工仿真系統(tǒng)3.7版,首先啟動(dòng)加密鎖管理程序,然后啟動(dòng)數(shù)控加工仿真系統(tǒng)。 2.打開菜單“機(jī)床/選擇機(jī)床?”,或單擊選擇機(jī)床圖標(biāo),系統(tǒng)彈出“選擇機(jī)床”對(duì)話框。選擇數(shù)控系統(tǒng)FANUC0i的銑床,選擇標(biāo)準(zhǔn),按“確定”按鈕,系統(tǒng)即可切換到銑床仿真加工界面。3.打開菜單“零件/定義毛坯”,或單擊定義毛坯圖標(biāo),系統(tǒng)彈出 “定義毛坯”對(duì)話框,點(diǎn)擊尺寸輸入框,改變毛坯尺寸為150×80×100 mm,按“確定”按鈕,保存定義的毛坯并且退出本操作。 打開菜單“零件/安裝夾具”,或單擊夾具圖標(biāo),系統(tǒng)彈出“選擇夾具”對(duì)話框。在“選擇零件”列表框中選擇已定義毛坯。在“選擇夾具”列表框中選擇平口鉗,按“確定”按鈕。4.打開菜單“零件/放置零件”,或單擊放置零件圖標(biāo),系統(tǒng)彈出“選擇零件”對(duì)話框,在列表中點(diǎn)擊所需的零件,選中的零件信息加亮顯示,按下“安裝零件”按鈕,系統(tǒng)自動(dòng)關(guān)閉對(duì)話框,零件將被放到機(jī)床上。 5.毛坯在放置到工作臺(tái)(三爪卡盤)后,系統(tǒng)將自動(dòng)彈出一個(gè)小鍵盤,通過按動(dòng)小鍵盤上的方向按鈕,實(shí)現(xiàn)零件的平移和旋轉(zhuǎn)。再按小鍵盤上的“退出”按鈕,關(guān)閉小鍵盤。6.打開菜單“機(jī)床/基準(zhǔn)工具?”,或單擊基準(zhǔn)工具圖標(biāo),系統(tǒng)彈出“基準(zhǔn)工具”對(duì)話框。選擇φ14×75 mm的剛性芯棒基準(zhǔn)工具,按“確定”按鈕,剛性芯棒基準(zhǔn)工具被放到機(jī)床上。7.點(diǎn)擊機(jī)床操作面板中“緊急停止”,“啟動(dòng)”操作按鈕,加載驅(qū)動(dòng),當(dāng)“機(jī)床電機(jī)”和“伺服控制”指示燈亮,表示機(jī)床已被激活。在回零指示狀態(tài)下(回零模式),選擇機(jī)床操作面板上的“X軸”、“Y軸”、“Z軸”,點(diǎn)擊“+”按鈕,此時(shí)X軸、Y軸、Z軸將回零,當(dāng)回到機(jī)床參考點(diǎn)時(shí),相應(yīng)操作面板上“X原點(diǎn)燈”、“Y原點(diǎn)燈”、“Z原點(diǎn)燈”的指示燈亮。 8.點(diǎn)擊機(jī)床操作面板中“手動(dòng)”操作按鈕,將機(jī)床切換到JOG狀態(tài),進(jìn)入“手動(dòng)”方式,點(diǎn)擊MDI鍵盤的“POS”按鈕,LCD顯示刀架在機(jī)床坐標(biāo)系中的坐標(biāo)值,將零件毛坯移近基準(zhǔn)工具,準(zhǔn)備剛性芯棒采用檢查塞尺松緊的方式對(duì)刀。 (1).利用機(jī)床操作面板上的選擇軸按鈕,單擊選擇“X軸”,再通過軸移動(dòng)鍵“+”,“-”,采用點(diǎn)動(dòng)方式移動(dòng)機(jī)床,將裝有基準(zhǔn)工具的機(jī)床主軸在X方向上移動(dòng)到工件左側(cè),借助“視圖”菜單中的動(dòng)態(tài)旋轉(zhuǎn)、動(dòng)態(tài)放縮、動(dòng)態(tài)平移等工具,調(diào)整工作區(qū)大小到工件左側(cè)的大致位置。取正向視圖,點(diǎn)擊菜單“塞尺檢查/1mm”,安裝塞尺。 (2).點(diǎn)擊機(jī)床操作面板上“手動(dòng)脈沖”按鈕,切換到手輪方式,點(diǎn)擊操作面板右下角的“H”拉出手輪,選中X軸,調(diào)整手輪倍率。按鼠標(biāo)右鍵為主軸向X軸“-”方向運(yùn)動(dòng),按鼠標(biāo)左鍵為主軸向X軸“+”方向運(yùn)動(dòng),如此移動(dòng)芯棒,使得提示信息對(duì)話框顯示“塞尺檢 查的結(jié)果:合適”。 (3).記下塞尺檢查結(jié)果為“合適”時(shí)LCD界面中顯示的X坐標(biāo)值,此為基準(zhǔn)工具中心的X坐標(biāo),記為X1=-583.000 mm;將基準(zhǔn)工件直徑記為X2=14.000 mm,將塞尺厚度記為X3=1.000 mm,則:工件上表面左下角的X向坐標(biāo)為:基準(zhǔn)工具中心的X坐標(biāo)+基準(zhǔn)工具半徑+塞尺厚度,即:X=X1+X2/2+X3=-583+7+1=-575 mm。 (4).在不改變Z向坐標(biāo)的情況下,將剛性芯棒在JOG手動(dòng)方式下移動(dòng)到零件的前側(cè),同理可得到工件上表面左下角的Y坐標(biāo):Y=Y1+Y2/2+Y3=-463+7+1=-455 mm。9.打開菜單“機(jī)床/選擇刀具”,或單擊選擇刀具圖標(biāo),選擇φ8 mm的鍵槽銑刀,按“確定”按鈕。點(diǎn)擊機(jī)床操作面板中“手動(dòng)”操作按鈕,將機(jī)床切換到JOG狀態(tài),進(jìn)入“手動(dòng)”方式,為主軸裝上實(shí)際加工刀具,點(diǎn)擊MDI鍵盤的“POS”按鈕,LCD顯示刀架在機(jī)床坐標(biāo)系中的坐標(biāo)值。 利用機(jī)床操作面板上的選擇軸按鈕,單擊選擇“Z軸”,再通過軸移動(dòng)鍵“+”,“-”,采用點(diǎn)動(dòng)方式移動(dòng)機(jī)床,將裝有刀具的機(jī)床主軸在Z方向上移動(dòng)到工件上表面的大致位置。類似在X,Y方向?qū)Φ兜姆椒ㄟM(jìn)行塞尺檢查,得到“塞尺檢查:合適”時(shí)Z的坐標(biāo)值,記為Z1=-317.000 mm。則相應(yīng)刀具在工件上表面中心的Z坐標(biāo)值為:Z=Z1-塞尺厚度=-317-1=-318 mm。 點(diǎn)擊MDI鍵盤的“OFFSET SETING”按鈕,進(jìn)入?yún)?shù)設(shè)置畫面,輸入刀具半徑補(bǔ)償D01=4.000 mm ,刀具長(zhǎng)度補(bǔ)償H02=100.000 mm,再點(diǎn)擊“坐標(biāo)系”軟鍵,進(jìn)入坐標(biāo)系設(shè)定畫面,將通過對(duì)刀得到的坐標(biāo)值(X、Y、Z)輸入G54坐標(biāo)系。 10.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕,輸入O5;G01 X0 Y0 Z20.;再點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行”,“循環(huán)啟動(dòng)”操作按鈕,將刀具移動(dòng)到刀具起點(diǎn)。 11.點(diǎn)擊機(jī)床操作面板中“編輯”操作按鈕,再點(diǎn)擊MDI鍵盤的“PROG”按鈕。打開菜單“機(jī)床/DNC傳送?”,在打開文件對(duì)話框中選取文件。在文件名列表框中選中文件O4,按“打開”確認(rèn)。按LCD畫面軟鍵“[(操作)]”,再點(diǎn)擊畫面軟鍵向右,再按畫面“[READ]”對(duì)應(yīng)軟鍵。在MDI鍵盤在輸入文件名O4。點(diǎn)擊畫面“[EXEC]”對(duì)應(yīng)軟鍵,即輸入預(yù)先編輯好的銑削加工程序,并在LCD顯示。 12.點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行” 操作按鈕,點(diǎn)擊MDI鍵盤 的“CUSFOM GRAPH”按鈕,程序執(zhí)行轉(zhuǎn)入檢查運(yùn)行軌跡模式;再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可觀察數(shù)控程序的運(yùn)行軌跡。 13.點(diǎn)擊MDI鍵盤的“CUSFOM GRAPH”按鈕,再點(diǎn)擊機(jī)床操作面板中“循環(huán)啟動(dòng)”操作按鈕,即可加工零件。再打開菜單“機(jī)床/選擇刀具”,或單擊選擇刀具圖標(biāo),選擇φ20 mm的鉆頭,按“確定”按鈕。點(diǎn)擊機(jī)床操作面板中“自動(dòng)運(yùn)行”、“循環(huán)啟動(dòng)” 操作按鈕,繼續(xù)加工零件。 14.打開菜單“文件/另存項(xiàng)目”,系統(tǒng)彈出“選擇保存類型”對(duì)話框,按“確定”按鈕。系統(tǒng)彈出“另存為”對(duì)話框,輸入O4.mac文件名,保存在桌面,按“保存”按鈕。 JSP編程實(shí)驗(yàn)報(bào)告 學(xué)生姓名:學(xué)生班級(jí):學(xué)生學(xué)號(hào):指導(dǎo)教師:實(shí)驗(yàn)n(n-實(shí)驗(yàn)順序號(hào)):實(shí)驗(yàn)名稱 一、實(shí)驗(yàn)?zāi)康亩?、?shí)驗(yàn)內(nèi)容及步驟 三、源代碼 四、運(yùn)行界面 五、收獲和體會(huì)第三篇:《網(wǎng)絡(luò)高級(jí)編程》實(shí)驗(yàn)報(bào)告要求
第四篇:數(shù)控編程仿真實(shí)驗(yàn)報(bào)告
第五篇:JSP編程實(shí)驗(yàn)報(bào)告