slik
级别: 论坛先锋
精华主题: 0
发帖数量: 908 个
工控威望: 1175 点
下载积分: 5868 分
在线时间: 539(小时)
注册时间: 2008-06-01
最后登录: 2024-12-02
查看slik的 主题 / 回贴
楼主  发表于: 2024-05-15 09:36
有这样一种需求,工艺需求共分A,B,C,D,E五个动作阶段,但是其动作的先后顺序不定,根据在HMI的设置来决定,比如,HMI设置1,2,,3,4,5,那么按照A,B,C,D,E来走,如果HMI设置4,2,3,1,5,那么将按照D,B,C,A,E的先后顺序来执行,请问这样的应用要怎么编程比较简单明晰,我最初想到的是解码指令对应到某个字中的某位,然后用字的循环移位指令来做,但是,问题是要怎么把Dn.X的某bit位对应到动作阶段上,请各位高手指点下,谢谢!~
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 769 个
工控威望: 1147 点
下载积分: 397 分
在线时间: 604(小时)
注册时间: 2019-09-22
最后登录: 2024-12-19
查看gxtmdb82164的 主题 / 回贴
1楼  发表于: 2024-05-15 10:36
实现方式非常多的,给你一个最简单的:

这个方向需要提前确认最大的步数空间,比如20步,那么准备40个寄存器,比如说从D100开始(如果你的PLC可以用类似结构体之类的就更方便了)
Step0:命令寄存器:D100,状态寄存器D120
Step1:命令寄存器:D101,状态寄存器D121
。。。
Step19:命令寄存器:D119,状态寄存器D129

程序扫描就是正常的从Step0到Step19,当然得有个位置记录一下这个Step号,命令寄存器里面通过触摸屏写入要执行的命令,就是一楼的12345,然后状态寄存器用于指示当前这个步的状态,启动了,等待了,完成了,出错了等等,

程序就是从D100开始循环到D119,跳步条件通过状态寄存器实现,具体的12345子程序,根据当前的步数加乘后使用变址的方式获得参数和输出结果(大白话解释一下:比如1的程序,启动的时候要复位完成点(假设是这样),完成后要置位完成点,这个完成点的具体地址要看当前的Step号,比如Step5,对应的是D125.1,在Step6就是D126.1,通过变址这两个地址对子程序来说是一样的,当然还要看具体的PLC是否支持)

在这个基础上扩展一下,命令字后面再增加几个寄存器,还可以把参数也传进去,都是动态的
本帖最近评分记录:
  • 下载积分:+5(阿萱子v)