回复:聊一聊GATHER指令

已锁定

jsdwgc-lsk

  • 帖子

    478
  • 精华

    4
  • 被关注

    20

论坛等级:侠圣

注册时间:2020-07-20

钻石 钻石 如何晋级?

发布于 2022-12-12 22:29:28

5楼

展开查看
以下是引用yming在2022-12-12 18:18:49的发言 >4楼

既然聊GATHER和SCATTER这一对儿指令。那么:

所有的数字量的控制字/状态字的位定义都是一样的。

对于N台驱动,就可构建WORD类型的数组DriverSTW1(N)以及DriverZSW1(N)等等。

通过SCATTER可将这个Word类型的数组转成 drvSTW( 0..N, 0..15)的位数组。

这个数组的N,0;都是相同命令/状态定义;可以构成一个个字/双字,这个字的每一位代表了0-N驱动的一个定义的命令/状态。

要实现,这里就牵扯到 转置 运算。

1200编程如何来处理这种二维数组的转置呢?

以下是引用jsdwgc-lsk在2022-12-12 10:17:35的发言 >3楼:您说得太对了,我是...

引用3楼详细内容:

您说得太对了,我是从用PN控制伺服的时候开始使用这两个指令的,这两个指令作用非常多

以下是引用yming在2022-12-11 21:27:47的发言 >2楼:GATHER和SC...

引用2楼详细内容:

GATHER和SCATTER是一对儿指令。

在西门子控制驱动方面会很有用处的。

因为都是用控制字/状态字来操作的(内部也一样)

模拟量:用hex 4000=100%

数字量:就是字的位(每一位代表一个指令/状态)

所以,就可以通过这一对指令将产线上的各个驱动器(执行器)的控制字/状态字转换成位数组;

因为,每一驱动的数组(0)位都是启动/停止;数组(1)都是自由停车;数组(2)都是急停;因此,又可以构成 启停字,自由停车字;急停字;升速字、减速字等等。

用字逻辑来整体操作。

我之前的一个项目是这样做的,用SCATHER指令读取状态字,解析出位 ,这样在做顺控逻辑的时候,得到的位变量的上升沿触发相应的动作指令或者子程序。还可以通过转化得到一个故障位a1,其余驱动的故障位命名为a2,a3,a4,依次类推,我可以将这几个故障位用GATHER再转化成一个word变量A,这样我就可以通过变量A的值,知道是哪一台驱动器报了故障。同样的,所有驱动器的运行信号也可以直接汇总成一个WORD变量B。这样做是因为第三方SCADA系统需要直接读取WORD变量来获取某一台驱动的运行或者故障信号,这样所有驱动器的运行和故障用两个WORD来进行交互。我也不知道您说的转置是不是这个意思,还是其它的什么做法?

一入工控深似海
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有13546条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。