数据采集通道与PLC通讯程序

数据采集通道与PLC通讯程序

ID:41673944

大小:56.18 KB

页数:5页

时间:2019-08-29

数据采集通道与PLC通讯程序_第1页
数据采集通道与PLC通讯程序_第2页
数据采集通道与PLC通讯程序_第3页
数据采集通道与PLC通讯程序_第4页
数据采集通道与PLC通讯程序_第5页
资源描述:

《数据采集通道与PLC通讯程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、AS1117o+5VVDDAllAl2Al3Al4Al32图3单片机数据采集与通讯原理图3.1软件设计下面为32通道的AI采集并通过RS-485与PLC通讯,进行参数传递的部分C程序,包括系统主程序、串行口通讯处理程序、ADC初始化等部分。主要功能是堆32个AI通道进行采集,并进行数值处理(8次平均)后,通过RS・485总线送给PLC。////主程序//voidmain(void)unsignedchari;unsignedcharj;unsignedchark;EA=0;WDTCN=Oxde;//禁止看门狗定吋器WDTCN=Oxad;SYSCLKJnit();//初始化震荡器POR

2、TJnit();//初始化数据交叉开关和通用IOUARTOJnit();//初始化UART0ADCOJnit();//初始化ADC//Timer3」nit(SYSCLK/SAMPLE_RATE);//初始化Timer3作为ADCO的采样率//Timer2」nit(SYSCLK/12/1000);//初始化Timer2,ImS产生屮断Timer2_Init(922);ADCEN=1;//允许ADC//WDTCN=0xa5;〃启动看门狗定时器//WDTCN=Oxff;〃锁定看门狗定时器EA=1;//允许所有中断//////主循环程序//while(1)fi//WDTCN=0xa5;〃重置

3、看门狗定时器/*if(ad_count>7)〃如果AD转换8次tad_count=0;//AD转换次数计数器清零for(i=0;i<24;i++)r//求平均result_pj[i]=((result[ij)»3);//AD转换结果除以“8”result[i]=0;}//AD结果的累加和清零}*/////串行口处理程序if(inbufful)f〃收到一帧信息,而且本机站地址?I〃收到一帧信息处理inbufful=0;〃收到一帧信息标志复位puchmsg=inlast;crc(puchmsg,3);if(*(inlast+3)==crclo&&*(inlast+4)==crchi)/

4、/CRC正确?//CRC正确后的处理if(inbuf!0]==STATION_NUMER)〃收到一帧信息,而且本机站地址?outbuf[0]=01;outbuf[1]=inbuf[1];outbuf[2]=inbuf[2];j=((inbuf[2J&0x03)-l)«3;for(i=0;i<8;i++)〃本机地址送发送缓冲区第一字节//收到的命令送发送缓冲区第一字节//收到的组号送发送缓冲区第一字节〃取得本“组”号k=2*i+3;outbuf[k++]=result_pj[j]»8;outbuf[k]=result_pj0++];//outlast=outbuf;〃发送缓冲区起始地址

5、一>发送指针puchmsg=outlast;crc(puchmsgJ9);*(outlast+19)=crclo;*(outlast+20)=crchi;sendtx(21);}//CRC正确处理结束}〃收到一帧信息处理结束}〃循环扫描程序结束}〃主程序结束////UART发送数据启动子程序//voidsendtx(unsignedcharchd){if(t_empty){txen=l;txchsh=chd;fschsh=0;t_empty=0;rs485timersendl=l;//TI=1;//占总线〃本次发送的长度//发送指针清零〃置发送缓冲器“不空”标志〃启动延迟定时器//系

6、统时钟初始化voidSYSCLK」nit(void){inti,j;OSCXCN=0x67;for(j=0;j<50;j++){for(i=0;i<256;i++);}while(!(OSCXCN&0x80));//延时计数器//启动外部震荡器(11.0592mHz)//等待振荡器启动(>1ms)//等待振荡器稳左OSCICN=0x88;//选择外部振荡器作为系统时钟源并允许丢失for(j=O;j<100;j++){for(i=0;i<256;i++);}}//延时lOmS以上〃时钟监测器TRI=1;CKCON

7、=0x10;PCON

8、=0x80;IE

9、=0x10;inlast=inb

10、uf;inbufful=O;txen=0;TI=1;rs485_timer_send1=0;rs485timersend2=0;rs485_timer_receive1=10;rs485timerreceive2=0;////UARTO初始化//////配置UART,使用定时器1为波特率发牛器和8-N-1.//voidUARTO_Init(void){//SCON=0x50;//SCON:模式1,8位UART,使能RX//TMOD=0x20;//TMOD:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。