一个西门子程序的问题 点击:967 | 回复:8



zyhml

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:31帖 | 113回
  • 年度积分:0
  • 历史总积分:234
  • 注册:2001年7月31日
发表于:2005-08-23 10:49:00
楼主
我在fc块中使用fp功能时中间线圈用的temp变量,结果程序不正确执行,而我把这个temp变量改成m变量程序执行就正确拉。在我另外做的单独的调用fc则没问题。



zyhml

  • 精华:0帖
  • 求助:1帖
  • 帖子:31帖 | 113回
  • 年度积分:0
  • 历史总积分:234
  • 注册:2001年7月31日
发表于:2005-08-23 10:55:00
1楼
A "给料机启动" = L 1.0 A L 1.0 FP M 10.5 JNB _001 L W#16#47F T "mm440_1".kzz _001: NOP 0 A L 1.0 FN M 10.6 JNB _002 L W#16#47E T "mm440_1".kzz _002: NOP 0 这是程序,这个是可以执行的,如果把m10.5和m10.6改成fc中定义的temp变量,则程序不起作用,在上升、下降时不执行赋值操作

mafz26

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 13回
  • 年度积分:0
  • 历史总积分:75
  • 注册:2003年11月03日
发表于:2005-08-23 17:43:00
2楼
这里有一个全局和局部变量问题,temp局部变量,程序执行一个循环后temp局部变量的数据不保留(丢掉),而m10.5和m10.6为全局变量数据被保留。

zyhml

  • 精华:0帖
  • 求助:1帖
  • 帖子:31帖 | 113回
  • 年度积分:0
  • 历史总积分:234
  • 注册:2001年7月31日
发表于:2005-08-23 22:20:00
3楼
可是同样的程序在另一个程序中运行正确,也是fc中也是temp变量,所以才觉得奇怪:-)

bluingplc

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:116
  • 注册:2001年8月11日
发表于:2005-08-24 15:53:00
4楼
这是应为FC块中的temp变量是在被调用时分配地址的,在调用结束时释放地址,所以其数据不被保存,所以fp,fn指令不能按你的要求起作用.

zyhml

  • 精华:0帖
  • 求助:1帖
  • 帖子:31帖 | 113回
  • 年度积分:0
  • 历史总积分:234
  • 注册:2001年7月31日
发表于:2005-08-24 16:04:00
5楼
搞不明白,看来以后这种指令还是用全局变量吧

二号

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 133回
  • 年度积分:0
  • 历史总积分:1824
  • 注册:2003年8月15日
发表于:2005-08-24 17:50:00
6楼
我觉得,如果其他FC没有用temp变量的话,就不会改变

小楼

  • 精华:2帖
  • 求助:0帖
  • 帖子:5帖 | 298回
  • 年度积分:0
  • 历史总积分:418
  • 注册:2002年6月13日
发表于:2005-08-24 18:39:00
7楼
变量的生存周期问题

frack

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 13回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2005年1月03日
发表于:2005-08-24 20:00:00
8楼
一个是局部变量,一个是全局变量。局部变量的信息在首次执行完后回自动请零,而全局变量不会。特别提醒大家:如果你的程序已经写入PLC中而且短时间不用,一定要记得在每2个月左右通一次电源否则程序会在内部电池耗近的情况下丢失。

热门招聘
相关主题

官方公众号

智造工程师