第一篇:《网络高级编程》实验报告要求
一、实验报告为纸质报告,手写,不少于8页纸。
二、报告首页为标准实验报告封面,有课程名称、实验名称、姓名、时间
三、报告内容为:1、2、3、4、实验目的 实验题目 实验过程步骤,详细说明实验编程的过程 实验程序的主要代码和注释说明(不需要完整的程
序!)。
5、6、实验中遇到的问题,怎么解决的。实验心得
四、报告的得分主要根据3、4、5五、三份实验报告装订在一起
六、班长将报告收齐,按照班级序号排好,交给实验老师。
第二篇:网络编程实验报告
实验一 TCP Socket API程序设计
一、预备知识
1.网络编程基本概念
网络上的计算机间的通讯,实质上是网络中不同主机上的程序之间的通讯。在互联网中使用IP地址来标识不同的主机,在网络协议中使用端口号来标识主机上不同进程,即使用(IP地址,端口号)二元组。
套接字(Socket)用于描述IP地址和端口,是一个通信链的句柄,通信时一个网络程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过与网络接口卡相连的传输介质将这段信息发送到另一台主机的Socket中,以供其他程序使用。
图1-1 TCP通信流程 2.TCP通信流程
TCP程序是面向连接的,程序运行后,服务器一直处于监听状态,客户端与服务器通信之前必须首先发起连接请求,由服务器接收请求并在双方之间建立连接后才可以互相通信。
二、实验目的
1.了解Winsock API编程原理; 2.掌握TCP Socket程序的编写; 3.了解C/S模式的特点; 4.学会解决实验中遇到的问题。
三、实验任务
使用Winsock API相关类实现TCP Socket通信程序,并能成功运行。
四、实验环境及工具
1.Windows2000/XP/7 2.Visual C++开发平台 3.Visual Studio2010
五、实验内容和步骤
参照《Visual C++网络编程教程》书中81页,TCP Socket API程序设计。连接:
void CChatClientDlg::OnConnect(){
WSADATA wsd;
//WSADATA结构
WSAStartup(MAKEWORD(2,2),&wsd);
//加载协议,使用Winsock 2.2版
m_client = socket(AF_INET,SOCK_STREAM,0);//创建流式套接字
//服务器地址
sockaddr_in serveraddr;
UpdateData();
if(ServerIP.IsBlank())
{
AfxMessageBox(“请指定服务器IP!”);
return;
}
if(sPort.IsEmpty())
{
AfxMessageBox(“请指定端口!”);
return;
}
//获取服务器进程的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]);
//设置服务器地址结构的内容
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.S_un.S_addr = inet_addr(sIP);
serveraddr.sin_port = htons(atoi(sPort));
//发起连接须指明要访问的服务器进程地址,这个地址存储在serveraddr中
if(connect(m_client,(sockaddr*)&serveraddr,sizeof(serveraddr))!= 0)
{
MessageBox(“连接失败”);
return;
}
else
{
m_ListWords.AddString(“连接服务器成功!”);
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();}
“发送”按钮事件过程代码如下:
void CChatClientDlg::OnSend(){
//向服务器发送信息
UpdateData();
if(m_sWords.IsEmpty())
{
AfxMessageBox(“发送的消息不能为空!”);
return;
}
//开始发送数据
int i = send(m_client,m_sWords.GetBuffer(0),m_sWords.GetLength(),0);
m_ListWords.AddString(“发送:” + 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();“关于”按钮的事件过程: CAboutDlg dlgAbout;dlgAbout.DoModal();
服务器端: 开始监听代码:
void CChatServerDlg::OnListen(){
WSADATA wsd;
//WSADATA结构
WSAStartup(MAKEWORD(2,2),&wsd);
//加载协议栈,使用Winsock 2.2版
m_server = socket(AF_INET,SOCK_STREAM,0);//创建流式套接字
//将网络中的事件关联到窗口的消息函数中,定义消息号为20000,侦测客户端的连接请求
WSAAsyncSelect(m_server,m_hWnd,20000,FD_ACCEPT);
m_client = 0;
BYTE nFild[4];
CString sIP;
UpdateData();
if(ServerIP.IsBlank())
{
AfxMessageBox(“请设置IP地址!”);
return;
}
if(sPort.IsEmpty())
{
AfxMessageBox(“请设置监听端口!”);
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]);
//服务器地址
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;
}
//监听开始,服务器等待连接请求的到来
listen(m_server,5);
m_ListWords.AddString(“监听开始:”);
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);} “停止监听”按钮事件过程代码如下: void CChatServerDlg::OnStopListen(){
//停止监听
closesocket(m_server);
m_ListWords.AddString(“停止监听”);
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()函数代码如下:
void CChatServerDlg::ReceiveData(){
//接收客户端的数据
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);//关闭与客户端通信的Socket
WSAAsyncSelect(m_server,m_hWnd,20000,FD_ACCEPT);//准备接收新的客户端连接
//界面完善
m_ButtonDisconnect.EnableWindow(false);
m_EditWords.EnableWindow(false);
m_ButtonSend.EnableWindow(false);} 服务器的初始化代码如下: //界面初始化
m_ButtonStopListen.EnableWindow(false);m_ButtonDisconnect.EnableWindow(false);m_ButtonClear.EnableWindow(false);m_EditWords.EnableWindow(false);m_ButtonSend.EnableWindow(false);
运行结果:
六、思考题
1.用Winsock API编程时,主要进行哪些通行的操作步骤? 2.阐述C/S模式的通信过程。答:
1.通行的操作
1.Winsock的打开(WSAStartup())。2.建立套接字(socket()或WSASocket())。3.地址绑定(bind())。
4.服务器监听连接(listen())。
5.客户端提出连接申请(connect()或WSAConnect())。6.服务器接收客户端的连接请求(accept()或WSAAccept())。7.数据的发送(send()或WSASend(),sendto()或WSASendTo())。8.数据的接收(recv()或WSARecv(),recvfrom()或WSARecvfrom())。9.关闭套接字(closesocket())。10.关闭Winsock(WSACleanup())。
2通信过程
第三篇:嵌入式串口和网络编程实验报告
嵌入式实验报告
题目:linux
串口和网络编程
一、实验目的:
1、强化本学期所学的相关的内容。
2、掌握串口相关设置。
3、强化基于TCP网络传输的三次握手。
4、自学Linux线程的使用。
二、实验内容:
本试验基于server和client的透明传输来实现类似于QQ的聊天功能。
三、实验过程:
1、linux开发环境的建立
2、嵌入式linux系统的搭建
1>BootLoader的移植
2>linux系统的裁剪与移植 Linux内核裁剪
./make_image生成自己的uImage2638
上电验证:
3>根文件系统的移植 修改hostname为:whmtt
./mkcramfsdisk_new 生成rootfs_new.cramfs
大小从老师给的40000到37b00(因为有的没有用到,大小变小了):
上电验证:
3、客服端编程client.c 相关代码: #include
#define SERVER_PORT 20000 //设置服务端口
#define CLIENT_PORT((20001+rand())%65536)//设置客户端端口(随机)#define BUFFER_SIZE 256 #define LENGTH_OF_LISTEN_QUEUE 10 //可窃听队列长为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,当为1时清空buf,同时接收来自server的数据并输出。
但当没有清空,则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)/*等待发送数据给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);}//绑定的目的是让其端口是随机的,否则端口是自增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、服务端server.c编写
相关代码: #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);//以默认阻塞方式打开 } 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]);/*设置输入输出波特率*/ 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;//奇校验 break; case 'e': case 'E': g_newtio.c_cflag |= PARENB;//偶校验 g_newtio.c_cflag &= ~PARODD; break; default: printf(“Unsupported Parityn”); return-1;} switch(Stopbit)//设置停止校验位是为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;//最大等待时间为1*100ms g_newtio.c_cc[VMIN] = 1;//最小读数为1 g_newtio.c_iflag &= ~INPCK;g_newtio.c_cflag &= ~CRTSCTS;g_newtio.c_cflag &= ~CSIZE;//设置数据位 g_newtio.c_cflag |= CS8;// g_newtio.c_cflag |= CLOCAL;g_newtio.c_cflag |= CREAD; if(tcsetattr(ret, TCSANOW, &g_newtio)!= 0)//激活设置 { printf(“Set Com Parameter Error!n”); return-1;} tcflush(ret, TCIOFLUSH);//刷新输入输出缓存 return ret;} //以上为套接字的相关定义 //一下类似与client一样设置数据接收和发送。 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);//全部关闭 return 0;} 编译结果: 5、nfs挂载 四、实验结果: 五、心得体会: 目录 一、实验目的-----------3 二、实验要求-----------3 三、数控车床实验一-----3(1)、实验内容(2)、实验零件图样(3)、车削加工程序 (4)、FANUC 0i系统仿真软件面板操作过程 四、数控车床实验二-----6(1)、实验内容(2)、实验零件图样(3)、车削加工程序 (4)、FANUC 0i系统仿真软件面板操作过程 五、数控铣床实验一-----10(1)、实验内容(2)、实验零件图样(3)、铣削加工程序 (4)、FANUC 0i系统仿真软件面板操作过程 六、数控铣床实验二-----14(1)、实验内容(2)、实验零件图样(3)、铣削加工程序 (4)、FANUC 0i系统仿真软件面板操作过程 一、实验目的 “数控机床加工程序编制”(简称数控编程)课程,是机械和机电等各类专业本、专科教学计划中开设的一门应用性和实践性很强的专业课程。学好本课程,不仅要掌握数控编程的基本理论知识和编程方法,更重要的是要通过一定的实践教学,在实践教学中运用所掌握的机械加工工艺知识、数控编程的理论知识、数控编程的方法编制零件加工程序,并完成对零件的数控加工。采用仿真软件在计算机上进行模拟加工,是完成这一实践教学的有效手段。因此,在各专业本、专科“数控编程”课程的教学计划中均设有“仿真实验”这一实践教学环节。其实验的目的是: 1.熟悉并学会运用计算机仿真技术,模拟数控车床、数控铣床完成零件加工的全过程; 2.为后续的“数控编程实训”,实地操作数控机床进行数控加工,积累和打下操作技能训练的基础。 二、实验要求 1.熟悉并掌握FANUC 0i系统仿真软件面板操作过程; 2.按给定车削零件图样,编制加工程序,在计算机上运用仿真软件,进行模拟加工; 3.按给定铣削零件图样,编制加工程序,在计算机上运用仿真软件,进行模拟加工; 4.按实验内容,编写实验报告。 三、数控车床实验一(1)、实验内容 如图A所示,毛坯直径为φ45mm,起刀点在图示编程坐标系的P点,试运用G71,G70指令编制图示轴类零件车削加工程序。 给定切削条件是:粗车时切深为2mm,退刀量为1mm,精车余量X方向为0.6mm(直径值),Z方向为0.3mm,主轴转速为S 600 r /min,进给速度为F 0.15 mm/ r; 精车时主轴转速为S800 r /min ,进给速度为F 0.1 mm / r。[注:φ45外圆不加工](2)、实验零件图样 图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系统仿真软件面板操作过程 1.进入宇龙数控加工仿真系统3.7版,首先启动加密锁管理程序,然后启动数控加工仿真系统。 2.打开菜单“机床/选择机床„”,或单击选择机床图标,系统弹出“选择机床”对话框。选择数控系统FANUC0i的车床,选择标准(平床身前置刀架),按“确定”按钮,系统即可切换到车床仿真加工界面。 3.打开菜单“零件/定义毛坯”,或单击定义毛坯图标,系统弹出“定义毛坯”对话框,点击尺寸输入框,改变毛坯尺寸为φ45×150 mm,按“确定”按钮,保存定义的毛坯并且退出本操作。4.打开菜单“零件/放置零件”,或单击放置零件图标,系统弹出“选择零件”对话框,在列表中点击所需的零件,选中的零件信息加亮显示,按下“安装零件”按钮,系统自动关闭对话框,零件将被放到机床上。 5.毛坯在放置到工作台(三爪卡盘)后,系统将自动弹出一个小键盘,通过按动小键盘上的方向按钮,实现零件的平移和旋转或车床零件调头。再按小键盘上的“退出”按钮,关闭小键盘。6.打开菜单“机床/选择刀具”,或单击选择刀具图标,系统弹出“车刀选择”对话框。选择外圆加工,刀片D55°,刀柄93°,修改刀尖半径为0,按“确认退出”按钮,完成选刀。7.点击机床操作面板中“紧急停止”,“启动”操作按钮,加载驱动,当“机床电机”和“伺服控制”指示灯亮,表示机床已被激活。在回零指示状态下(回零模式),选择机床操作面板上的“X轴”、“Z轴”,点击“+”按钮,此时X轴、Z轴将回零,当回到机床参考点时,相应操作面板上“X原点灯”、“Z原点灯”的指示灯亮。 8.点击机床操作面板中“手动”操作按钮,将机床切换到JOG状态,进入“手动”方式,点击MDI键盘的“POS”按钮,LCD显示刀架在机床坐标系中的坐标值,将刀具移近零件毛坯,准备对刀。(1).点击“主轴正转”按钮,使主轴转动,点击“Z轴”,“-”负向移动按钮,用刀具试切工件外圆。然后,点击“+”正向移动按钮,Z向退刀,将刀具退离零件毛坯。记下LCD界面上显示的X绝对坐标 为X1=255.733mm。点击“主轴停止”按钮,使主轴停止转动,点击菜单“测量/剖面图测量„”,点击试切外圆时所切线段,记下测量对话框中对应线段的X值(试切外圆的直径)为X2=44.367mm。此时,工件中心轴线X的坐标值即为X1-X2,记为X=211.366mm。 (2).同理,刀具移动在切右端面的位置,试切端面,切完后,Z向不动,沿X退刀,同时记下此时的Z坐标值,记为Z=147.483mm。(3).点击MDI键盘的“OFFSET SETING”按钮,进入参数设置画面,点击“坐标系”软键,进入坐标系设定画面,将通过对刀得到的坐标值(X、Z)输入G54坐标系。 9.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮,输入O2;G01 X100.Z100.;再点击机床操作面板中“自动运行”,“循环启动”操作按钮,将刀具移动到刀具起点。 10.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮。打开菜单“机床/DNC传送„”,在打开文件对话框中选取文件。在文件名列表框中选中文件O1,按“打开”确认。按LCD画面软键“[(操作)]”,再点击画面软键向右,再按画面“[READ]”对应软键。在MDI键盘在输入文件名O1。点击画面“[EXEC]”对应软键,即输入预先编辑好的车削加工程序,并在LCD显示。 11.点击机床操作面板中“自动运行” 操作按钮,点击MDI键盘的“CUSFOM GRAPH”按钮,程序执行转入检查运行轨迹模式;再点击机床操作面板中“循环启动”操作按钮,即可观察数控程序的运行轨迹。 12.点击MDI键盘的“CUSFOM GRAPH”按钮,再点击机床操作面板中“循环启动”操作按钮,即可加工零件。13.打开菜单“文件/另存项目”,系统弹出“选择保存类型”对话框,按“确定”按钮。系统弹出“另存为”对话框,输入O1.mac文件名,保存在桌面,按“保存”按钮。 四、数控车床实验二(1)、实验内容 如图B所示,毛坯直径为φ45mm,起刀点在图示编程坐标系的P点,试运用G71,G70指令编制图示轴类零件车削加工程序。 给定切削条件是:粗车时切深为2mm,退刀量为1mm,精车余量X 方向为0.6mm(直径值),Z方向为0.3mm,主轴转速为S 600 r /min,进给速度为F 0.15 mm/ r; 精车时主轴转速为S800 r /min ,进给速度为F 0.1 mm / r。[注:φ45外圆不加工] (2)、实验零件图样 图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系统仿真软件面板操作过程 1.进入宇龙数控加工仿真系统3.7版,首先启动加密锁管理程序,然后启动数控加工仿真系统。 2.打开菜单“机床/选择机床„”,或单击选择机床图标,系统弹出“选择机床”对话框。选择数控系统FANUC0i的车床,选择标准(平床身前置刀架),按“确定”按钮,系统即可切换到车床仿真加工界面。 3.打开菜单“零件/定义毛坯”,或单击定义毛坯图标,系统弹出“定义毛坯”对话框,点击尺寸输入框,改变毛坯尺寸为φ45×150 mm,按“确定”按钮,保存定义的毛坯并且退出本操作。4.打开菜单“零件/放置零件”,或单击放置零件图标,系统弹出“选择零件”对话框,在列表中点击所需的零件,选中的零件信息加亮显示,按下“安装零件”按钮,系统自动关闭对话框,零件将被放到机床上。 5.毛坯在放置到工作台(三爪卡盘)后,系统将自动弹出一个小键盘,通过按动小键盘上的方向按钮,实现零件的平移和旋转或车床零件调头。再按小键盘上的“退出”按钮,关闭小键盘。6.打开菜单“机床/选择刀具”,或单击选择刀具图标,系统弹出“车刀选择”对话框。选择外圆加工,刀片D55°,刀柄93°,修改刀尖半径为0,按“确认退出”按钮,完成选刀。7.点击机床操作面板中“紧急停止”,“启动”操作按钮,加载驱动,当“机床电机”和“伺服控制”指示灯亮,表示机床已被激活。在回零指示状态下(回零模式),选择机床操作面板上的“X轴”、“Z轴”,点击“+”按钮,此时X轴、Z轴将回零,当回到机床参考点时,相应操作面板上“X原点灯”、“Z原点灯”的指示灯亮。 8.点击机床操作面板中“手动”操作按钮,将机床切换到JOG状态,进入“手动”方式,点击MDI键盘的“POS”按钮,LCD显示刀架在机床坐标系中的坐标值,将刀具移近零件毛坯,准备对刀。(1).点击“主轴正转”按钮,使主轴转动,点击“Z轴”,“-”负向移动按钮,用刀具试切工件外圆。然后,点击“+”正向移动按钮,Z向退刀,将刀具退离零件毛坯。记下LCD界面上显示的X绝对坐标为X1=256.333mm。点击“主轴停止”按钮,使主轴停止转动,点击菜单“测量/剖面图测量„”,点击试切外圆时所切线段,记下测量对话框中对应线段的X值(试切外圆的直径)为X2=44.967mm。此时,工件中心轴线X的坐标值即为X1-X2,记为X=211.366mm。 (2).同理,刀具移动在切右端面的位置,试切端面,切完后,Z向不动,沿X退刀,同时记下此时的Z坐标值,记为Z=147.500mm。(3).点击MDI键盘的“OFFSET SETING”按钮,进入参数设置画面,点击“坐标系”软键,进入坐标系设定画面,将通过对刀得到的坐标值(X、Z)输入G54坐标系。 9.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮,输入O3;G01 X100.Z100.;再点击机床操作面板中“自动运行”,“循环启动”操作按钮,将刀具移动到刀具起点。 10.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮。打开菜单“机床/DNC传送„”,在打开文件对话框中选取文件。在文件名列表框中选中文件O2,按“打开”确认。按LCD画面软键“[(操作)]”,再点击画面软键向右,再按画面“[READ]”对应软键。在MDI键盘在输入文件名O2。点击画面“[EXEC]”对应软键,即输入预先编辑好的车削加工程序,并在LCD显示。 11.点击机床操作面板中“自动运行” 操作按钮,点击MDI键盘的“CUSFOM GRAPH”按钮,程序执行转入检查运行轨迹模式;再点击机床操作面板中“循环启动”操作按钮,即可观察数控程序的运行轨迹。 12.点击MDI键盘的“CUSFOM GRAPH”按钮,再点击机床操作面板中“循环启动”操作按钮,即可加工零件。13.打开菜单“文件/另存项目”,系统弹出“选择保存类型”对话 框,按“确定”按钮。系统弹出“另存为”对话框,输入O2.mac文件名,保存在桌面,按“保存”按钮。 五、数控铣床实验一(1)、实验内容 如图A所示,毛坯尺寸为140×100×50,起刀点位置在编程坐标系的(0,0,20)处,按图示的走刀路线ABCDEFGA编制铣削加工程序。选用φ20 mm的键槽铣刀,F 60mm/min, S 750r/min。 (2)、实验零件图样 图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系统仿真软件面板操作过程 1.进入宇龙数控加工仿真系统3.7版,首先启动加密锁管理程序,然后启动数控加工仿真系统。 2.打开菜单“机床/选择机床„”,或单击选择机床图标,系统弹出“选择机床”对话框。选择数控系统FANUC0i的铣床,选择标准,按“确定”按钮,系统即可切换到铣床仿真加工界面。3.打开菜单“零件/定义毛坯”,或单击定义毛坯图标,系统弹出“定义毛坯”对话框,点击尺寸输入框,改变毛坯尺寸为140×100×100 mm,按“确定”按钮,保存定义的毛坯并且退出本操作。 打开菜单“零件/安装夹具”,或单击夹具图标,系统弹出“选择夹具”对话框。在“选择零件”列表框中选择已定义毛坯。在“选择夹具”列表框中选择平口钳,按“确定”按钮。4.打开菜单“零件/放置零件”,或单击放置零件图标,系统弹出“选择零件”对话框,在列表中点击所需的零件,选中的零件信息加亮显示,按下“安装零件”按钮,系统自动关闭对话框,零件将被放到机床上。5.毛坯在放置到工作台(三爪卡盘)后,系统将自动弹出一个小键盘,通过按动小键盘上的方向按钮,实现零件的平移和旋转。再按小键盘上的“退出”按钮,关闭小键盘。6.打开菜单“机床/基准工具„”,或单击基准工具图标,系统弹出“基准工具”对话框。选择φ14×75 mm的刚性芯棒基准工具,按“确定”按钮,刚性芯棒基准工具被放到机床上。7.点击机床操作面板中“紧急停止”,“启动”操作按钮,加载驱动,当“机床电机”和“伺服控制”指示灯亮,表示机床已被激活。在回零指示状态下(回零模式),选择机床操作面板上的“X轴”、“Y轴”、“Z轴”,点击“+”按钮,此时X轴、Y轴、Z轴将回零,当回到机床参考点时,相应操作面板上“X原点灯”、“Y原点灯”、“Z原点灯”的指示灯亮。 8.点击机床操作面板中“手动”操作按钮,将机床切换到JOG状态,进入“手动”方式,点击MDI键盘的“POS”按钮,LCD显示刀架在机床坐标系中的坐标值,将零件毛坯移近基准工具,准备刚性芯棒采用检查塞尺松紧的方式对刀。 (1).利用机床操作面板上的选择轴按钮,单击选择“X轴”,再通过轴移动键“+”,“-”,采用点动方式移动机床,将装有基准工具的机床主轴在X方向上移动到工件左侧,借助“视图”菜单中的动态旋转、动态放缩、动态平移等工具,调整工作区大小到工件左侧的大致位置。取正向视图,点击菜单“塞尺检查/1mm”,安装塞尺。 (2).点击机床操作面板上“手动脉冲”按钮,切换到手轮方式,点击操作面板右下角的“H”拉出手轮,选中X轴,调整手轮倍率。按鼠标右键为主轴向X轴“-”方向运动,按鼠标左键为主轴向X轴“+”方向运动,如此移动芯棒,使得提示信息对话框显示“塞尺检查的结果:合适”。 (3).记下塞尺检查结果为“合适”时LCD界面中显示的X坐标值,此为基准工具中心的X坐标,记为X1=-578.000 mm;将基准工件直径记为X2=14.000 mm,将塞尺厚度记为X3=1.000 mm,则:工件上表面左下角的X向坐标为:基准工具中心的X坐标+基准工具半径+塞尺厚度,即:X=X1+X2/2+X3=-578+7+1=-570 mm。 (4).在不改变Z向坐标的情况下,将刚性芯棒在JOG手动方式下移动到零件的前侧,同理可得到工件上表面左下角的Y坐标:Y=Y1+Y2/2+Y3=-473+7+1=-465 mm。9.打开菜单“机床/选择刀具”,或单击选择刀具图标,选择φ20 mm的键槽铣刀,按“确定”按钮。点击机床操作面板中“手动”操作按钮,将机床切换到JOG状态,进入“手动”方式,为主轴装上实际加工刀具,点击MDI键盘的“POS”按钮,LCD显示刀架在机床坐标系中的坐标值。 利用机床操作面板上的选择轴按钮,单击选择“Z轴”,再通过轴移动键“+”,“-”,采用点动方式移动机床,将装有刀具的机床主轴在Z方向上移动到工件上表面的大致位置。类似在X,Y方向对刀的方法进行塞尺检查,得到“塞尺检查:合适”时Z的坐标值,记为Z1=-247.000 mm。则相应刀具在工件上表面中心的Z坐标值为:Z=Z1-塞尺厚度=-247-1=-248 mm。 点击MDI键盘的“OFFSET SETING”按钮,进入参数设置画面,输入刀具半径补偿D01=10.000 mm ,再点击“坐标系”软键,进入坐标系设定画面,将通过对刀得到的坐标值(X、Y、Z)输入G54坐标系。10.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮,输入O4;G01 X0 Y0 Z20.;再点击机床操作面板中“自动运行”,“循环启动”操作按钮,将刀具移动到刀具起点。 11.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮。打开菜单“机床/DNC传送„”,在打开文件对话框中选取文件。在文件名列表框中选中文件O3,按“打开”确认。按LCD画面软键“[(操作)]”,再点击画面软键向右,再按画面“[READ]”对应软键。在MDI键盘在输入文件名O3。点击画面“[EXEC]”对应软键,即输入预先编辑好的铣削加工程序,并在LCD显示。 12.点击机床操作面板中“自动运行” 操作按钮,点击MDI键盘的“CUSFOM GRAPH”按钮,程序执行转入检查运行轨迹模式;再点击机床操作面板中“循环启动”操作按钮,即可观察数控程序的运行轨迹。 13.点击MDI键盘的“CUSFOM GRAPH”按钮,再点击机床操作面板中“循环启动”操作按钮,即可加工零件。14.打开菜单“文件/另存项目”,系统弹出“选择保存类型”对话框,按“确定”按钮。系统弹出“另存为”对话框,输入O3.mac文件名,保存在桌面,按“保存”按钮。 六、数控铣床实验二(1)、实验内容 如图B所示,毛坯尺寸为150×80×30,起刀点位置在编程坐标系的(0,0,20)处,按图示的工件尺寸编制铣削加工程序并仿真。突台高5 mm,孔深10 mm,选用φ8 mm的键槽铣刀,φ20mm钻头,F 60 mm/min, S 750r/min。 (2)、实验零件图样 图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系统仿真软件面板操作过程 1.进入宇龙数控加工仿真系统3.7版,首先启动加密锁管理程序,然后启动数控加工仿真系统。 2.打开菜单“机床/选择机床„”,或单击选择机床图标,系统弹出“选择机床”对话框。选择数控系统FANUC0i的铣床,选择标准,按“确定”按钮,系统即可切换到铣床仿真加工界面。3.打开菜单“零件/定义毛坯”,或单击定义毛坯图标,系统弹出 “定义毛坯”对话框,点击尺寸输入框,改变毛坯尺寸为150×80×100 mm,按“确定”按钮,保存定义的毛坯并且退出本操作。 打开菜单“零件/安装夹具”,或单击夹具图标,系统弹出“选择夹具”对话框。在“选择零件”列表框中选择已定义毛坯。在“选择夹具”列表框中选择平口钳,按“确定”按钮。4.打开菜单“零件/放置零件”,或单击放置零件图标,系统弹出“选择零件”对话框,在列表中点击所需的零件,选中的零件信息加亮显示,按下“安装零件”按钮,系统自动关闭对话框,零件将被放到机床上。 5.毛坯在放置到工作台(三爪卡盘)后,系统将自动弹出一个小键盘,通过按动小键盘上的方向按钮,实现零件的平移和旋转。再按小键盘上的“退出”按钮,关闭小键盘。6.打开菜单“机床/基准工具„”,或单击基准工具图标,系统弹出“基准工具”对话框。选择φ14×75 mm的刚性芯棒基准工具,按“确定”按钮,刚性芯棒基准工具被放到机床上。7.点击机床操作面板中“紧急停止”,“启动”操作按钮,加载驱动,当“机床电机”和“伺服控制”指示灯亮,表示机床已被激活。在回零指示状态下(回零模式),选择机床操作面板上的“X轴”、“Y轴”、“Z轴”,点击“+”按钮,此时X轴、Y轴、Z轴将回零,当回到机床参考点时,相应操作面板上“X原点灯”、“Y原点灯”、“Z原点灯”的指示灯亮。 8.点击机床操作面板中“手动”操作按钮,将机床切换到JOG状态,进入“手动”方式,点击MDI键盘的“POS”按钮,LCD显示刀架在机床坐标系中的坐标值,将零件毛坯移近基准工具,准备刚性芯棒采用检查塞尺松紧的方式对刀。 (1).利用机床操作面板上的选择轴按钮,单击选择“X轴”,再通过轴移动键“+”,“-”,采用点动方式移动机床,将装有基准工具的机床主轴在X方向上移动到工件左侧,借助“视图”菜单中的动态旋转、动态放缩、动态平移等工具,调整工作区大小到工件左侧的大致位置。取正向视图,点击菜单“塞尺检查/1mm”,安装塞尺。 (2).点击机床操作面板上“手动脉冲”按钮,切换到手轮方式,点击操作面板右下角的“H”拉出手轮,选中X轴,调整手轮倍率。按鼠标右键为主轴向X轴“-”方向运动,按鼠标左键为主轴向X轴“+”方向运动,如此移动芯棒,使得提示信息对话框显示“塞尺检 查的结果:合适”。 (3).记下塞尺检查结果为“合适”时LCD界面中显示的X坐标值,此为基准工具中心的X坐标,记为X1=-583.000 mm;将基准工件直径记为X2=14.000 mm,将塞尺厚度记为X3=1.000 mm,则:工件上表面左下角的X向坐标为:基准工具中心的X坐标+基准工具半径+塞尺厚度,即:X=X1+X2/2+X3=-583+7+1=-575 mm。 (4).在不改变Z向坐标的情况下,将刚性芯棒在JOG手动方式下移动到零件的前侧,同理可得到工件上表面左下角的Y坐标:Y=Y1+Y2/2+Y3=-463+7+1=-455 mm。9.打开菜单“机床/选择刀具”,或单击选择刀具图标,选择φ8 mm的键槽铣刀,按“确定”按钮。点击机床操作面板中“手动”操作按钮,将机床切换到JOG状态,进入“手动”方式,为主轴装上实际加工刀具,点击MDI键盘的“POS”按钮,LCD显示刀架在机床坐标系中的坐标值。 利用机床操作面板上的选择轴按钮,单击选择“Z轴”,再通过轴移动键“+”,“-”,采用点动方式移动机床,将装有刀具的机床主轴在Z方向上移动到工件上表面的大致位置。类似在X,Y方向对刀的方法进行塞尺检查,得到“塞尺检查:合适”时Z的坐标值,记为Z1=-317.000 mm。则相应刀具在工件上表面中心的Z坐标值为:Z=Z1-塞尺厚度=-317-1=-318 mm。 点击MDI键盘的“OFFSET SETING”按钮,进入参数设置画面,输入刀具半径补偿D01=4.000 mm ,刀具长度补偿H02=100.000 mm,再点击“坐标系”软键,进入坐标系设定画面,将通过对刀得到的坐标值(X、Y、Z)输入G54坐标系。 10.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮,输入O5;G01 X0 Y0 Z20.;再点击机床操作面板中“自动运行”,“循环启动”操作按钮,将刀具移动到刀具起点。 11.点击机床操作面板中“编辑”操作按钮,再点击MDI键盘的“PROG”按钮。打开菜单“机床/DNC传送„”,在打开文件对话框中选取文件。在文件名列表框中选中文件O4,按“打开”确认。按LCD画面软键“[(操作)]”,再点击画面软键向右,再按画面“[READ]”对应软键。在MDI键盘在输入文件名O4。点击画面“[EXEC]”对应软键,即输入预先编辑好的铣削加工程序,并在LCD显示。 12.点击机床操作面板中“自动运行” 操作按钮,点击MDI键盘 的“CUSFOM GRAPH”按钮,程序执行转入检查运行轨迹模式;再点击机床操作面板中“循环启动”操作按钮,即可观察数控程序的运行轨迹。 13.点击MDI键盘的“CUSFOM GRAPH”按钮,再点击机床操作面板中“循环启动”操作按钮,即可加工零件。再打开菜单“机床/选择刀具”,或单击选择刀具图标,选择φ20 mm的钻头,按“确定”按钮。点击机床操作面板中“自动运行”、“循环启动” 操作按钮,继续加工零件。 14.打开菜单“文件/另存项目”,系统弹出“选择保存类型”对话框,按“确定”按钮。系统弹出“另存为”对话框,输入O4.mac文件名,保存在桌面,按“保存”按钮。 JSP编程实验报告 学生姓名:学生班级:学生学号:指导教师:实验n(n-实验顺序号):实验名称 一、实验目的二、实验内容及步骤 三、源代码 四、运行界面 五、收获和体会第四篇:数控编程仿真实验报告
第五篇:JSP编程实验报告