linux定时器编程实验报告,PLC定时器指令实验报告

《PLC定时器指令实验报告》由会员分享,可在线阅读,更多相关《PLC定时器指令实验报告(4页珍藏版)》请在人人文库网上搜索。

1、实验二: 定时器指令实验一、实验目的熟悉定时器指令以及实验设备的使用方法二、实验设备可编程序控制器 编程器或者计算机编程软件SAC-PC可编程序控制器教学设备软件。三、实验步骤1、根据控制要求和I/O的地址分配表编制梯形图程序,输入设备(PC机或编程 器)与CPMIA正确连接;2、检查确认连接无误后,接通电源(实验中不允许带电插,拔电器插头)。3、正确输入程序,调试并运行程序,观察输出的变化情况并做好实验记录。4、实验结束,经教师认可后有序退出并切断电源,总结实验结果。四、按照下面给出的控制要求编写梯形图程序,输入到可编程序控制器中运行,根据运行情况进行调试,修改程序,直到通过为止。1、通电延。

2、时控制梯形图:程序:LD 00000TIM 001#020LD TIM001OUT 01000时序图:2、断电延时控制梯形图:程序:LD 00001TIM 001#020LD NOT 00001OR NOT TIM001OUT 01000 时序图: 3、 通电断电延时控制梯形图:程序:LD 00000TIM 001#020LD 00001TIM 002#020LD NOT 00001OR NOT TIM002AND TIM001OUT 01000 时序图:4、 闪烁报警控制梯形图:程序:LD 00000AND NOT TIM002TIM 001#020LD 01000TIM 002#020LD TIM001OUT 01000时序图:五、实验心得通过本次实验熟悉用计算机编程软件操作,梯形图的输入,编辑和检查程序并且掌握程序在线运行的步骤以及学习如何调试程序的基本方法,练习了使用定时器做通电、断电、通断电以及闪烁报警的延时效果,合理地配置定时器的常开、常闭开关可以达到要求的延时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ClassWizard中响应ID为~Dlg中的WM_TIMER消息。 使用SetTimer(nIDEvent,time,NULL)来建立一个定时器,关闭定时器用KillTimer(nIDEvent)函数。 然后可以响应ON_WM_TIMER消息来响应一个定时器完成一次记时后的程序。 响应方式如下: void CTimeDlg::OnTimer(UINT nIDEvent) { if(nIDEvent==1000)//间隔为5秒 { //处理事件 } elseif(nIDEvent==1001)//间隔为10秒 { //处理事件 } CDialog::OnTimer(nIDEvent); } 以下是给出一个串口通信定时检查接收数据的部分代码 void CMyDlg::OnOpenCom() { // TODO: Add your control notification handler code here if( f_open_com==true ) { f_open_com = false; GetDlgItem(IDC_OPEN_COM)->SetWindowText("打开通信端口"); CloseHandle(hComm); KillTimer(1000); /// 关闭定时器 return ; } SetTimer(1000, 1000, NULL); ///nIDEvent==1000,time=5000ms const char *ComNo; DCB dcb; string temp("COM1"); ComNo = temp.c_str(); hComm = CreateFile( ComNo , GENERIC_READ|GENERIC_WRITE , 0 , NULL , OPEN_EXISTING , 0 , 0); if( hComm==INVALID_HANDLE_VALUE ) /// 如果端口未打开 { MessageBox("打开通信端口出错!" , "Comm Error" , MB_OK); return ; } /// 将dcb地址传入,以取得通信参数 GetCommState(hComm,&dcb); /// 得知目前通信状态 dcb.BaudRate = CBR_9600; dcb.ByteSize = 8; /// 字节为8 dcb.Parity = NOPARITY; /// Parity为None dcb.StopBits = ONESTOPBIT; /// 1个停止位 if( !SetCommState( hComm , &dcb)){ MessageBox("通信端口设置出错!" , "Set Error" , MB_OK ); CloseHandle(hComm); return; } GetDlgItem(IDC_OPEN_COM)->SetWindowText("关闭通信端口"); f_open_com = true; } void CMyDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default char inbuff[1024]; DWORD nBytesRead , dwError; COMSTAT cs; /// 取得状态 ClearCommError( hComm , &dwError , &cs); /// 数据是否大于所准备的缓冲区 if( cs.cbInQue > sizeof(inbuff) ) { PurgeComm(hComm , PURGE_RXCLEAR ); /// 清除通信端口数据 return ; } ReadFile(hComm , inbuff , cs.cbInQue , &nBytesRead , NULL ); //接收通信端口的数据 inbuff[cs.cbInQue] = '\0'; MessageBox("打开通信端口出错!" , "Comm Error" , MB_OK); m_Receive.Format("%s",inbuff); UpdateData(false); CDialog::OnTimer(nIDEvent); } 李杨: for(int i=0; ;i++ ) { ... Sleep(5); if(i>...) {AfxMessageBox("错误XXX"); return;} }//跳出后记得停止一些机器动作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值