| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 655 人关注过本帖
标题:科威PLC芯片组开发实例(十)
只看楼主 加入收藏
lyq_4652
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-7-23
收藏
 问题点数:0 回复次数:0 
科威PLC芯片组开发实例(十)
实战攻坚!

下面我们讲讲该在TMS用户驱动子程序里面写些什么代码。

首先笔者得说说科威PLC的输入端口采样原理,为什么要进行输入端口采样呢?答案很简单,就是为了滤波。在PLC实际运行过程中,X端口可能会因为现场干扰收到一些毛刺信号,这些毛刺信号如果不进行处理,就会影响到PLC对X端口的状态的判断,那么我们必须得剔除掉这些毛刺,使系统工作在一个稳定的环境。
我们规定,如果连续采样8次X端口的值都是一致的,就判断此刻X端口的状态是实际的输入状态,这个也就是为什么我们把INPUT_CNT这个变量设置为8的原因。

还是老规矩,笔者贴出TMS的代码并为大家分析:
TMS
TMS:            MOV    C,KEY_SET            ;1
                MOV    P4.3,C                ;2
                MOV    C,PLC_PRO_ERR        ;3
                CPL        C                    ;4
                MOV    P4.2,C                ;5
                MOV    A,INPUT_CNT        ;6
                JNZ        TMS1                ;7
                RET        

TMS1:            DEC    A                    ;8
                MOV    DPTR,#XINPUT        ;9
                ADD    A,DPL                ;10
                MOV    DPL,A                ;11
                MOV    A,DPH                ;12
                ADDC    A,#00H                ;13
                MOV    DPH,A                ;14    
                MOV    A,P3                ;15
                MOVX    @DPTR,A            ;16
                DEC    INPUT_CNT            ;17
                RET

1.    第1~5句:这4条语句是给RUN/SET和ERR两个灯赋状态的。在原理图中看到,由于ERR的LED与实际的P4.2中间反了一次向,故此在程序中也需要对此端口反向赋值。
2.    第6句:取INPUT_CNT当前值赋给寄存器A
3.    第7句:这句是一句跳转指令,作用是看对X输入端口当前的8次采样完成了没有,如果完成了,就直接返回,在SCAN用户驱动子程序会对其X0~X7寄存器的值进行更新;如果8次采样没有完成,则跳转到TMS1中进行X输入端口采样。
4.    第8~16句:将P3端口的值(即当前X输入端口的采样值)存放到从#XINPUT+7开始到#XINPUT一共8个单元。值得注意的是,完成8次采样的时间为2.5ms * 8 = 20ms。也就是说,从第1次采样开始到8次采样结束需要20ms的时间。结束时,#XINPUT~#XINPUT+7这8个单元的地址已被填充,等待SCAN用户驱动子程序的处理。这段程序通过改变采样指针DPTR的DPH和DPL,使其指向不同的外部寻址单元,这个小技巧希望大家能够熟练掌握。
5.    第17句:将INPUT_CNT减1。不要忘记这句话,否则你的程序将始终填充#XINPUT+7这个单元的数据,采样指针永远也指不到#XINPUT+6和其以下的单元。

好了,TMS就给大家分析完了,下一讲笔者将给大家讲述最后一个部分:SCAN。

本帖首发中国工控网科威PLC论坛,转载请声明!
搜索更多相关主题的帖子: PLC 芯片组 实例 端口 毛刺 
2008-08-08 13:37
快速回复:科威PLC芯片组开发实例(十)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014156 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved