单片机 串口 波特率 c语言 9600 11.0592mhz t1,PLC与单片机串口通信的实现

党强

摘要:本文主要进行探讨单片机与可编程逻辑控制器plc之间的串行通信以及各个系统在通信技术中的应用,本文主要以at89c51单片机和fpi系列的单片机为例进行阐述单片机与plc的串行通信。

关键词:plc 单片机 串行通信

中图分类号:TP273.5 文献标识码:A 文章编号:1007-9416(2014)04-0123-02

随着科学技术、网络通信技术以及自动化技术的快速发展,可编程逻辑控制器(plc)的功能日益强大,plc不仅能够实现逻辑控制,而且还能实现数字控制、远程控制以及运动控制等,plc逻辑控制器已经广泛应用于电力、交通运输、冶金、汽车制造等等各行各业。

1 单片机与plc串行通信的特点

plc和单片机各有各的优点和长处,可编程逻辑控制器使用简单、抗干扰能力强、运行可靠,并具有较强的驱动能力,可以在条件恶劣的环境下工作,plc主要用于机械设备的控制plc与现在的以太网、adsl等宽带技术相比,plc具有以下优点:plc分布广泛;接入方便;并且plc接入成本比较低,费用低,可以减轻用户的负担。单片机体积小、价格低,并且使用方便灵活,单片机可以用于办公设备、家用电器、仪器仪表以及传感内部的核心部位。在实际的应用中,需要把单片机和plc两者结合起来从而可以发挥各自优点和长处。单片机和plc通过通信进行交换信息,从而组成控制系统,实现实时采集。

1.1 单片机串口介绍

AT89S52单片机内部含有一个可编程全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。

在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。

串行口的发送过程由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。

串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。TI和RI是由硬件置位的,但需要用软件复位。

1.2 单片机串口控制寄存器

SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。

1.3 单片机多机通信方案选择

根据需要,各片单片机有相等的权限,每块单片机都可设置为主机或从机,因此单片机的串口应具有双向可选择性。采用两个同相三态门加上一个反相器即可构成这样的接口,并由单片机的一根引脚控制单片机串口的连接方式。

发送数据区可存放1B~48B的数据,以空字符'\0'作为发送数据结束标志。接收数据时以空字符作为接收有效数据结束标志。通信结束时,从机发回收发长度作为校验。

2 通信接口电路的设置

2.1 接口电路的设计

rs—232c接口是plc的一个标准的接口,主要采用eia电平逻辑,而at89c51主要采用ttl/cmos电平逻辑,由于这些电平不能互相兼容,所以应该将eia电平逻辑和ttl/cmos 电平进行转换,在我们使用的max232串行通信芯片中主要是单片集成双rs—232接收器。这种串行通信接口主要采用+—5v的电源供电,然后外接四支电容形成标准的rs—232通信接口,从而可以使eia电平和ttl/cmos电平之间的转换,经过转换之后两者就可以通过rs—232接口实现信号之间的传送。

2.2 串行通信接口的设置

2.2.1 单片机串行口的设置

at89c51单片机内部有一个串行口,txd(p3.1)为发送端,rxd(p3.0)为接收端,at89c51主要有scon和pcon两个特殊的寄存器进行控制,在软件设置的四种通信方式工作时,串行口主要为8位异步通信接口,非常适合于集成点对点连接接口的8位数据的传输,每帧信息有一个起始位、八个数据位和一个停止位,at89c51的cpu晶振为11.0592mhz时,波特率主要采用9600bps,波特率主要有串行口方式寄存器smod的状态和定时器t1的溢出率进行确定。

2.2.2 plc串行口参数的设置

plc主要通过进行设置系统寄存器来实现串行接口初始化。比如我们使用的fp1的系统寄存器no.413可以采用指定的rs232串口波特率控制字可以设置为h00,即一个起始位;8个数据位;一个停止位,没有奇偶校验位。串口波特率设置的寄存器no.414可以采用指定的rs232c串口波特率,可以设置为h01,其中波特率为9600bps;串口方式设置寄存器no.412可以设置为h01,这种方式成为计算机连接通信方式,站号设定寄存器可以no.415可以设置为h01。

3 单片机与plc串行口的通信过程

单片机的串行端口有一个数据寄存器sbuf,在特定的条件下,如果单片机向sbup写入数据就启动了发送过程,如果单片机向sbup读入数据就启动了接受过程,当单片机与plc通过rs—232c串行接口进行通信时,发送过程主要有单片机向plc发出命令帧格式,发送过程结束之后,plc做出响应,同时单片机接受响应帧格式,这种过程称为接受过程通信过程主要由单片机进行启动和接受不需要运用plc进行编制程序。其中发出命令帧格式主要包括plc站号、特殊标志位以及呼叫字符等,发出命令帧。endprint

