shuangyu
工控行业呆的越久越迷茫.......懂得多?少?......
级别: 家园常客
精华主题: 0
发帖数量: 344 个
工控威望: 891 点
下载积分: 1083 分
在线时间: 114(小时)
注册时间: 2009-08-04
最后登录: 2024-05-13
查看shuangyu的 主题 / 回贴
楼主  发表于: 2009-08-13 10:42
有一台监测设备,监测出来数字存在D0,输出
Y0   代表显示数值是10
Y1    13
Y2    16
Y3    18
Y4     22
Y5     24
Y6     28
Y7     32

Y最多只能亮3盏。显示误差取最小值.比如D0=45 Y输出Y0 Y1 Y4

D0=30  输出 Y1 Y2
D0=33  Y0 闪亮 Y1 常亮
请问怎么编程?最好别用傻瓜式编程。。。。
有什么简便的方法吗?



zhu_changqun
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看zhu_changqun的 主题 / 回贴
1楼  发表于: 2009-08-20 12:23
    主要是数据处理,用ST(类C)编吧.应很快的.
randomfly888
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看randomfly888的 主题 / 回贴
2楼  发表于: 2009-08-20 13:42
先是把特殊情况搞定,即值为0,10,13,16,18,22,24,28,32时候
然后是三个循环,即在0,10,13,16,18,22,24,28,32(假设存放在D100~D108)中挑出三个计算,三个放在D200~D202中,V0,V1,V2初始化为0,1,2
FOR  7
MOV D100V0 D200
   FOR  7
      MOV D100V1 D201
       FOR  7
              MOV D100V2 D202
              ADD D200 D201 D203
              ADD D202 D203 D203
              CMP D203 D100 M1
比较结果相等后,保存当前V0,V1,V2的值,在下面选择输出接口然后实现
       LD M2  SET M3
              INC V2
              NEXT

      INC V1
      NEXT

INC V0
NEXT
LD M3  把D0的值加一再用上面循环计算
在把D0值减一再用上面循环计算,好像也挺烦的...