51单片机DIY做PLC编程_第1页
51单片机DIY做PLC编程_第2页
51单片机DIY做PLC编程_第3页
51单片机DIY做PLC编程_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、10 口数量,任意指定多少个I多少个0,那几个脚是I, 哪几个是0都可以任意指定,在这个51系统里面设计了最大 32个1,32个0,占用64个位寻 址区域,其实用不到那么多,也可以分配给其它需要的标志位用,因为51系统总可位寻址地址 只有128位,需要仔细分配.2、 位寻址变量定义(包括各类标志位,临时变量寄存器等等)目前设计了 8个计时器的Timer DN, Timer EN,共16位,8个计数器的 counter reset和counter DN 标志位共16个,专用于 上升沿下降沿检测的标志位4对,占用8个,剩余用于临时变量,这些地址分配在这块变量定义区域可以根据需要任意调整3、内存规划

5、,包括堆栈区的设置,定时器,计数器的累加值和预设值地址等等,目前初步定义8个计数器的当前计数值和预设值, 8个计时器的当前计数值和预设值,共占用32个内存地址,也可根据需要调整, 51单片机片内总的用户可用内存地址包括堆栈区只有128个,实际去除位寻址区和堆栈区可用的估计只有80个左右,不过对于小程序应该够用的。没必要去增加成本扩展RAM4、上电初始化,包括 0.01秒微定时器设置,内存清零,中断设置,如果想增加串口功能也 是可以的,51本来就有两个定时器,无非多写一个串口中断服务程序就是了。5、 微定时器中断服务程序编写,单片机每0.01秒定时中断时执行,进行内存时基标志位刷新,用于提醒主程

6、序相应时间到了,基本的时基设计了 0.01秒,0.1秒,1秒,10秒,1分钟,1小时,1天,1周八个时间标志位,其实真没必要,不过自己编写架构就是好玩,想设计几个就设计几个哈哈!6、下面是主要 PLC 逻辑,执行时是不停扫描循环执行的,与真实的 PLC 运行结构是一样 的,当然咱们编的就要简单许多了,没有那么多的功能。而且用汇编编写执行效率要比 C 高,目前 1K 代码的汇编程序可以写好多, 而如果用 C 写再编译就会大许多, 很多时候廉价 小单片机就装不下了。7、扫描开始是对定时器计数器处理,如果某计时器的相应时基标志位置位,则处理对应程 序用定时器的状态判断与设置, 计数器内存累加, 状态

7、判断与设置, 用于主逻辑执行部分执 行;对于计数器主要是判断是否有计数器复位请求以及进行当前计数值与预设值是否相等判 断 , 置位相应标志位 .8、输入扫描,这块很简单,就是把输入IO 口复制到内存相应区域内;9 正式逻辑执行: 这块直接就是按照梯形图行的概念, 每一个梯形图行, 就是一段汇编代码, 为了翻译时候方便,直接把逻辑就在注释行内形象的用符号画出来。逻辑的翻译还是有点技巧 ,实现了基本 IO 输入 ,与或非逻辑 ,定时器以及计数器功能 ,外加上升 沿下降沿判断等功能 ,这些基本的 PLC 功能都能在这个小架构里面实现,尽管不是十分完美例如定时器状态更新的时效性由于架构问题还不能达到每

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

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

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

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

12、能 ;2 对于开关输入通道要考虑单片机输入电阻是比较高的,长线容易引入外部干扰 ,这个问题可以通过在输入引脚外加 1K 上拉电阻的方法来降低输入阻抗,达到抗干扰的目的 ;3 电源也是干扰源 ,因为大功率电机和电磁阀的动作都会造成24V 电源的瞬间剧烈波动 , 尽管单片机的电源消耗不大但是很容易因干扰而复位或者造成输入输出不正常等现象,因此电源滤波也很重要 ,通过示波器可以观察到当电机或电磁阀动作时,单片机 5V 电源的波动情况 ,通过采取增加n型LC滤波,可以极大降低电源引起的干扰4 电磁辐射也要考虑 ,单片机控制板本体最好增加金属外壳并接地,抵抗电机电磁阀或厨房用电设备的外部干扰 ,这就是为

13、什么我喜欢收集金属糖果糕点盒的原因,呵呵 !对于 DIYer 来讲,有时候想法挺好 ,试验也成功 ,但是实际装机后却失败了,这些可能不是我们做的不好 ,实际是没有考虑到复杂的工作环境,真正的产品为什么比我们 DIY 的成本高 ,其主要方面就是考虑的实际工作现场的复杂性,真正的核心控制可能很简单,但是周边的各种保护很复杂 ,甚至接错线了也要考虑到,成本和可靠性就成正比了 ,希望朋友们 DIY 快乐 !仅供个人用于学习、研究;不得用于商业用途For personal use only in study and research; not for commercial use.Nur f u r den pers?nlichen f u r Studien, Forschung, zu kommerziellen Zwecken verwe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论