S7_200plc只能作PROFIBUS_DP总线上的从站这是常识。但前不久有个项目,控制器是S7_200(226),系统中有一个传感器是P+F多圈编码器(DP接口)。要想获得编码器的数据只有用S7_200的自由端口模式来模DP主站才有可能实现。按这个思路,先在WLC(PC+CP5611+Wi)上对P+F编码器进行组态,联通后再截取WLC与P+F编码器的握手数据包和数据交换包。 WLC呼叫: 68 05 05 68 85 82 6D 3C 3E EE 16 P+F回答: 68 0B 0B 68 82 85 08 3E 3C 02 05 00 FF 50 46 25 16 WLC呼叫: 68 2C 2C 68 85 82 5D 3D 3E B8 0F 0F 0B 50 46 00 00 4A 00 00 10 00 02 00 00 00 00 00 00 00 00 00 00 00 82 00 00 00 00 00 00 7F FF 00 00 10 00 02 C4 16 P+F回答: E5 WLC呼叫: 68 07 07 68 85 82 7D 3E 3E F1 D0 C1 16 P+F回答: E5 WLC呼叫: 68 05 05 68 85 82 5D 3C 3E DE 16 P+F回答: 68 3E 3E 68 82 85 08 3E 3C 00 0C 00 02 50 46 33 00 4A 01 00 00 20 00 10 00 00 00 10 00 00 00 10 01 01 09 09 00 00 00 00 00 FE CD 78 00 00 00 00 00 00 20 00 02 00 00 00 50 46 33 38 39 37 36 32 38 38 BD 16 WLC请求数据:68 07 07 68 05 02 7D 00 00 00 00 84 16 P+F回答数据:68 09 09 68 02 05 08 07 F7 8B 75 00 00 0D 16 根据以上握手和交换的数据包,用S7_200的自由口模WLC的呼叫,并接收P+F的回答数据包,再从回答数据包里摘出编码器的转角编码数据就大功告成了。 |
图1 线圈未与右母线(或触点与右母线)相连情况的转换
(a)不符合编程规格的梯形图;(b)符合编程规格的梯形图
(3)线圈不能直接与左母线相连。由图2 (a)不难看出编程者的意图是,使程序一运行10.00、10.01线圈即被驱动。要达到这样的目的,可以使用一个程序中未被调用的内部继电器(如200.00)的常闭触点或者特殊继电器25*(常通继电器)的常开触点来驱动它们,既满足了编程者的功能要求,又不违背梯形图编程规则,如图2 (b)所示。
(4)同一编号的线圈在同一个主程序中连续使用两次称为同名双线圈输出。同名双线圈输出容易引起输出的不确定,编制程序时应尽量避免同名双线圈输出的情况,如何避免同名双线圈输出可以参考图3所示的方案。
图2 线圈直接与左母线相连情况的转换
(a)不符合编程规格的梯形图;(b)符合编程规格的梯形图
图3 同名双线圈输出及其解决方案
(a)原梯形图;(b)运行效果;
在梯形图程序中一般应尽量避免同名双线圈输出,因为这样会造成输出的不确定,如图 (a)所示为同名双线圈输出梯形图。在编程语法上,该梯形图并不违反规定,但在实际运行过程中,其结果有时会和编程者的期望大相径庭。不难看出(a)图中编程者的意图是,当支路1中的触点0.00、0.01都闭合时、或支路2中的触点0.02、0.03都闭合时、或两条支路中的所有触点都闭合时,线圈10.00都能被驱动。但在实际执行中,当触点支路1中的触点0.00、0.01闭合,而支路2中的触点0.02、0.03断开时,线圈10.00并不得电,结果如图 (b)所示。这是因为PLC采用循环扫描的处理方式。在输入采样后,*处理器对梯形图自上而下进行运算。在运算**阶电路时,线圈10.00是被驱动得电的,但运算到*二阶电路时,线圈10.00因触点0.02、0.03断开而不被驱动。在I/O刷新时,以较后的运算为准进行输出,因而此时的线圈10.00是失电状态的。
(5)梯形图程序必须符合顺序执行的原则,即从左到右,从上到下地顺序执行,如不符合顺序执行原则的梯形图程序是无法输入编程软件的。如图4 (a)所示的桥式结构的梯形图,不难看出程序设计者的意图是,当支路l的所有触点均闭合、或支路2的所有触点均闭合、或支路3的所有触点均闭合、或支路4的所有触点均闭合时,线圈10.00被驱动得电。但此类梯形图由于不符合编程规则而无法输入编程软件或手持编程器,应将图4(a)转换成图4 (b)所示,才能利用编程软件或手持编程器写入PLC存储器中。
图4 桥式电路的转换
(a)桥式电路图;(b)转换后的梯形图
(6)梯形图中串联、并联触点使用的次数没有限制,可无限次地使用,如图5所示。
(7)同一程序中两个或两个以上不同编号的线圈可以并联输出,如图6所示。
图5 触点的无限使用
图6 不同编号的多个线圈并联输出