51单片机DIY做PLC编程.doc

上传人:hw****26 文档编号:3865180 上传时间:2019-08-12 格式:DOC 页数:10 大小:1.35MB
下载 相关 举报
51单片机DIY做PLC编程.doc_第1页
第1页 / 共10页
51单片机DIY做PLC编程.doc_第2页
第2页 / 共10页
51单片机DIY做PLC编程.doc_第3页
第3页 / 共10页
51单片机DIY做PLC编程.doc_第4页
第4页 / 共10页
51单片机DIY做PLC编程.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、51 单片机 DIY 做 PLC 编程有朋友想定制一个净水机控制器,有一些独特的功能要增加,但是商品控制板没有这样的功能,问我能否做一个,我觉得单片机完全能满足这种简单的控制需要,上手开始编程序时候突然感到,用 PLC 逻辑编这种功能是非常简单轻松的,而如果用汇编或 C 编却感觉有点棘手,编程效率不高,所以想为何不在单片机上实现 PLC 的逻辑呢?上网搜索尝试看能否找到合适的程序下载来稍微改改就能用的呢?方案几年前就有了,实际上是利用三菱的低档 PLC 编程软件编辑好梯形图,存盘后用专用的格式转换工具转换成HEX 单片机烧写文件烧进去,尝试下载三菱 PLC 工具软件,但是在我的 WIN7-64

2、 位系统上不能正常工作,好容易换了系统装好开发工具,但是初次上手这款开发工具,界面挺复杂的,懒得研究各个按钮的使用,由于是单片机的硬件,对于程序的编制和转换有很多限制条件,否则是转换不成功的,嫌麻烦,放弃!某宝倒是有百元 PLC 板出售,但是为了这么个简单的东西专门买个全功能板子有点浪费,而且其编程软件仍然是三菱的盗版软件,算了,再想办法把。由于工作中经常接触 PLC 程序,对其工作原理也略知一二,网上也有相关的说明介绍,其实就是三个主要步骤,第一步扫描 IO 输入,第二步执行逻辑,第三步输出逻辑到 IO,很简单的,最早 PLC 也是用单片机实现的,我为何不用汇编在 51 上搭建一个架构,简单

3、的逻辑编制进去就能运转呢?其中逻辑执行步骤还是有点意思的,需要把 PLC 逻辑翻译成单片机的汇编语言执行,这块开始也没有把握,后来搜索到一篇百度文章,介绍了一下三菱 PLC 逻辑是如何翻译成汇编的,我看了下估计其实是利用反汇编工具把 HEX 反编译成的 ASM 代码,并不清晰明了,而且还带着反汇编时候的行号,仅供参考了。搜索结果中也有几篇论文,涉及到在 51 单片机上实现 PLC 逻辑的内容,但是那些论文都是充数的,仅仅几个 IO 逻辑,没有什么定时器,计数器功能的体现,哎!仅供参考!看来这个 PLC 系统还是需要自己写了!OK!既然决定自己重写,那就开工吧!利用春节休假时间,编制了如下 AS

4、M51 汇编 PLC 代码:代码主要架构如下:1、IO 定义部分:根据所使用的单片机 IO 口数量,任意指定多少个 I 多少个 O,那几个脚是 I,哪几个是 O 都可以任意指定 ,在这个 51 系统里面设计了最大 32 个 I,32 个 O,占用 64 个位寻址区域,其实用不到那么多,也可以分配给其它需要的标志位用,因为 51 系统总可位寻址地址只有 128 位,需要仔细分配.2、位寻址变量定义(包括各类标志位,临时变量寄存器等等)目前设计了 8 个计时器的Timer DN, Timer EN,共 16 位,8 个计数器的 counter reset 和 counter DN 标志位共 16

5、个,专用于上升沿下降沿检测的标志位 4 对,占用 8 个,剩余用于临时变量,这些地址分配在这块变量定义区域可以根据需要任意调整3、内存规划,包括堆栈区的设置,定时器,计数器的累加值和预设值地址等等,目前初步定义 8 个计数器的当前计数值和预设值,8 个计时器的当前计数值和预设值,共占用 32 个内存地址,也可根据需要调整,51 单片机片内总的用户可用内存地址包括堆栈区只有 128个,实际去除位寻址区和堆栈区可用的估计只有 80 个左右,不过对于小程序应该够用的。没必要去增加成本扩展 RAM4、上电初始化,包括 0.01 秒微定时器设置,内存清零,中断设置,如果想增加串口功能也是可以的,51 本

6、来就有两个定时器,无非多写一个串口中断服务程序就是了。5、微定时器中断服务程序编写,单片机每 0.01 秒定时中断时执行,进行内存时基标志位刷新,用于提醒主程序相应时间到了,基本的时基设计了 0.01 秒,0.1 秒,1 秒,10 秒,1 分钟,1小时,1 天,1 周八个时间标志位,其实真没必要,不过自己编写架构就是好玩,想设计几个就设计几个哈哈!6、下面是主要 PLC 逻辑,执行时是不停扫描循环执行的,与真实的 PLC 运行结构是一样的,当然咱们编的就要简单许多了,没有那么多的功能。而且用汇编编写执行效率要比 C高,目前 1K 代码的汇编程序可以写好多,而如果用 C 写再编译就会大许多,很多