4 单片机与plc的应用

plc是建立在单片机之上的一种科技产品,单片机是一种集成电路,单片机可以构成多种多样的应用系统,可以是大型、中型、小型以及微型的,而plc是单片机应用系统中的一个特殊的系统,单片机可以配合外围的电路设计出各种功能,单片机一般采用c语言、汇编语言等,这种系统可以应用于各个领域内,并且也非常安全可靠。单片机的应用系统是非常广泛的,但是单片机的使用和维护是非常困难的,从plc和单片机的系统的选用上来讲对于单项的工程采用plc是非常快捷、并且成功率高、可靠性好,但是成本比较高。对于大量的配套的项目来讲,采用单片机具有成本低、效益高等优点。随着科学技术不断进步和更新,在单片机系统中嵌入plc系统性能不仅可以得到保证,而且使工程项目的效益也得到保证。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。

单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。

构成较大规模的检测、控制系统,经常要采用多个单片机,组成可以通信的多机系统。Mcs一51系列单片机为实现多机通信联网设计了方便的串行通信接口功能。将多个Mcs一51单片机组成串行总线形式的相互通道,通过写单片机的串行控制方式寄存器,将串行口置成方式2或方式3,就可以实现主机与分机之间的串行通信。这种多机系统结构简单,应用广泛,但它只能实现由主机呼叫分机,然后实现主机与分机之间的全双工串行通信。我们在监控系统中要求既有主机与分机主动通信,又有分机与主机主动通信,这种结构的多机系统就无法满足要求。

5 总结与展望

串行通信是一种应用广泛的通信方式,本文主要以at89c51单片机和plc之间的串行通信为例进行探讨,并由此得出串行通信技术是一种实用性强;结构简单、运行可靠、抗干扰能力强,并且使用于远距离传输的一种通信方式。随着科学技术的不断进步,对单片机以及plc通信系统不断的开发利用,进一步将两者有效的结合起来实现通信技术,从而创造更高的应用价值。

多机协同工作已是单片机发展的一个重要趋势,目前单片机多机通信的主要方式仍然是主从式多机通信系统。

单片机多机通信的目的是实现分布式处理系统,单片机多机通信的方式有很多种,应用前景广阔,非常具有研究意义!

参考文献

[1]李生军,李少蒙.《单片机与plc之间的串行通信实现》.化工自动化及仪表,2010,37(2):78--80.

[2]李辉,郑宁.《plc与单片机之间的串行通信及应用》.电工技术杂志,2013(8):67--68.

[3]赵勇.《单片机与可编程控制器的串行通信及应用》.西安邮电学院学报,2010,10(1):36--37.

[4]赵淑玉,孟宝全.《单片机和plc的应用与串行通信》.科技信息,2011(21):52--54.

[5]徐济仁,许阳明.《电力线通信(plc)技术及应用》.自动化博览,2013,20(6):86--88.endprint

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP中的正则表达式函数preg_

preg_match(); //用于正则表达式的匹配,且只匹配一次 preg_match_all();//用于正则表达式的匹配,会对所有符合规则的都进行匹配 preg_replace(); //正则表达式替换函数 preg_splite(); //正则分割函数 preg_match ( mode, string subject , ar…

vue 离开页面时间_vue页面离开后执行函数的实例

vue页面离开后执行函数的实例如下所示:destroyed: function () {console.log("我已经离开了!");this.doSomething();},说明:destroyed是与methods、mounted同层级的以上这篇vue页面离开后执行函数的实例就是小编分享给大家的全部内…

Linux批量删除文件

find [目录名] -name [文件名] -exec rm -rf {} \; 例如:find ./ -name *.raw -exec rm -rf {} \; 其中, -exec 表示后面执行命令 {} 表示查询到的文件名 -rf 为删除命令rm的参数,r 表示递归删除, f表示不需要确认,两个…

c语言选择结构程序设计报告,C语言学习与总结---第四章:选择结构程序设计

