读出S7-1500 CPU的运行时间有多种方式,下面分别介绍这几种方式。 1 通过OB1的启动参数读出运行时间 在非优化的OB1启动信息中带有OB1的运行时间,如图1所示。 图1.读出非优化的OB1中运行时间 将启动信息参数传递到全局变量中就可以读出CPU的上次扫描、较小、较大扫描时间,编程非常方便。 2调用RD_SINFO函数读出运行时间 如果使用优化的OB1,启动信息简化而没有这些运行信息,如图2所示,则必须调用函数读出。 图2优化OB1的启动信息 例如在OB1中调用RD_SINFO函数读出运行时间,程序如图3所示。参数TOP_SI为当前OB1的启动信息, 图3调用RD_SINFO函数 3调用RT_INFO函数读出运行时间 通过函数RT_INFO也可以读出CPU的运行时间,示例程序如图4所示。 图4调用RT_INFO函数 通过模式1、2、3可以读出CPU的上次扫描、较小、较大扫描时间,在这三种模式下,参数INFO的数据类型为LTIME,可以直接读出。也可以通过其他模式读出运行时间的百分比。 4调用RUNTIME指令读出运行时间 通过指令RUNTIME可以从参数RET_Val直接读出CPU的运行时间,单位为秒,MEM为中间保存程序运行的存储器,两个参数类型都是LREAL,除此之外还可以读出一段程序的运行时间。如图5所示。
图5 RUNTIME指令 |
1)立即寻址指令“L 100”表示将100装入累加器1。 2)直接寻址指令“L MW200”表示将编号为MW200这个箱子里的数据装入累加器1。 3)间接寻址指令“L MW[LD300]”表示LD300这个箱子里装的是真正存放数据的箱子的编号(即存放数据的MW的地址),设LD300这个箱子里放的是MW200的,取出这个后,再把MW200这个箱子里的数据装入累加器1。 |
大家好,这次给大家发布关于西门子200plc,定位技术遇到的问题和大家分享。 1.硬件: (1)西门子224XP (2)雷赛控制器及电机 (3)未知品牌扭力传感器(**级不准,难题) 工艺流程:设定角度进行定位,机械原点就是利用扭力传感器。 早上来到现场,直接拿出西门子伺服标准程序(自已没事的时间开发的),检查电路机器上电,无异常。。。 西门子标准程序下载到PLC,设定了量程及一圈的脉冲数,计算出每度的脉冲数,强制了两个变量,设定90°电动机开始转了,说明电机没有问题。 编写一个逻辑程序》》》1找原点(采用4-20MA信号,力量大于7N,认为是原点)》》》2.**定位90°,》》》3.决对定位0°》》》90°和0°之间进行循环。 开始调试程序,找原点(这个原点是根据扭力来找的,是活动的原点,较大的问题出来了,传感器的偏差非常大,有3-5N的偏差,定位到7N的时间,传感器已经达到了12N,就是说原点不准确,)出现偏差,为了修正偏差这个原点采用:当扭力达到7N点用Q2.4输出一个立即点给I0.0,但是这样子效果还是不好。 传感器还是有偏差,关键传感器不准,传递的速度太慢,又对传感器进行滤波,较终解决的传感器偏差比原来小了很多。 找到原点之后:需要对多走的扭力进行修正,多走1N就修正1°,依次进行修正。 程序写完之后发生了,居然可以正常的找到准确的原点了。 本次主要的特点:原点是动原点,值是随时在变化的,而且原点的传感器还是偏差比较大的,希望大家共同交流。。。 |