欢迎<陈华工控>网友的参与!
我的这个题目是从<luw816>网友的求助贴《帮忙找下问题》所述实际问题中抽象出来的,抽象出其最中心最实质的问题,排除其非主流的、非实质的部分,以便让中心问题更具有代表性。
第2楼的回答还没擦着问题的边呢!这可能是因为我在主题帖里说得太简单,没有把“每一轮导通”及“隔轮输出”很明确的加以定义,以致让<陈华工控>解偏了题。
下面我用图片内容加以明确的说明。如下所示的同一个SFC程序(仅供实验的片断)在不同系列的PLC上运行,其结果是不一样的。
譬如,该片断在三菱FX2n系列PLC上运行时,“状态S0内的<PLSY>指令”在“状态S0”的任何一轮导通之时段里,输出端口Y0都可以正常的输出脉冲。而在FX1s或FX1n系列的PLC上运行该片断时却会是这样的情况:“状态S0”第一轮导通的时段里,Y0可以正常连续的输出指定频率的脉冲。但“状态S0”第2轮导通的时段里,Y0却一个脉冲都不可能输出。再到“状态S0”第3轮导通时,<plsy>指令的执行又回归于正常!总之,该片断在FX1s或FX1n系列PLC上运行的结果是“隔轮输出”。
请网友们注意:这个“轮”不是指程序的“扫描周期”。我把它叫做“任务周期”,即我们确定的控制工序从第1个工序顺序的逐步转移到最后一个工序工作完毕为1个“任务周期”。在其中某一个工序里,程序的扫描是有无数个“扫描周期”的。
PLSY(FNC57)指令是一种高速指令。它的“执行过程”(单指脉冲的输出过程)是独立于程序扫描周期之外的过程,不受程序的扫描周期的制约。在该指令的驱动条件为ON的最初一个周期里开始运算,然后立即输出脉冲!(不等程序扫描到END命令,它是以中断形式执行的。)
脉冲输出的过程根本就与程序的大小(8K或者0.02K) 毫无关系!
我的见解是周期----1.PLC程序中输入到逻辑分析再到输出的运行时间为(软件一周),2.另外PLC主机模块(的频率)扫描各个模块的一次运行时间(硬件一周)。
其中两者,1<2就出现楼主的故障,1>2PLC正常工作,1近似于2,则PLC不正常工作。
wanggq的回复:
<陈华工控>在12楼帖子的意思是说№4楼那个实验程序(也可以称作“片断”)在FX1S 、FX1n上运行出现“隔轮输出”的问题是因为该程序太简短,因此PLC在处理这个程序时所用的时间(即“软件一周”)太短,形成“软件一周”<“硬件一周”才导致了这FX1s或FX1n不能够在“状态S0内的片断”导通轮次为“偶次”的时段里输出脉冲的。
对于这个“软件一周”的时值,我们是有办法控制的。办法是:把M8039设置为ON,并把D8039的内容设置成“K100”(即把扫描周期控制为100mS),这就必然要形成“软件一周”>“硬件一周”了!按照<陈华工控>的说法(1>2PLC正常工作)“隔轮输出”的问题就解决啦!
但事实是,“隔轮输出”这一问题与程序的扫描周期无关(即与“软件一周”是否小于“硬件一周”无关)!!
可能我表述不清楚,楼上怎么理解误差那么远,我的意思刚刚是整个程序,非单独步或片段。后面的意思也刚好相反,周期啊,郁闷!
wanggq的回复:
我说的“№4楼的那个实验片断”本身就是一个完整的“程序”呀!从程序№0步的“LD M8002 ”开始,到№20步的“END”这不就是一个完整的“程序”吗?!
PLC从输入映像存储区读入输入端子的ON/OFF映像,再从程序的0步开始逐步运算到第20步END,再做输出处理。这个过程不就是一个程序的扫描周期吗?!纵然STL程序在PLC实际运行时,其中不导通的"状态S内片断"要被跳过,而不经扫描.但这也丝毫不影响含有STL片断的程序作为"完整程序"的"资格"!
执行完程序的一个扫描周期的时间不正是<陈华工控>所说的“软件一周”吗?不就是“其中两者,1<2就出现楼主的故障,1>2 PLC正常工作”这句话中提到的“1”吗?!我们设法把这个“1”的时值控制为100mS,不就是保证了“1”>“2”("2"即<陈华工控>所谓的"硬件一周")的时值吗?!怎么叫"后面的意思刚刚相反"了呢?!!而应该说是你自己在第12楼的说法正好与你先前在第6楼说的“怎么运算得过来……要么升级硬件,要么减小程序”之意思刚刚相反、自相矛盾!!
"这个悬赏结贴和给分你自己去弄的,工控网不会去动的。"
回复:
《工控网》有个结帖规矩:15日之内必须结帖,否则系统会自动结帖。这个系统自动结帖是没有“专业眼光”的!它根本就分辨不清所有的回帖中哪些帖子的内容才是正确的,哪一个正确内容才是有“资格”获得“悬赏分”的!所以,它一般是不加分辨的将“悬赏分”给第一个回帖。即便第一个回帖的内容明显的错误,它也照样给这个“错误帖”奖赏!
举例1:下面这个悬赏帖的10分就是系统擅自代<无敌小强>作主,随便的给了第1楼的回帖。
这个回帖根本就没有回答出<无敌小强>网友问题的答案来,却白占了<无敌小强>的“悬赏”!
举例2:
这№1楼的内容决不是“悬赏者”想要得到的答案!这个“悬赏分”也决不是“出题者”自主决定奖给<怪话二王>的!
举例3: 这个例子能够充分证明,这下面这个“悬赏分”给第1个回帖并不是“悬赏者”本人的作为!
请看,例3中的这个“悬赏者”<luw816>申辩说把“悬赏分”奖给<红雪>“不是我给的,好像是系统自己给的啊”!
只要能够支持<PLSY>指令的所有系列PLC都能够正常的输出脉冲。同样,只要能够支持STL程序的所有系列PLC也都能够正常的运行STL程序。
可是把<PLSY>指令运用到STL程序片断里,把它放到FX1s或FX1n系列PLC上运行,“脉冲输出”的功能就会出现“隔轮有效”。这就给了我们一个明显的线索:脉冲输出功能“隔轮有效”的问题是由“STL程序”的特点及“脉冲输出指令”的特点共同来决定的!连新手的<luw816>网友都知道从<PLSY>指令的《使用注意事项》去寻找答案!