您好,欢迎访问三七文档
中断里计数器定时器不能用SM0.0不能加上升沿SM0.0开机为1,没有0-1跳变,不会加1子程序的等到扫描到他的网络,条件满足才能子程序调用。子程序中有中断立即中断,返回子程序CJ跳转指令CJPXX可以用EF标签结束后不需要写FENDSRET等等。。。。中间程序不执行定时器计数器保持,特殊指令不起作用子程序中线圈会保持,当不调用时,只是不知道现在的状态,保持最后一次的记忆,CPU不会人为去赋值0,赋值1。只能记住最后一次调用的记忆状态。外部输入点只在当前扫描周期有效,如输入点变化,要等到下个扫描周期才会有效。定时器16位一个字有符号+-取正数为0-32767无符号0-65535定时器单位0.001s0.01s0.1s1ms10ms100ms100ms*32767=3276.7smax3600s=1min定时器前面条件断开,常开触点断开,数值清0,需重新计。100ms定时器,每隔100ms加1,监控数值就是设定值得当前值,加到设定值不在加,加到32767也不在加。定时器前面要有保持触点信号,定时器有字存储和位触点,可用比较指令,整数就是一个字。当前值大于等于设定值时,常开触点闭合。也可用定时器的字存储来比较。用RST复位字存储和位状态,,传送不彻底。按下断开,松开又接通,找启动条件,断线圈。上升沿前面检测到条件从0-1的逻辑跳变过程,之后接通到一个扫描周期的时间。在一个扫描周期内是接通的。数据类型位数组合字节字双字14816322162566553542亿整数范围0-65535INT16位1111111111111111=65535整数分为无符号0-65535有符号-32768------+327671个字节0-255数值为8位字节2^8=256。双整数DINT32位32个1无符号42亿,有符号+-21亿BCD码一种编码形式位数组字节字双字1481632一组4个位,用4个二进制位来表示一个十进制数。10#192#0001001110#16=2#00010000BCD#0001100110#16=BCD#00010110把十进制每个位拆开,写成二进制二进制8421BCD码4个二进制数来表示一个十进制数。10102^32^22^12^08*1+4*0+2*1+1*0=10SFC状态转移图手绘流程图STL状态梯形图指令部分不同状态下的状态中,可以出现双线圈,同一个定时器T、相邻的计数器C都不能在相邻的程序段中出现,内母线上对LDLDI编程后,下面的程序用M8000做触点开始并联S状态触点或者交换位置,不然编译不了。直接驱动负载的,需要用M8000做开始,在相邻两个状态中,可以用互锁限制输出线圈瞬间短路。起始必须用S0-S9。先驱动,后转移同一状态中,向连续状态转移用SETS40S41,向不连续的状态转移时用OUTS50指令每个步进点S转移至下一个步进点后,原步进点会执行”断电”的动作。指令在步进梯形程序完成之后要加上RET指令,而RET也一定要加在STL的后面。RET为步进顺控程序结束指令,代表RET指令以下的程序就不属于步进程序了,本程序只要一开机M8002SETS0就会执行,也就是说步进控制程序就触发开始了,同时LDX000----OUTY0也一样能运行,它不受以上顺控程序步的约束,只要XO有信号输入,YO便会输出RET是步进梯形图的结束标志.它不具备返回功能.用处是隔离后面的普通梯形图.RET指令要直接连接到左母线。你如果想在最后一个步里跳转回你的初始步(比如S0),请在最后一个步里写上SETS0,否则程序会停在最后一步中不走了.另外提醒一下:STL步进梯形图和SFC是有区别的,两者不要混为一谈.SFC中没有RET指令.编程思路是和STL一样的.但输入方式有巨大区别.提高水平无非几个途径:1、从书本中学习编程实例,然后自己动手实验2、学习别人的现有程序3、在工程实践中学习和领悟——这个需要时间4、从VB、VC等高级语言编程思想中吸取营养——这是比较高的境界了最后说一点,plc编程掌握一定的技巧就够了,不必在技巧方面下太多功夫,编程的最终目的一般就这么几条:1是快速高效的开发,2是稳定可靠的运行,3是易于阅读和维护;后期编程最重要的是编程的方法和思路。曾经有人说他在plc程序中几乎不用定时器指令了,需要定时器的地方就用定时中断+计数实现,后来我也做到了这点。我想,能够理解这句话的人有多少?能够看透这句话背后意义的人又有多少呢?
本文标题:PLC笔记
链接地址:https://www.777doc.com/doc-5822035 .html