| 作者 | 主题 |
|---|---|
|
强颜欢笑@ 侠士 经验值:1541 发帖数:33 精华帖:1 |
楼主
主题:博途SCL编程置位和复位的疑问
在博途V14上做的测试,PLC选用的1214DC/DC/DC。网上查了好多资料都是说 SCL编程 赋值就等于置位/复位,可是我在博途上仿真的结果却不是,特来论坛请教大神解答。 例:IF tag_1 THEN tag_2:=TURE; EN_IF; 按照网上的说法 tag_1 为TURE时,将置位tag_2。可是我仿真的结果是先将tag_1强制为1,tag_2为1,可是当我改变tag_1的值为0时,tag_2也随之变为0,这样的话就算不上置位了。我的理解是,置位(SET)一但接通之后在没有复位(RST)出现时值不会改变。
学习立于不败之地
|
|
yming 至圣 经验值:138363 发帖数:23137 精华帖:880 |
1楼
主题:回复:博途SCL编程置位和复位的疑问你那个就是一般的逻辑运算。 要不然呢?
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
|
强颜欢笑@ 侠士 经验值:1541 发帖数:33 精华帖:1 |
2楼
主题:回复:博途SCL编程置位和复位的疑问嗯嗯 老师说的非常对 就是一个一般的逻辑 可是网上说的赋值就等于置位(SET) 如果不是那又怎么置位呢?
学习立于不败之地
|
|
你以为你是谁 至圣 经验值:26018 发帖数:4602 精华帖:11 |
3楼
主题:回复:博途SCL编程置位和复位的疑问这是置位,条件满足就为1. IF Tag1 THEN Tag2:=True; ELSE Tag2:=False; END_IF; 这个不带保持。
PCS7系统爱好者,技术交流:617522577@qq.com
|
|
henry.wang 至圣 经验值:11153 发帖数:998 精华帖:31 |
4楼
主题:回复:博途SCL编程置位和复位的疑问网上说的没错,但是用法不对。想你那样用就这个效果,如果你想置位这样做: "R_TRIG_DB_1"(CLK:=tag_1); IF "R_TRIG_DB_1".Q THEN tag_2:=1; EN_IF; 检测上升沿。
Chance favors the prepared mind.
|
|
强颜欢笑@ 侠士 经验值:1541 发帖数:33 精华帖:1 |
5楼
主题:回复:博途SCL编程置位和复位的疑问也就是 没有SET和RST类似的指令
学习立于不败之地
|
|
zhangli0 至圣 经验值:48096 发帖数:17131 精华帖:63 |
6楼
主题:回复:博途SCL编程置位和复位的疑问楼主的代码没有问题,你把变量设置为保持型的就好了,我测试过了没有问题,在保持状态下,tag1为1,tag2为1,然后tag1为0,tag2为1。手动给tag2复位后,再用前面逻辑赋值还是一样的。
活到老,学到老!为了生活学习吧!
|
|
shine 至圣 经验值:19820 发帖数:8803 精华帖:39 |
7楼
主题:回复:博途SCL编程置位和复位的疑问你的程序,除了这一段,还有其他的指令吗? 另外,Tag_2使用的是哪种类型的变量?M还是DB又或者是 I, ? 你说不能保持,只有一个理由:在别的地方把Tag_2给复位了 有可能别的指令复位了,又或者,你的Tag_2用的是输入点?系统自动刷新了。又或者,强制复位后你PLC断电重启了,而该tag没有设置断电保持。或者用的是Temp类型的,系统自动复位了。 |
|
Haohaobb 至圣 经验值:15996 发帖数:1637 精华帖:39 |
8楼
主题:回复:博途SCL编程置位和复位的疑问楼主tag1和2分别用的什么存储区的呢? 如果用db或者q,m等肯定是保持的,即使l存储区也是置位操作,只是数据未能保持而已。
天道酬勤
|
|
强颜欢笑@ 侠士 经验值:1541 发帖数:33 精华帖:1 |
9楼
主题:回复:博途SCL编程置位和复位的疑问使用的M区 以前用的STL 的时候有S和R。 以后想用下SCL ,编了一个FC然后OB调用,实参是M ,想保持 发现没有 类似STL的S和R指令
学习立于不败之地
|
|
v_wind 侠圣 经验值:2552 发帖数:287 精华帖:3 |
10楼
主题:回复:博途SCL编程置位和复位的疑问 |
|
yming 至圣 经验值:138363 发帖数:23137 精华帖:880 |
12楼
主题:回复:博途SCL编程置位和复位的疑问按说SCL的语法,应该是无歧义的,就是说要有ELSE; 当条件变量1变成FALSE时,这个条件判断的运算结果为假,下面的语句不执行(灰色的)而已。 至于变量2能否保持,就看其存储性质(是否是局部变量)?其他部分程序、是否对它操作了? 这种替代S-R的用法不值得推荐。 正确用法是逻辑自锁的用法。你们觉得呢?
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
|
zackchan 游侠 经验值:563 发帖数:10 精华帖:0 |
15楼
主题:回复:博途SCL编程置位和复位的疑问 |
|
你以为你是谁 至圣 经验值:26018 发帖数:4602 精华帖:11 |
16楼
主题:回复:博途SCL编程置位和复位的疑问上升沿置位,这个一般用在触发信号一直接通的地方。 个人觉得没有IF ELSE层次分明,尤其是逻辑比较复杂的场合。
PCS7系统爱好者,技术交流:617522577@qq.com
|
|
zackchan 游侠 经验值:563 发帖数:10 精华帖:0 |
18楼
主题:回复:博途SCL编程置位和复位的疑问额。这个不需要触发信号一直通。是自锁的,只要触发一次就行了,tag_2会自锁的;另外上升沿置位的话我可以增加"R_TRIG_DB_1"(CLK:=tag_1);然后再把置位条件换成"R_TRIG_DB_1".Q就行了啊,条件是可以根据要求更改的。(评论竟然限于60字啊。。新人小白略微有点郁闷) |
|
YiMoon 至圣 经验值:11740 发帖数:1228 精华帖:36 |
20楼
主题:回复:博途SCL编程置位和复位的疑问IF tag_1 THEN tag_2:=TURE; EN_IF; TAG_2不为临时变量的话,tag_2只要tag_1为1一个扫描周期,tag_2就会保持为1; 如果楼主只要取tag_1的逻辑信号 ,可以用赋值指令 tag_2:= tag_1; 这样,不管tag_2是什么类型的变量,都会执行正确的RLO信号; 这样不用if else那么复杂;
Keep calm and carry on!!!
|
|
YiMoon 至圣 经验值:11740 发帖数:1228 精华帖:36 |
22楼
主题:回复:博途SCL编程置位和复位的疑问当然可以代替,我一直是这么用的; 我是用在报警复位上: 当报警信号 (BOOL)为1时,用IF 报警变量 then 报警输出:=报警变量; 再用复位信号复位报警输出,IF 复位信号 then 报警输出:=0; 只要复位信号不为1,有有报警信号后,报警输出就为1,报警信号消失后,要等复位信号为1后才能消除报警输出
Keep calm and carry on!!!
|