7、时候廉价小单片机就装不下了。7、扫描开始是对定时器计数器处理,如果某计时器的相应时基标志位置位,则处理对应程序用定时器的状态判断与设置,计数器内存累加,状态判断与设置,用于主逻辑执行部分执行;对于计数器主要是判断是否有计数器复位请求以及进行当前计数值与预设值是否相等判断,置位相应标志位.8、输入扫描,这块很简单,就是把输入 IO 口复制到内存相应区域内;9 正式逻辑执行:这块直接就是按照梯形图行的概念,每一个梯形图行,就是一段汇编代码,为了翻译时候方便,直接把逻辑就在注释行内形象的用符号画出来。逻辑的翻译还是有点技巧,实现了基本 IO 输入,与或非逻辑 ,定时器以及计数器功能,外加上升沿下降沿

8、判断等功能,这些基本的 PLC 功能都能在这个小架构里面实现 ,尽管不是十分完美例如定时器状态更新的时效性由于架构问题还不能达到每次扫描更新,对于上升下降沿的判断需要更多的内存和语句实现等等,但是对于简单的应用还是没有问题的.10 逻辑输出,这块也很简单,就是把对应的逻辑运算结果输出到单片机的 IO 口即可.11 后期操作部分,也就是每次扫描运算结束后还有余力进行其它需要功能的输出,这块在真正 PLC 里面也是很重要的,应该会进行逻辑效验,远程通讯等功能 ,咱这个就都简化掉了,仅仅为了测试扫描时间对一个内存变量进行增一操作而已,可以调用看看扫描周期时间是否超过了最小定时器时间等等辅助功能. 实

9、测 12M 时钟 0.01 秒执行了这个小逻辑多达 70 多遍!架构有了,具体逻辑要怎么写,最好还是在 PLC 模拟器上先试着编写一下,功能没问题了再抄到我们的单片机里面来,进行逐句翻译,因为单片机汇编语言的调试还是很麻烦的,毕竟不直观,还是在 PLC 模拟器里面做好了再搬进来比较好。Keil 里面编译成 HEX 文件后可以直接刷写进单片机使用了,真正用之前最好还是要根据单片机的晶振时钟,再调整一下微定时器的定时参数,尽量符合 0.01 秒的要求,不要偏差太大,还有一种方法是利用 proteus 软件仿真硬件运行也是不错的。通过反复修改汇编程序,通过仿真测试到目前为止我们只是完成了 PLC 芯

10、片逻辑的软件编写,下面就可以烧写进 51 内核的单片机内实际运行了,这里我使用的是 STC 的国产单片机,15W408 系列,DIP20 替换 AT89C2051 还能多增加几个 IO 脚,仅仅几元,价格便宜,1T 内核,性能强劲(之前写的 0.01 秒扫描 70 多次是在仿真环境下,12T 的 89C2051 达到的性能,如果使用 STC 的 1T 系列要注意实际运行速度会增加 12 倍,达到 0.01 秒扫 700 多次,有时候太快了也会引起烦恼呵呵),IO 可以设定为强推挽 ,驱动力强,串口直接下载程序,编程方便,对于非专业应用,给 DIYer 做点小东西还是很合适的.使用 STC 专用

11、下载线(仅仅十几块,比别的芯片下载编程器可便宜多了,甚至使用 5 元的 USB 转 TTL 串口线也能用,只是需要手动断电一次而已,专用的下载线增加了自动断电功能,使下载更方便些)下载进芯片,得到一只带程序的芯片.利用面包板搭建测试电路实际验证逻辑功能,如果逻辑不满意或者定时时间不合适还可以回去修改程序,重新编译下装,直到满意为止,为了能够应用到实际环境中,还需要为它配上电源电路,输入按键开关,输出驱动三极管或继电器等硬件才能和实际的应用环境配合使用,发挥预想的作用。实际应用中对于抗干扰还是需要花费一些心思的,干扰来自一下几个方面:1 电磁阀动作时候产生的电磁脉冲和反电动势,这个可以使用二极管

12、做续流,来消除电磁阀断电反电动势脉冲,通过增加光耦进行输出隔离,也可以提高抗干扰性能;2 对于开关输入通道要考虑单片机输入电阻是比较高的,长线容易引入外部干扰,这个问题可以通过在输入引脚外加 1K 上拉电阻的方法来降低输入阻抗,达到抗干扰的目的;3 电源也是干扰源 ,因为大功率电机和电磁阀的动作都会造成 24V 电源的瞬间剧烈波动,尽管单片机的电源消耗不大但是很容易因干扰而复位或者造成输入输出不正常等现象,因此电源滤波也很重要,通过示波器可以观察到当电机或电磁阀动作时,单片机 5V 电源的波动情况,通过采取增加 型 LC 滤波 ,可以极大降低电源引起的干扰.4 电磁辐射也要考虑,单片机控制板本体最好增加金属外壳并接地,抵抗电机电磁阀或厨房用电设备的外部干扰,这就是为什么我喜欢收集金属糖果糕点盒的原因,呵呵!对于 DIYer 来讲,有时候想法挺好,试验也成功,但是实际装机后却失败了,这些可能不是我们做的不好,实际是没有考虑到复杂的工作环境,真正的产品为什么比我们 DIY 的成本高,其主要方面就是考虑的实际工作现场的复杂性,真正的核心控制可能很简单,但是周边的各种保护很复杂,甚至接错线了也要考虑到,成本和可靠性就成正比了,希望朋友们 DIY 快乐!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。