技术论坛

 回复:博途SCL编程置位和复位的疑问

返回主题列表
作者 主题
强颜欢笑@
侠士

经验值:1541
发帖数:33
精华帖:1
楼主    2017-11-28 22:03:41
主题:博途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楼    2017-11-28 23:39:35
精编帖  主题:回复:博途SCL编程置位和复位的疑问

你那个就是一般的逻辑运算。

要不然呢?

学而时习之,不亦说乎?温故而知新,不亦乐乎?
强颜欢笑@
侠士

经验值:1541
发帖数:33
精华帖:1
2楼    2017-11-29 01:19:58
精编帖  主题:回复:博途SCL编程置位和复位的疑问

嗯嗯 老师说的非常对  就是一个一般的逻辑 可是网上说的赋值就等于置位(SET) 如果不是那又怎么置位呢?

学习立于不败之地
你以为你是谁
至圣

经验值:26018
发帖数:4602
精华帖:11
3楼    2017-11-29 08:05:16
精编帖  主题:回复:博途SCL编程置位和复位的疑问

这是置位,条件满足就为1.

IF Tag1 THEN

  Tag2:=True;

ELSE Tag2:=False;

END_IF;

这个不带保持。

PCS7系统爱好者,技术交流:617522577@qq.com
henry.wang
至圣

经验值:11153
发帖数:998
精华帖:31
4楼    2017-11-29 08:19:24
精编帖  主题:回复:博途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楼    2017-11-29 22:34:04
精编帖  主题:回复:博途SCL编程置位和复位的疑问

也就是 没有SET和RST类似的指令

学习立于不败之地
zhangli0
至圣

经验值:48096
发帖数:17131
精华帖:63
6楼    2017-11-30 11:50:49
精编帖  主题:回复:博途SCL编程置位和复位的疑问

楼主的代码没有问题,你把变量设置为保持型的就好了,我测试过了没有问题,在保持状态下,tag1为1,tag2为1,然后tag1为0,tag2为1。手动给tag2复位后,再用前面逻辑赋值还是一样的。

活到老,学到老!为了生活学习吧!
shine
至圣

经验值:19820
发帖数:8803
精华帖:39
7楼    2017-11-30 12:20:20
精编帖  主题:回复:博途SCL编程置位和复位的疑问

你的程序,除了这一段,还有其他的指令吗?

另外,Tag_2使用的是哪种类型的变量?M还是DB又或者是 I, ?


你说不能保持,只有一个理由:在别的地方把Tag_2给复位了

有可能别的指令复位了,又或者,你的Tag_2用的是输入点?系统自动刷新了。又或者,强制复位后你PLC断电重启了,而该tag没有设置断电保持。或者用的是Temp类型的,系统自动复位了。

Haohaobb
至圣

经验值:15996
发帖数:1637
精华帖:39
8楼    2017-11-30 12:27:31
精编帖  主题:回复:博途SCL编程置位和复位的疑问

楼主tag1和2分别用的什么存储区的呢?

如果用db或者q,m等肯定是保持的,即使l存储区也是置位操作,只是数据未能保持而已。

天道酬勤
强颜欢笑@
侠士

经验值:1541
发帖数:33
精华帖:1
9楼    2017-11-30 13:32:19
精编帖  主题:回复:博途SCL编程置位和复位的疑问

使用的M区  以前用的STL 的时候有S和R。 以后想用下SCL

,编了一个FC然后OB调用,实参是M ,想保持  发现没有

类似STL的S和R指令  

学习立于不败之地
v_wind
侠圣

经验值:2552
发帖数:287
精华帖:3
10楼    2017-11-30 15:31:32
精编帖  主题:回复:博途SCL编程置位和复位的疑问

你定义到了临时变量就不保持了!M/DB的都是可以保持的,可以代替S和R命令!


yming
至圣

经验值:138363
发帖数:23137
精华帖:880
12楼    2017-11-30 21:50:48
精编帖  主题:回复:博途SCL编程置位和复位的疑问

 按说SCL的语法,应该是无歧义的,就是说要有ELSE;

当条件变量1变成FALSE时,这个条件判断的运算结果为假,下面的语句不执行(灰色的)而已。

至于变量2能否保持,就看其存储性质(是否是局部变量)?其他部分程序、是否对它操作了?

这种替代S-R的用法不值得推荐。

正确用法是逻辑自锁的用法。你们觉得呢?

学而时习之,不亦说乎?温故而知新,不亦乐乎?
zackchan
游侠

经验值:563
发帖数:10
精华帖:0
15楼    2017-12-01 09:19:32
精编帖  主题:回复:博途SCL编程置位和复位的疑问

个人还是比较认同逻辑自锁,例如tag_2:=(tag_1 or tag_2) and tag_3;(tag_1置位条件,tag_3复位条件)。我还是觉得这个看起来比用if else要顺眼

你以为你是谁
至圣

经验值:26018
发帖数:4602
精华帖:11
16楼    2017-12-01 09:30:31
精编帖  主题:回复:博途SCL编程置位和复位的疑问

上升沿置位,这个一般用在触发信号一直接通的地方。

个人觉得没有IF ELSE层次分明,尤其是逻辑比较复杂的场合。

PCS7系统爱好者,技术交流:617522577@qq.com
zackchan
游侠

经验值:563
发帖数:10
精华帖:0
18楼    2017-12-01 11:41:20
精编帖  主题:回复:博途SCL编程置位和复位的疑问

额。这个不需要触发信号一直通。是自锁的,只要触发一次就行了,tag_2会自锁的;另外上升沿置位的话我可以增加"R_TRIG_DB_1"(CLK:=tag_1);然后再把置位条件换成"R_TRIG_DB_1".Q就行了啊,条件是可以根据要求更改的。(评论竟然限于60字啊。。新人小白略微有点郁闷)

YiMoon
至圣

经验值:11740
发帖数:1228
精华帖:36
20楼    2017-12-07 07:41:34
精编帖  主题:回复:博途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楼    2017-12-08 13:27:37
精编帖  主题:回复:博途SCL编程置位和复位的疑问

当然可以代替,我一直是这么用的;

我是用在报警复位上:

当报警信号 (BOOL)为1时,用IF 报警变量 then 报警输出:=报警变量;

再用复位信号复位报警输出,IF 复位信号 then 报警输出:=0;

只要复位信号不为1,有有报警信号后,报警输出就为1,报警信号消失后,要等复位信号为1后才能消除报警输出

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