小车调度系统猜想
1,假设一台小车上有编码器,金属检测开关,PLC,变频器组成一套系统
小车运行在轨道上,或无轨,轨道上有多个定位点,定位点由精神铁块组成,plc收集编码器信号判断当前位置,呼叫信号可由无线串口发射器,或右限收集后,通过无线WIFI发出,PLC 与无线信号接收对接 后解码,获取下一步要到达的位置号。所有小车的位置移动信息,判断均由小车自行处理
小车每到达一个位置,均在PLC内记录当前位置号
假设有10个位置0-10
L0 L1 L10
0------1------2------3-------4-------5-------6-------7------8---------9------------10
在设置参数的当初已经测量了每一段Ln的距离,在0位置中需要安装2套金属定位块
A,当小车第一次上电,并不清楚自己的位置的时候,小车启动自动向左寻找0位置信号,当小车检测到2次金属信号,并且都在3s呢个,则判定到达0位置,会减速向左运动2S后,慢速向右寻找,直到检测到0位置的第一块金属,停止,至此回0位置结束
B 在PLC内部设有10个距离存放量,分别对应触摸屏上的参数设置
L0 MD0
L1 MD4
L2 MD8
L3 MD12
L4 MD16
L5 MD20
L6 MD 24
L7 MD28
L8 MD32
L9 MD36
L10 MD40
C当呼叫信号解码 为要求到达8号工位,而当前位置为0号工位,则需要走的距离则为Lk=L0+L1+L2+L3+L4+L5+L6+L7+L8,这个时候PLC 把Lk距离转换为脉冲数Fk,则Fk与编码器Fn比对数据。
注意的是Fk买材料不能大于PLC 内部可存的MD 的最大值,2147483647,如果大于则PLC需要接入编码器Z相做编码器数据处理或者Fk做数据缩放处理
D,当PLC 接收到的编码器Fn<Fk -(一圈脉冲),PLC驱动变频器全速跑向8号工位,当Fn=Fk -(一圈脉冲),电机开始降速向右形式,并开始判断是否检测到金属块,如检测到金属块,并在FK的约差范围正负100脉冲,即表示已到达位置,并停止,这个时候PLC 要把约差量存起来以作后面移动用
E 上面D提到的是从0位置跑到8位置,下面讨论从8位置返回到6位置,由于在8位置,可跑动的位置有多钟数列组合,那如果按笨的办法可写多种FC程序,如下列表示
(1)8---->0 (2)8---->1 (3)8---->2 (4)8---->3 (5)8---->4 (6)8---->5
(7)8---->6 (8)8---->7 (9)8---->9 (10)8---->10
我们需要写10种程序,按位置呼叫号调用
那整线有10个位置,就意味着 10*10=100个FC,这样做的话,就很繁琐,并且多
能否做成一个FB 或者FC 让输入参数既可以得出电机正反转,行走距离等数据呢,我们下面做一下猜想
(1)输入参数猜想以下一些
InCuNo 当前位置
NextNo 下一位置
L0L L0 距离
L1L L1 距离
L2L L2 距离
L3L L3 距离
L4L L4距离
L5L L5 距离
。
。
。
L10L L10 距离
(2)猜想 当InCuNo-NextNo>0 时,表示电机向左运行
当InCuNo-NextNo<0 时,表示电机向右运行
举例说明,现在8号工位需要往4号工位运动 ,8-4>0,电机向左
那下面我们需要计算出电机要行走的距离,此时内部计算要用到for 循环
在内部新建立起一个数组 L[N] 把L0-L10存入数组中去
当判断InCuNo-NextNo>0 时
temp=0
for(i=NexNo;i<InCuNo+1;i++)
{temp=L[i]+temp;}
这样就可以把数组中的距离L0---L8都加起来了,最后TEMP 输出的就是距离了
而另一种情况,
当判断InCuNo-NextNom0 时
temp=0
for(i=InCuNo;i<NextNom0 +1;i++)
{temp=L[i]+temp;}
这样处理起来的话,无论在哪个位置,要到下一个位置去哪里,都可以通过计算直接得出