西门子6ES7288-1CR40-0AA0控制器
S7-200 SMART,CPU CR40,经济型 CPU 模块,继电器输出,220 V AC 供电,24 输入/16 输出 .
*** 提供技术支持 :
公司按西门子标准供货 ***一年
本公司签约正式的销售合同,并开具13%的增值税发票。
本公司宗旨:本着以诚信为本,以顾客为中心.***·服务诚信·***.
相关西门子产品技术:
S7-200 SMART上传程序问题
将PLC中的程序上传到电脑上时,之前程序中的符号表就没了,怎么才能把符号表同程序一起上传到电脑上了?
答案
上传的本来就是新文档,哪里有符号表。
你把源程序的符号复制粘贴过来就是了。
昨天在试验的时候发现个奇怪的问题,***上的MODBUS RTU 例程我把M0.1使能放在初始化指令之后程序就无法正常运行,放在初始化指令之后就正常,这是怎么一回事?按道理M0.0置位后才出发M0.1,那我把这段程序放在初始化指令之后也应该是对的逻辑啊?
问题补充:
有点想不通,系统手册V2.4 的“7.1.6 正跳变和负跳变检测”里是这样说明:因为正跳变和负跳变指令需要断开到接通或接通到断开转换,所以无法在***扫描时检测上升沿或下降沿跳变。 ***扫描期间, CPU 会将初始输入状态保存在存储器位中。在后续扫描中,这些指令会将当前状态与存储器位的状态进行比较以检测是否发生转换。
也就说:开机运行的***个扫描周期内是上升沿和下降沿是无法触发任何指令的,那初始化指令***个周期内LD M0.0 N SET M0.1是无效的,但是MBUS_CTRL有效,虽然置位了M0.0,但是把M0.0的初始状态保存到了存储器,那到了***个扫描周期,把M0.0现在的状态跟存储器里存的M0.0初始化状态比较,触发上升沿,那LD M0.0 N SET M0.1这段不管放在哪只要放在MBUS_MSG指令之前都生效啊。因为***个扫描周期到了嘛
答案
这其实是扫描周期的问题:
先从你画错误的那个说起,为啥不行?***个扫描周期:程序段1,不说了就是初始化复位和赋值,M0.0被初始化为0,程序段2,MODBUS RTU初始化,这时M0.0为1,继续往下走,程序段3,M0.0为1,上升沿,但是因为是***个扫描周期所以沿指令无效,这时就不会执行往后的置位指令(m0.5),所以不会轮训,程序继续往下走直至***个扫描周期结束,没有执行M0.5置位。
***个扫描周期,程序段1不执行,程序段2已经初始化完成,程序段3 m0.0还是为1,但是上一个周期也为1,所以不执行。。。完后的循环都和***次一样,一直不会执行轮训程序。
***个图:***个扫描周期:程序段1,和***个图一样,;程序段2,这时M0.0的状态就是0,没有上升沿;程序段3MODBUS RTU初始化,这时M0.0为1,继续往下走,程序段4,这时候M0.5还是没有置1,因为***个周期,程序段2还没有执行程序,所以不会执行轮训。
***个周期:程序段1不执行,程序段2这时候再去读取上一个周期的值M0.0就是1了,所以会执行置位M0.5的程序;程序段3已经初始化完成,程序段4,这时候就开始轮训了
如果想放任意位置的话,可以在M0.0前面添加一个SM0.1的常闭触点,这样就可以***这个程序可以放在这两个位置中的任何一个。