编码器给plc的脉冲信号我读出来以后,要让力控产生随机数与之进行比较,同时要把脉冲数转化成时间的长度,该怎么转化,在哪里转啊!?
如果编码器是匀速旋转,用编码器输出脉冲可转换为时间长度:即知道每发出1个脉冲的时间为T0,则N个脉冲的时间长度Tn=T0*N,如果编码器是非匀速旋转,就不能用输出脉冲个数来转换时间长度,此时可用时间中断方式产生一时钟脉冲F,再用F对一存储器(如MW10)进行加1计数。如F=100HZ,则每计1个脉冲的时间为0.01秒。你可用编码器输出的脉冲对MW10进行读取数,其值就是该脉冲对应的时间的长度值。
这个转换过程在PLC内进行。
原来你是测长度,这比较简单:最好将侧辊的直径改一改,使编码器输出脉冲直读无需计算,即让编码器每1个脉冲为标准的计长单位值,如直径=19.1mm,辊的周长=60mm,旋转1圈编码器输出的1个脉冲就表示长度=1mm。用高速计数器对其计数,其计数值即为测长值,测长单位为mm.
关于编码器自身有输出脉冲,与PLC连接后无输出脉冲,而且编码器的电源线调换也无输出脉冲的话,说明编码器的输出逻辑反了,即如果现在的编码器是NPN型的OC门晶体管输出,应换PNP型的OC门晶体管输出的编码器试试,有关这方面问题你可看看我写的“对5V光电开关、编码器等有源器件如何与PLC输入点连接的讨论”,地址为:http://bbs.gongkong.com/Details/201205/2012050807514500001-1.shtml
回复内容:
对:wyb2866255---王者之师关于辊的长度是改不了的,已经是成品了,那么1个脉冲表示长度值为:0.35÷60=5.83mm,可在PLC里进行乘法运算,即:5.83×脉冲数,具体编程:可定时(如0.5秒)采集计数值,再将计数值乘以5.83,其积送入通讯变量(如VW0),上位机就自动读取长度值。 内容的回复:
回复内容:
对:wyb2866255---王者之师关于 1、你所说的随机数是指在上位机能进行设置的长度值吧?如果是,编码器脉冲转换为长度值的运算应在PLC内进行,转换为长度值后再送给上位机的组态,再与随机数比较。 2、但是不知道界面上显示的那个米数是怎么转化的! 见9楼所述 。 3、如想在在组态里换算:在组态的数据改变命令语言里编写-:测长变量=5.83*脉冲数变量。 这样当脉冲数变化时,在数据改变命令语言里将自动的随着脉冲数的变化进行乘法运算,将乘积变量在界面上作显示处理,就可看到长度值的变化。内容的回复:
首先非常感谢您,你说的我明白了,但是事实上是,这个程序不是我做的,他是用组态产生的随机数,和plc的随机数进行比较的,是在组态中转化成米数的,我就不知道他在组态哪里转的,你说的那个程序运行时的那个数据改变命令里没有那个转化的,只是有随机数,plc的程序中也没有对脉冲进行换算。组态换算的地方我还没找到!