《基于有协议的单片机与PLC通信》由会员分享,可在线阅读,更多相关《基于有协议的单片机与PLC通信(17页珍藏版)》请在金锄头文库上搜索。
1、基于有协议的单片机与PLC通信技术研究 杨志军 020320132 课题研究的意义 编程语言简单 抗干扰能力强 可靠性高 但也有缺点 如数据处理能力和运算功能不够强等 单片机具有体积小 控制功能强 扩展方便 移动灵活等的特点 单片机与 通信 在一定程度上可以代替 机对 的监控 还可以使 与单片机的优势互补 使 的应用更具有灵活性 单片机与 通信系统在工业上主要用于一些相对小规模的控制系统 课题分析 基于有协议的单片机与 通信技术研究 拿到一个题目 应该首先弄懂它的意思 什么是通信 什么是通信协议 单片机与 之间是怎样 以什么方式实现通信 用什么单片机与 通信 毕业设计的内容 可编程控制器作为工
2、业控制的主要元件 大量用于工业控制中 为了与其它设备进行数据交换 大多数可编程控制器都提供了串行通信接口 这样它的内部继电器状态 数据寄存器数据等都可以传送到其它设备 可编程控制器提供了用于串行通信的数据传输规则 即有协议通信 本设计要求设计一个单片机系统 通过串行通信接口与可编程控制器进行数据交换 用到的一些硬件与软件 欧姆龙 的 型机 自己设计的单片机系统一个 芯片用89S51 具有键盘 LED数码管 RS 232C接口及单片机系统外围必须的相关电路 机一台 用于把PLC梯形图烧入CQM1H 编程器 把单片机程序烧到单片机中 KeilC51软件 编写单片机汇编程序并编译 CX Prog 2
3、 03 用于编写PLC梯形图 系统功能确定一 怎么设计单片机系统的复位电路 怎么设计单片机系统的时钟电路 怎么设计单片机系统的键盘 需要几个按键 怎么设计单片机系统的LED数码管显示电路 需要几位数码管 怎么设计单片机系统的RS 232接口 用什么芯片实现TTL电平与正负逻辑电平转换 系统功能确定二 根据思考和研究可做出如下选择 单片机采用上电复位电路即可时钟电路采用内部振荡方式 因选择串行异步通信方式 定时器 工作于模式 作为波特率发生器 所以选择晶振 两个电容各取 左右即可 考虑89S51内部可用的RAM不是很大 系统研究的目的主要是通信的实现 分析通信协议中命令帧及响应帧的特点后 选择7
4、个按键 一个4位的LED数码管即可实现通信 用一个MAX232芯片即可实现电平转换 实现对RS 232接口的设计 通信协议格式帧一 本系统要求编写单片机程序 读写可编程控制器 PLC 的数据并显示 因此下面分析通信协议中的读写命令帧 对比可知 如果WR命令一次只写入一个字的数据 则RR与WR命令帧长度都为17位 FCS两位 故可用单片机RAM中30H到40H单元存放命令帧 供单片机发送 通信协议格式帧二 分析通信协议中的RR与WR的响应帧的特点以确定该怎么接收和显示数据 考虑用RR命令一次最多读取3个字的数据 故可用单片机RAM中52H 5FH单元存放接收到的数据 包括响应码和读出的数据 通过
5、键盘控制数据显示 系统总体功能概括 PLC 系统具体功能及程序流程 是 否 系统的特点一 本系统的一个特点是 省电 在一定程度上降低功耗 在设计点亮LED数码管时 按0 1 2 3键分别点亮0 5 0 8秒后熄灭 减少了单片机对外部负载的驱动时间 在按SHOW键显示接收的数据时 第一次用LED的低两位显示响应码 最后一次按下时熄灭数码管 也减少了系统功耗 系统的特点二 系统的另一个特点是 结构简单 操作 读数方便本系统设计中只用到7个独立式按键 一个四位的LED数码管 一个RS 232接口及单片机简单的外围电路就可以实现与PLC通信 读数方便表现在对响应帧的显示上 设单片机中响应码及数据存放如
6、下 系统的特点二 设接收到一串响应帧如下 0 0 R R 0 0 1 2 3 4 5 6 7 8 A B E F FCS FCS CR 单片机收到后把有用的数据从响应码 开始存放在 到 中 如下表 系统的特点二 第一次按下SHOW键时 数码管显示 0 0 第二次按下SHOW键时 数码管显示 1 2 3 4 第三次按下SHOW键时 数码管显示 5 6 7 8 系统的特点二 第四次按下SHOW键时 数码管显示 A b E F 第五次按下SHOW键时 数码管熄灭 返回键盘扫描 这样显示有一个规律 就是 顺着存 逆着显 即把接收到的响应帧按顺序从52H单元存放 50H和51H初始化时存放FFH 而把数
7、据取出来显示的时候是以4位数据为一段 从最末一位开始逆着顺序取出来分别在数码管上的低位到高位动态显示 每按一次SHOW键 显示下一个四位 这样的显示是根据响应帧的特点及人们读数的习惯确定的 因此比较直观方便 这也是我选择4位数码管的原因 如果采用1位数码管 当然也可以显示 但是读数据的时候会很乱很麻烦 系统存在的不足 1 由于系统是基于通信技术的研究设计的 而不是根据生产实际来设计的 所以如果要真正用于生产 必定还要考虑很多因数 还有很多要改进的地方 2 由于判断是否有键按下没用才用中断 都是根据实际动作自动返回键盘扫描的 在按RR与WR键的时候有指令JNBRI 等 如果通信正常就没事 如果通信有问题 RI一直不能为1的话 就会陷于死循环 解决办法 在启动发送和接收子程序开启定时中断 键盘扫描返回时关定时中断 或者使用外部中断INT0等也可