选择结构程序设计4.1 if语句4.2 关系运算符和关系表达式4.2.1 关系运算符4.2.2 关系表达式4.3 逻辑运算符和逻辑表达式4.3.1 逻辑运算符4.3.2 逻辑表达式4.4 条件运算符和条件表达式4.5 选择结构的嵌套4.6 switch语句4.7 程序应用4.1 if语句If语句有三种基本形式(1)if (判断条件…

jQuery 请指出'$'和'$.fn'的区别?或者说出'$.fn'的用途。

http://hi.baidu.com/chy0806css/item/acc52425099c30ff50fd87eb Jquery为开发插件提供了两个方法,分别是: $.extend(obj);$.fn.extend(obj); 1.那么这两个分别是什么意思? $.extend(obj);是为了扩展jquery本身,为类添加新的方法 …

gentoo 安装时的网络配置

在变换根目录(chroot)前,需要拷贝dns文件 cp -L /etc/resolv.conf/mnt/gentoo/etc/resolv.conf 在变换根目录(chroot)后 1. 修改主机名称 nano -w /etc/conf.d/hostname 2. 修改工作组名称 nano -w /etc/conf.d/domainname rc-update add domainname default 3…

[每日一题] 11gOCP 1z0-052 :2013-09-1 RMAN-- repair failure........................................A20...

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10859315 正确答案:D 一、模拟上题的错误: 1、删除4号文件 [oraclemydb ~]$ cd /u01/app/oracle/oradata/ocm/ [oraclemydb ocm]$ rm -rf users01.dbf2、…

c语言学习自我评价,学习自我评价4篇

学习自我评价4篇发布时间:2019-04-08在这次研究性学习中,我们小组在老师的指导下,通过全体成员的协作分工、研究探讨,集全体之智慧,个人之所学,充分将课本中的理论知识与生活实践相结合,用理论指…

c语言整型数组操作,c语言的数组操作|时刻需

不多说了直接上代码吧1.整型的可变长度的数组#includemain(){/* 测试可变长度的数组(整型的) start */int m;int *a,*b,*a_same,*b_same;printf("输入数组a的个数:\n");scanf("%d",&m);a (int*)malloc(m*sizeof(int));//动态分配数组print…

用Crossdev安装MIPS交叉编译工具链

例如执行这样的安装命令: crossdev -S --ex-gdb --without-headers -t mipsel-unknown-linux-gnu 首先,修改/etc/make.conf文件,在文件最后加上PORTDIR_OVERLAY/usr/portage/(不然会报错没有设置PORTDIR_OVERLAY) 然后…

kafka集群 kubernetes_为什么 Kubernetes 如此受欢迎?

点击上方蓝色“火丁笔记”关注我们,设个星标,每天学习全栈知识在撰写本文时,Kubernetes 已有 6 年历史[1]了,在过去的两年中,它的流行度不断提高,一直是最受欢迎的平台之一[2]。今年,它成为最受…

Python基础-作用域和命名空间(Scope and Namespace)

在Python中,对象是独立的,不同作用域中的不同名字都可以被绑定在同一个对象上,当然对这个对象的修改会影响所有的引用。赋值操作就是名字和对象的绑定或重绑定。这和C中的引用是一样的。 1,基础概念 1.1 命名空间(name…

android 动画 返回,Android“菜单图标变返回”动画

此例用到SVG动画,其中涉及三个XML文件,分别为:Vector矢量图,objectAnimator动画,以及一个animated-vector文件将前两个文件联合起来。1.在drawable文件夹下新建vector文件描述矢量图android:height"200dp"an…

TI Sitara AM335x系统之AM335x uboot spl分析

本文转载自nidetech的Blog芯片到uboot启动流程ROM → SPL→ uboot.img简介在335x 中ROM code是第一级的bootlader。mpu上电后将会自动执行这里的代码,完成部分初始化和引导第二级的bootlader,第二级的bootlader引导第三级bootader,在ti官方上…

安装vs2017出现闪退现象_二、vs2017出现闪退问题解决办法

1、出现“Project1.exe”(Win32): 已加载“C:\Users\Administrator\Documents\Visual Studio 2017\Projects\Project1\Debug\Project1.exe”。已加载符号。“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。“Project1.exe”(Win3…

Shell程序荟萃

--------------纯输出----------------1.sh #!/bin/shecho -e "Hello!world!\a\n"exit 0 --------------获得用户输入----------------2.sh #!/bin/shread -p "Please input your name:" nameecho -e "\nHello!$name"exit 0 --------------日期计…

android 安装第三方app,Android识别预装的第三方App方法实例

前言新买一台手机,里面会有很多App,有的属于系统App,不可卸载,有的属于第三方App,厂商会预装一些常用的或者给了他们广告费的App,这些是可以卸载的。如果要详细划分,系统App还可根据其路径不同进…

汽车动力电池

1 CE SMPS 1.1 术语 DSCG:Discharge,VBUS下拉放电电阻 flyback:反激 forward:正激 LISN:Line Impedance Stabilization Network SMPS:Switching Mode Power Supplies,开关电源的变压器在整流桥之…

mysql 碎片率_计算MySQL表碎片的SQL整理

原标题:计算MySQL表碎片的SQL整理这是学习笔记的第 2111 篇文章在之前整理过一版MySQL的数据字典,整理了一圈,发现远比想象的复杂。当然整理的过程不光是知识梳理的过程,也是转化为实践场景的一个过程,通过这样一个体系…