回复:《探讨一下关于位字串逻辑运算在程序中的用法》

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23457
  • 精华

    897
  • 被关注

    1278

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2022-09-24 20:10:18

2楼

实际操作中,如果仅有几个执行器操控,并不需要这样做。但是,当操作对象有7个8个,就可以用字节(Byte)逻辑来写程序。更多就用Word或DWord来做。

字逻辑运算,通常用在控制执行器(驱动)。它是由控制字;状态字来表达。




上图表达的是驱动中常见的控制操作。每一驱动都有统一的预定义、规范好的控制字、状态字。其他场景可能就是针对IO设备的控制字和返回的状态字。

在字逻辑处理上,这里的选择字(允许操作哪台),在其他场景也可以是优先级,或各种逻辑组合。

这种方法的优点,是控制分层,容易扩展(复制、粘贴、修改。)同时,也很容易传送给HMI。分列显示所需的状态。


在这里,通常会遇到两个问题:

1、位字串的操作结果是多通道的,如何分解传送-再组合成每一执行器的控制字;

对于TIA V14以上,1200 V4.2以上

可以方便的使用指令 GATHER/SCATTER,将位字串分解成位数组;通过数组分配,重新组合每一台的控制字。

(其实,每台驱动都有默认的位值,你只需操作需要操作的位。)

2、如何将命令点位(ABCD等)组合到命令字(Byte,Word,Dword)中?

目前,还没有直接指令来操作,但我们可以写个FC,实现这个功能。

下面是我用的一种方法。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15620条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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