登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:PLC程序在第一次读取Q0.0的值时,是1还是0,为什么?

点击:2499 回复:26

谢谢回复,关键是第一次扫描时,Q0.0的状态多少呢?
20-02-26 12:28
一般来说,非断电保持器件,PLC断电后其状态会复位;
可以做编程试验观察。
20-02-26 14:23
你说的复位就是0吗?或者说启机时,输出寄存器状态一般都是0?
20-02-26 14:56
11楼说的“复位”是指状态回到0;输出寄存器的状态,启机时将是0,除非有指令立即驱动。
我对西门子的不了解,仅在许多年前用过一次S7,故我以上回复均指一般而言。
20-02-26 16:12
在绝对的第一个扫描周期中,第一次读到Q0.0应该是0。本胖觉得不管是I还是Q,在第一次上电或者冷启动之后,都会初始化映像单元的,全部清零。所以按照语句表的顺序执行的时候(本胖认为STEP7最终执行的应该是语句表),第一次读Q0.0就是0。如果I0.0为1(比如你按着按钮再给PLC上电),这个网络执行完之后,Q0.0变成1。当下一次扫描的时候,这个Q0.0就是1了。
个人观点,不敢保证绝对的正确啊。
20-02-26 17:57

引用 yanli7234 在 2020/2/26 17:57:43 发言【内容省略】

先谢谢版大的回复。
非常认同版主的观点,可惜无论是买的书籍还是手册,从未见有提Q0.0的初始状态为0,
很多人都认为扫描的时候是从上到下,但是我不这么认为,比如这个自锁电路
如果转换成语句表,第二步就是 OR Q0.0   而不是  AN I0.1
但有个问题还想请教一下,你说第一次上电都会初始化映像单元,全部清0,
如果此时外部有个急停按钮,常闭,而程序里的触点是常开的,那么上电后,扫描外部输入状态为接通,即为1,
这个时候怎么会清0呢?
不知道是不是我理解有误,盼复!
最后修改:2020/2/26 19:48:34
20-02-26 19:47
你将梯形图转换成语句,按顺序执行语句,这就是从上到下。
所说第二步
“第二步:读取Q0.0的值,这个值究竟是多少?为什么?这个是输出寄存器的值,还没有写!”
Q0.0是1还是0,取决你上次读到它时的状态,不是上上次哦
20-02-26 23:11
可是如果是第一次运行程序呢?或者说第一次PLC得电
那么按照语句表执行程序时,
第二步读取Q0.0的值,此时值是多少?
上次还没得电,这是我的疑问
20-02-27 08:04

引用 448187990 在 2020/2/25 13:03:54 发言【内容省略】

1.上电,硬件内部清除(包括程序指针,执行和暂存数据内存).如果你没见过这说法,关于处理器,单片机,都会有个硬件复位的初始状态(说明书上都会列出),大多数为0,有的还有不定状态,需要人工(程序)复位.特殊的,有停电保持的寄存器(存储),会先加载进数据存储.
2.读外部到数据存储映像区.
3.执行or.如果知道内部原理,其实都不执行,只要有1就输出.or结果到运算寄存器(一种特殊的存储).
4.执行and.and同样,不一定全执行,只要碰到0,就输出0.运算寄存器和~i0.1.执行结果到运算寄存器.
5.运算寄存器给q,这时候仍是内存映像区.
6.执行输出,内存映像给实际外部do模块.
20-02-27 12:10
CPU头一次上电当然是0啦,不能理解?
你就把各个存储位当成一个个房间,你来做指令执行,你从头一个一个房间进入,第一次进入Q0.0房间里有什么?什么也没有对不对?
20-02-27 12:36

上一页 下一页

工控新闻

更多新闻资讯