您现在所在的是:

西门子SIEMENS

回帖:2916个,阅读:515662 [上一页] [1] ... [240] [241] [242] [243] [244] [245] [246] [247] [248] [249] ... [292] [下一页]
514
阿奴0898
文章数:3
年度积分:50
历史总积分:514
注册时间:2016/5/22
发站内信
发表于:2016/5/22 22:35:59
#2430楼
我也是才接触s7300,希望在本站学的更多
1912
xsinter
文章数:76
年度积分:50
历史总积分:1912
注册时间:2012/11/25
发站内信
发表于:2016/5/22 23:50:03
#2431楼
廖老师你好,西门子plc中,经常看到“逻辑堆栈”,这个“逻辑堆栈”是一个什么样的概念?
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2016/5/25 15:17:10
#2432楼
以下是引用xsinter2016/5/22 23:50:03的发言:
廖老师你好,西门子plc中,经常看到“逻辑堆栈”,这个“逻辑堆栈”是一个什么样的概念?
S7-200的逻辑堆栈用来存放数字量(BOOL变量)。具体的请看教材或帮助。
695
踏雪灬无痕
文章数:14
年度积分:50
历史总积分:695
注册时间:2014/10/6
发站内信
发表于:2016/5/27 8:24:27
#2433楼
廖老师你好,我用左移指令SHL和右移指令SHR实现每隔一秒依次顺序启动(Q0.0-Q0.7)和停止(Q0.7-Q0,0),实现过程中有两个疑问
1、300系列里面的这两个指令要移位的值和移位指令的结果数据类型不能是字节,这样右移的时候值就会溢出,将梯形图改成语句表后,可以修改数据类型为字节,可以正常运行,不会溢出,但是不能转换成梯形图,有没有什么办法可以解决这个问题吗?
2、这两个指令只能移位8个数据吗??指令的IN和OUT数据类型为字的话,那QW0就是QB0和QB1,因该是可以移动16位的呀,但是我试了都不行,请老师指点下,谢谢
附件 0.7-0.0依次停止溢出(2).jpg

附件 1.0-1.7无法启动(4).jpg

附件 QW0-QW1,Q0.0-Q1.7(5).jpg

附件 程序(1).jpg

附件 语句表改成QB无溢出(3).jpg



附件 QW1-QW1,Q0.0-Q1.7(6).jpg

附件 QW1-QW1,Q1.0-Q1.7(7).jpg
1912
xsinter
文章数:76
年度积分:50
历史总积分:1912
注册时间:2012/11/25
发站内信
发表于:2016/5/27 17:05:32
#2434楼
廖老师好,PLC编程及应用第四版的93页,“同一级的POU的临时变量使用公用的存储区”,后面调用的子程序2覆盖掉前面调用子程序1的临时变量。我想问一下,子程序嵌套时,假设子程序1调用子程序2,这时候的临时变量区会不会被覆盖?相互影响吗?
[此贴子已经被作者于2016/5/28 15:30:18编辑过]
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2016/6/2 13:43:31
#2435楼
以下是引用踏雪灬无痕2016/5/27 8:24:27的发言:
廖老师你好,我用左移指令SHL和右移指令SHR实现每隔一秒依次顺序启动(Q0.0-Q0.7)和停止(Q0.7-Q0,0),实现过程中有两个疑问
1、300系列里面的这两个指令要移位的值和移位指令的结果数据类型不能是字节,这样右移的时候值就会溢出,将梯形图改成语句表后,可以修改数据类型为字节,可以正常运行,不会溢出,但是不能转换成梯形图,有没有什么办法可以解决这个问题吗?
2、这两个指令只能移位8个数据吗??指令的IN和OUT数据类型为字的话,那QW0就是QB0和QB1,因该是可以移动16位的呀,但是我试了都不行,请老师指点下,谢谢
附件 0.7-0.0依次停止溢出(2).jpg

附件 1.0-1.7无法启动(4).jpg

附件 QW0-QW1,Q0.0-Q1.7(5).jpg

附件 程序(1).jpg

附件 语句表改成QB无溢出(3).jpg



附件 QW1-QW1,Q0.0-Q1.7(6).jpg

附件 QW1-QW1,Q1.0-Q1.7(7).jpg

300/400的移位指令比较少,这就需要用户通过编程,在指令允许的功能的基础上实现自己的要求。西门子的300/400论坛曾经讨论过循环移位任意位的实现方法:

http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=826080&s_id=0&num=77#anch
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2016/6/2 13:45:31
#2436楼
以下是引用xsinter2016/5/27 17:05:32的发言:
廖老师好,PLC编程及应用第四版的93页,“同一级的POU的临时变量使用公用的存储区”,后面调用的子程序2覆盖掉前面调用子程序1的临时变量。我想问一下,子程序嵌套时,假设子程序1调用子程序2,这时候的临时变量区会不会被覆盖?相互影响吗?
[此贴子已经被作者于2016/5/28 15:30:18编辑过]
不是同一级的不会相互影响。
695
踏雪灬无痕
文章数:14
年度积分:50
历史总积分:695
注册时间:2014/10/6
发站内信
发表于:2016/6/3 13:37:28
#2437楼
回复 #2435楼 liaosun
谢谢老师,我去看看去
6047
liaosun
文章数:1398
年度积分:50
历史总积分:6047
注册时间:2003/5/4
发站内信
2015论坛贡献奖
2014论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011博客贡献奖
2010博客杰出贡献奖
发表于:2016/6/3 20:19:55
#2438楼
踩到了自己埋的地雷

最近上课的时候,用我事先做好的项目来演示博途中S7-300和精简面板的仿真,然后演示这个项目编程和组态的过程。PLC仿真的时候出了问题,Time数据类型的预设时间值(MD8)在正、负24天之间不停的无规则的跳动。用交叉引用功能检查,只是在OB100中给它设置过初始值T#10S,别的地方没有改写它。程序很简单,没有使用间接寻址。到底是什么原因导致MD8的值变化,一时查不出来了。
半夜突然想起我在演示过程中,演示了将MB8组态为时钟存储器字节的方法。MB8是MD8的最高位字节,将它组态为时钟存储器字节后,它的各位不断周期性变化,导致MD8的大幅度变化,罪魁祸首就是它,我踩到自己埋的地雷了。
编程的时候最忌讳的是同一地址两用或多用。如果某个地址的值出现无规则的莫名其妙的变化,多半是同一地址两用造成的。检查方法如下:
1)用交叉引用功能检查该地址在PLC程序中和HMI中哪些地方被改写,是否同一地址两用。
2)如果程序中使用了间接寻址,需要检查该变量是否被间接寻址改写。
3)该变量是否因为通信被改写。
4)如果是M区,注意该地址或其中的一部分是否被设置为时钟存储器字节或S7-1200/S7-1500的系统存储器字节。
[此贴子已经被作者于2016/6/3 20:20:55编辑过]
4582
zhengpan2010
文章数:2684
年度积分:48
历史总积分:4582
注册时间:2010/9/13
发站内信
发表于:2016/6/6 10:29:57
#2439楼
廖老师,您好!我用的是西门子317F的CPU,有一些第三方伺服驱动的位置数据是通过HMI调试设定的,平时存储在DB块里面,当我的CPU的过程数据丢失后,如何快速找回这些位置数据?现在临时是做了一个变量表在设备运转正常状态时,监控并保存,当过程数据丢失后,打开保存的变量表监控并修改,有没有更好的办法呢?

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

93.6006