恭喜,你发布的帖子
发布于 2024-03-11 18:24:28
16楼
我发现这里写错了,改了就好了
针对你的贴子《探讨一下关于位字串逻辑运算在程序中的用法》的1楼,我的理解如下图:
SetBitBWDW是StorBitBWDW映射过来的,,ClrBitBWDW 置位第五位相当于停止,让SetBitBWDW的对应第五位置0,但是一旦ClrBitBWDW复位第五位时为0,SetBitBWDW的对应第五位又会变1.
另外我看了你的贴子的第4楼的图,还是没看明白........
比如:图中的PAW,PSW,SLW,SRW,还有左移右移。。。。能不能详细解释一下,万分感谢大神!
首先,这个过程与那种优先级中断(入栈出栈)不同。这个方法是对应那些更随机的多工位“呼叫”;
例如:类似楼层电梯的呼叫;多工位上料的呼叫;在这些场景中,不可以上着一半人,有优先呼叫,就强行关门升降;也不允许正在普通工位上料中途,去执行优先呼叫工位的任务。它总是完成当前任务后,再处理另一(优先)任务。
要做的第一步就是保存任意时刻的“呼叫”请求。
我们知道:最简单的“启保停”逻辑,本质上就是请求(启动)事件与撤销请求(停止)事件。一旦请求(启动)就保持请求状态,直到撤销请求为止。
通常,上述逻辑都是用位操作。但实际上,是可以使用字逻辑的。
一个字节就一次处理8路。一个字就是16路、双字32路等等。
由于变量逻辑代码是一摸一样的,仅仅是数据类型不同。既然如此,我们就可以写一个FC,采用(不占内存空间的)Variant(通道)来处理多路的数据类型的“启保停”逻辑。
这个“启保停”FC生成图中的CallW(呼叫字)。这个字的那些位中,包含了普通等级的呼叫,也包含了具有优先级的呼叫。
使用SCL这仅仅是一行代码。
下一步,就是把不同优先级的提取出来。
请填写推广理由:
分享
只看
楼主