回复:一本正经“消灭”双线圈问题

已锁定

Zane

西门子1847工业学习平台

  • 帖子

    21144
  • 精华

    401
  • 被关注

    1491

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2022-12-12 11:06:36

33楼

展开查看
以下是引用芳季在2022-12-12 07:03:58的发言 >31楼

一个S一个R算赋值几次?

8个S或者R单独对一个字节里面的8个位同时置位或者复位,是不是对位操作?那么用一个movb去等效这堆东西,算数据操作还是位操作?用Bmovb去等效很多个movb是指对数据还是数组的操作?

到底一个S一个R算赋值了几次?

LD M0.0

S Q0.0 1

R Q0.1 1

R Q0.2 1

S Q0.3 1

S Q0.4 1

R Q0.5 1

R Q0.6 1

S Q0.7 1

LN M0.0

CALL SBR0

END

SBR0

LD SM0.0

= Q0.1

=Q0.2

= Q0.5

= Q0.6

LN SM0.0

= Q0.0

= Q0.3

= Q0.4

= Q0.7

END SUB

以上程序(随手写)算那样?

以上程序如果用一个movb指令代替子程序,又算哪样?

所以我真的不确定什么叫做双线圈。


以下是引用Zane在2022-12-11 22:58:41的发言 >28楼:我强调一下吧,我讲...

引用28楼详细内容:

我强调一下吧,我讲的逻辑运算全扫描,逻辑变量只赋值一次,指的是通常二进制逻辑运算涉及的逻辑变量(也就是布尔变量)。


我从来没有公开讲过,数值处理运算的数值变量也要全扫描并且只赋值一次。


举个例子大家去试试吧


电机启停控制,有手动指令M_Cmd(1=启动),有自动指令A_Cmd(1=启动),手自动切换指令M_A(0=M,1=A),有故障信号FAULT,有运行反馈信号RUN,要求电机在运行中手自动切换指令无效。


以下是引用Zane在2022-12-09 21:47:24的发言 >15楼:所以,我的做法就是...

引用15楼详细内容:

所以,我的做法就是逻辑变量只赋值一次。


没有双线圈,多线圈的概念, 就是赋值变量的次数。

在同一扫描周期内对同一逻辑变量多次赋值,而且变量没有复用的作用域。


双线圈多线圈只是一种形象的替代说明,没必要去抠字眼,实质就是逻辑变量的赋值次数。


全扫描就是指逻辑运算指令(二进制布尔逻辑),并且尽量少用条件执行指令。


MOVE指令属于数据处理的大范畴内,但其执行结果亦会影响逻辑结果,这是毋庸置疑的。

Zane 注册自动化系统工程师 Always save before download
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9025条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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