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°,依次进行修正。 程序写完之后奇迹发生了,居然可以正常的找到准确的原点了。 本次主要的特点:原点是动原点,值是随时在变化的,而且原点的传感器还是偏差比较大的,希望大家共同交流。。。 西门子200 smart PLC数据的采集 昨天晚上,看到一个网友的提问:“说需要将一个变化了的数据,按规定的定时时间有规律存放到一个连续的数据寄存器地址中、、、、、、”。类似处理这样的程序虽然有很多种编程方法,但我想了想,认为这样的方法可以测试一下。 编程思路: 1) 既然是定时存放数据,那做一个定时中断正好符合要求。新建一个定时中断,SMB34该定时中断时间以1mS为最小单位(最大255mS),按网友要求设置为1000mS = 1秒需要10次中断后再采集一次数据。 2) 因为需要将这个变化了的数据,按每秒钟时间逐个存放,使用启用指针编程方法又比较合适。假设,将采集的数据依次逐个存放到指针的起始首地址VD100中,并存放为30个数据。 3) 当数据存放个数到达第31个时,第一个存放的数据将被覆盖新数据值,如此循环。 编程: 1) 在子程序中调用定时中断,SMB34 = 100(mS),中断事件号10,开中断 2) 在主程序初始该子程序 3) 在中断程序中比较数据采集 定义定时中断子程序:
|