技术论坛

 我早晨也想了个程序,请大家指点下;

返回主题列表
作者 主题
完美的超哥
侠客

经验值:673
发帖数:167
精华帖:1
楼主    2012-08-03 11:20:21
主题:我早晨也想了个程序,请大家指点下; 精华帖 
编程语言不限,LAD STL SCL都可以
1.我想做个程序可以设定要选择输出点的个数,如果我输入100,则为连续的100个DO点
2.程序分为自动和手动,自动程序可以暂停,取消暂停后继续执行
3.点击启动按钮,DO点按顺序输出,亮10s,灭5s,依次向后直到到达设定的最后一个DO点结束,中间我可以点击暂停按钮,程序将停止到正在使用的DO上,取消暂停后继续执行;中途我可以切到手动按钮,点击上一个或者下一个则该输出也是亮10s,灭5s等待操作员继续操作,如果打到自动化从该点程序继续执行;
功能就先这么多吧,早晨想了会感觉好难啊,看看大家的思路。
一切努力,只为巅峰
n次看你的背影
奇侠

经验值:7974
发帖数:2321
精华帖:73
10楼    2012-08-06 13:06:24
精华帖  主题:回复:我早晨也想了个程序,请大家指点下;
quote:以下是引用一曲悲伤,.在2012-08-06 10:47:01的发言:
quote:以下是引用n次看你的背影在2012-08-05 16:43:00的发言:
楼主:可以先做个跑马灯程序,再做个5秒高电平3秒低电平的方波,把5秒的高电平赋给当前跑马灯的Q点。练习位间接寻址,锻炼一下思维还是不错的。


N侠你好,能否贴个跑马灯的源文件给我参考下,对stl理解较浅,暂时便不出来那个程序;


哎。。。。。。中午睡不了午觉了(>_<),楼主比较虔诚,我就写点东西吧。嘿嘿,如果你把昵称改成“一曲高歌”会显得更加积极和开朗,其实并不需要那么忧伤^_^。
我用绝对地址写了段代码,给你参考一下。启动后从Q0.5开始16个Q点依次亮5秒灭3秒,往复循环。你可以修改一下起始地址、Q点的个数;亮、灭的时间修改一下T1、T2的时间就可以了。其他功能你自己再增加一下,应该比较容易了。参考代码如下:

A M 100.1 //扫描启动、停止标志位(M100.1=1启动,M100.1=0停止)
FP M 100.2 //判断启动信号的上升沿
JCN M001 //如果启动上升沿没有到来,跳转到M001
L P#0.5 //如果启动上升沿到来,将起始地址装载到ACCU1(★定义起始地址)
T MD 102 //将起始地址暂存到MD102
M001: LAR1 MD 102 //将当前MD102里面的地址装载到地址寄存器1(载入上一周期的指针)
A T 1 //扫描T1的状态,并赋给RLO
= Q [AR1,P#0.0] //将当前的RLO赋给当前的Q点
A T 2 //扫描T2的状态
FN M 100.3 //判断T2的下降沿
JCN M002 //如果T2下降沿没有来到,跳转到M002
+AR1 P#0.1 //如果T2下降沿来到,将地址寄存器1的地址增大1位
M002: L P#0.5 //装载起始地址到ACCU1
L L#15 //将ACCU1移入ACCU2,并将需要寻址的位的个数★(16-1)装载到ACCU1
+D //将起始地址加寻址个数存入ACCU1(结束地址)
TAR1 //将ACCU1移入ACCU2,并将当前地址寄存器1内容传送到ACCU1
<D //进行长整数小于比较(注:把中文小于改为英文小于,不然会给系统吃了)
JCN M003 //如果当前的地址不大于结束地址,跳转到M003;如果当前的地址大于结束地址
LAR1 P#0.5 //装载起始地址到地址寄存器1(地址返回功能)
M003: TAR1 MD 102 //将地址寄存器1当前的内容存入MD102(暂存本周期当前的指针)


A M 100.1 //扫描启动、停止标志位(M100.1=1启动,M100.1=0停止)
AN T 2
L S5T#5S
SP T 1 //如果当前的RLO=1,启动定时器T1

AN T 1
L S5T#3S
SP T 2 //如果当前的RLO=1,启动定时器T2

AN M 100.1 //M100.1=0停止时,复位脉冲源定时器
R T 1
R T 2
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。