问题1:在线程序与PLC中程序不一致时也会执行在线监控功能,软件不自动判断程序一致性?
这样会造成监控失去意义。例如如下程序运行正常,PLC的00001有输出,PLC输出指示灯亮。
点击“PLC离线”后无意间修改了程序,将输出线圈00001改为00002。
此时点击“PLC连线”,输入密码,就会出现如下界面:
这个监控界面容易给人造成错觉,粗看界面显示,0002有输出?细看之下00002=OFF,没有输出。
个人觉得做不到软件自动判断程序一致性,还不如在这种情况下就压根不要执行“PLC连线”功能要好,执行了会误导人。
问题2:FLASH掉电保持寄存器初始值怎样设定?系统默认不是0?
如图程序下载进PLC连线监控
发现48080(软件中说明48080是FLASH掉电保持寄存器)初始值为65535,用户能设置这类寄存器的初始值为0吗?(因为我的逻辑意图是:PLC上电首次扫描,将寄存器48080的值与常数0比较,相等的话就MOV一个常数10给48080)
问题3:功能块指令能连着写吗?
为了解决48080初始值不为0的问题,我在问题2中的逻辑前面加了一个清零逻辑,结果出现下面的怪现象:
48080确实清零了,没错。但是紧接着第三行比较指令,48080与常数0比较结果相等,应该是中节点有输出,继续执行下一个MOV指令,将常数10传送给48080,最终结果48080的值应该是10,而不是0啊!
到底哪里出了错?
楼主最近还看过
1:连线功能只确保密码正确,就可与PLC建立通讯连接,这个时候可以做变量监控与设置。
如果程序不一致,当你在线修改程序的时候,就会提示出错。
2:FLASH保存区域的数值默认为FFFFH(65535),这个是为了做显意的区分,这个我们会考虑在后面将其数值初始化默认为0
3:感谢秦工的测试,这个问题牵涉都PLC的扫描方式的问题。希望各位看官通过通过秦工的这个帖子能有所了解。我们的PLC采用的是垂直扫描的方式(模拟量实际的电路执行方式,并联执行,有别于其他家的横向扫描)。在同一个网络,最左边的一列最先执行,同一列是从上到下。如图的程序,扫描顺序如下:
1列 扫描09925的状态
-》2列第一行扫描10004的常闭点--》2列第二行的横线短接线--》2列第4行RCMP指令,因此时48080为FFFFH,则比较指令的上节点应该输出
--》3列第一行,横向短接线扫描--》第二行 MOVE ,#0,48080--》3列5行,横线短接线。.....
因此,在第2列48080的数值为FFFF,所以比较指令的上节点输出,不是中节点,在第三列,将48080的数值赋值为0,。如果要实现你的功能,需要将MOVE,#0,48080往左边一列移动一下即可。如下图:
另外注意,横向短路的实线是需要占用一个扫描时间的,虚线则不占用扫描时间。
问题6:图示逻辑
要求输出量00001和00002互锁,一般普遍意义上,扫描周期最后才更新输出,上述逻辑,假设00002(关)有输出,某一扫描周期图示逻辑段前面有00001(开)输出条件,上面图示逻辑第一个网络中00001(开)并不会马上更新输出,必须等到扫描结束。于是这一扫描周期结束时就会出现00001(开)和00002(关)同时输出的情况,必须等到下一周期扫描结束才能互锁。为了解决这个问题,一般输出互锁前面逻辑条件用的是中间量M,M寄存器在扫描周期过程中是实时刷新的,00001(开)条件用M输出量表示,同时用M输出量R(复位)00002(关)就不会出现上述问题。
在咱们矩形的软件中使用S或者R命令,提供的变量均为0变量,0变量也就是输出变量,是不是同样也符合扫描结束才更新的理论?这样的话,上面的逻辑互锁咋样解决?