我接触到很多同行,他们都说S7-300/400的语句表(即指令表)语言难学,最近在西门子的S7-300/400论坛上,看到有网友感叹“语句表好难学啊!”。 梯形图为什么好学?其原因很简单,梯形图来源于继电器电路图,以触点和线圈为主,因此熟悉继电器控制的电气人员感觉很容易学。
1.语句表非学不可
1)语句表的指令比梯形图多,只有语句表才有下列指令:定时器/计数器的FR指令、与地址寄存器、累加器、状态字、数据块有关的大量指令,循环指令(LOOP)和部分跳转指令,块结束指令等。
2)语句表的功能比梯形图更强,例如循环程序和间接寻址等只能用语句表来编程。
3)实际的控制程序(特别是老外编的程序)几乎都有语句表编写的逻辑块。但是语句表程序一般不能用STEP 7完全转换为梯形图。不能转换的程序段仍然用语句表表示。
因此在实际工作中语句表是很难回避的,要想学好S7-300/400,必须学好语句表。
2.语句表为什么难学?
1)语句表语言有点类似于Intel的51系列单片机的汇编语言,比如它们都有累加器、状态字和地址寄存器等,梯形图并不使用累加器和地址寄存器。
2)语句表程序几乎所有的操作都是在累加器中完成的,因此需要用大量的装入(L)指令来将数据装入累加器,用传送(T)指令来将运算结果从累加器传送到目的地址。比较一下S7-300和S7-200的循环程序,就会发现前者的要复杂得多。
梯形图只需要一条MOVE指令,不需要累加器就可以任意传送数据。
2)S7-300/400的间接寻址比其他PLC的间接寻址复杂得多,只有语句表有间接寻址功能,这也是语句表难学的原因之一。
3.学好语句表的几点建议
1)首先要打牢基础,掌握必备的计算机基础知识,例如二进制数、十六进制数、BCD码、补码、各种数据类型、参数类型、累加器、状态字、地址寄存器、各种寻址方式等的基本概念和应用。
如果在学校学过汇编语言,对学习语句表语言会有好处。有人建议为了学语句表去学汇编语言,我认为倒没有这个必要。
2)多用多练,在实践中学。PLC和计算机的语言就像外语一样,一定要多用多练,主要靠读程序、编程序和调试程序来学习。初学的时候可以找一本好的教材,阅读教材中有大量注释的语句表程序。在此基础上,可以阅读生产中的实用程序。最好能自己编一些程序,然后用仿真软件来调试程序。
3)充分利用STEP 7的在线帮助功能,用鼠标选中用户程序中的某条指令,按〈F1〉键就可以打开该指令的在线帮助,看到指令的详细使用方法,例如指令的功能描述,指令的输入/输出参数的数据类型、允许使用的存储区和参数的意义,指令的执行对状态字的影响,以及指令应用的实例等。