建立状态表,通过强制,调试运行程序。
(1)创建状态表
用鼠标右键单击目录树中的状态表图标或单击已经打开的状态表,将弹出一个窗口,在窗选择“状态表"选项,可创建状态表。在状态表的地址列输入地址I0.0、C10、AC1、VD0、VD4、VD8、VD12。
(2)起动状态表
与可编程控制器的通信连接成功后,用菜单“调试→状态表"或单击工具条上的状态表图标,可起动状态表,再操作一次关闭状态表。状态表被起动后,编程从PLC读取状态信息。
(3)用状态表强制改变数值
通过强制C,模拟逻辑条件,是在显示状态表后,在状态表的地址列中选中“C"操作数,在“新数值"列写入模拟数值,单击工具条的“强制"图标 ,被强制的数值旁边将显示锁定图标。
(4)在完成对“C"的“新数值"列的改动后,可以使用“全部写入",将所有需要的改动发送至PLC。
(5)运行程序并通过状态表操作数的当前值,记录状态表的数据。
递增、递减指令用于对输入无符号数字节、符号数字、符号数双字进行加1或减1的操作。指令格式如表1所示。
1. 递增字节(INC-B)/递减字节(DEC-B)指令
递增字节和递减字节指令在输入字节(IN)上加1或减1,并将结果置入OUT的变量中。递增和递减字节运算不带符号。
2. 递增字(INC-W)/递减字(DEC-W)指令
递增字和递减字指令在输入字(IN)上加1或减1,并将结果置入OUT。递增和递减字运算带符号(16#7FFF > 16#8000)。
3.递增双字(INC-DW)/递减双字(DEC-DW)指令
递增双字和递减双字指令在输入双字(IN)上加1或减1,并将结果置入OUT。递增和递减双字运算带符号(16#7FFFFFFF > 16#80000000)。
表1 递增、递减指令格式
说明:
(1)使ENO = 0的错误条件:4.3(运行时间),0006(间接地址),1.1溢出)
(2)影响标志位:1.0 (零),1.1(溢出),1.2(负数)。
(3)在梯形图指令中,IN和OUT可以为同一存储单元,这样可以节省内存,在语句表指令中不需使用数据传送指令
不同的商家的PLC有不同的编程语言,但就某个商家而言,PLC的编程语言也就那么几种。下面,以西门子PLC的编程语言为例,说明一下,各种编程语言的异同。
1、顺序功能图(SFC-Seauential Fuction Chart)
这是位于其它编程语言之上的图形语言,用来编程顺序控制的程序(如:机械手控制程序)。编写时,工艺被划分为若干个顺序出现的步,每步中包括控制输出的,从一步到另一步的转换由转换条件来控制,特别适合于生产制造。
西门子STEP7中的该编程语言是S7 Graph。
2、梯形图(LAD-LAdder Diagram)
这是使用使用多的PLC编程语言。因与继电器电路很相似,具有直观易懂的特点,很容易被熟悉继电器控制的电气人员所,特别适合于数字量逻辑控制。
梯形图由触点、线圈和用方框表示的指令构成。触点代表逻辑输入条件,线圈 代表逻辑运算结果,常用来控制的指示灯,开关和内部的标志位等。指令框用来表示定时器、计数器或数算等附加指令。
在程序中,左边是主流,流总是从左向右流动的。
不适合于编写大型控制程序。
3、语句表(STL-STatement List)
是一种类似于微机汇编语言的一种文本编程语言,由多条语句组成一个程序段。语言表适合于丰富的程序员使用,可以实现某些梯形图不能实现的功能。
4、功能块图(FBD-Function Block Diagram)
功能块图使用类似于布尔代数的图形逻辑符号来表示控制逻辑,一些复杂的功能用指令框表示,适合于有数字电路基础的编程人员使用。功能块图用类似于与门、或门的框图来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非"运算,方框用“导线"连在一起,自左向右。
5、结构化文本(ST-Structured Text)
结构化文本(ST)是为IEC61131-3创建的一种专用的编程语言。与梯形图相比,它实现复杂的数算,编写的程序非常简洁和紧凑。
STEP7的S7 SCL结构化控制语言,编程结构和C语言和Pascal语言相似,特别适合于习惯于使用语言编程的人使用
为什么在FM350-1中选24V编码器,启动以后,SF灯常亮,FM350-1不能工作?
要检查一下,在组态中要选择编码器类型(为24V),再检查一下,FM350-1侧面的跳线开关,因为缺省的开关设置为5V编码器,一般用户没有设置,开机后,SF灯就会常亮。还可以看看在线硬件诊断,可以看看错误产生的原因,是否模板坏了。
62: FM350-1的锁存功能是否能产生中断?
FM350-1的锁存功能是不能产生中断,可以产生过零中断。
FM350-1的装载值必须为零,随者锁存功能的执行(DI的上升沿开始),当前的计数值被储存到另一地址置为初始值零,产生过零中断,在OB40中可以读出中断并相应的锁存值。 锁存值也可以从FM350-1的硬件组态地址的前4个字节中读出。
63: 在FM350-1中,怎样触发一个比较器输出?
FM350-1中自带的输出点具有快速性、实时性,不必要经过CPU的映像区处理。输出点一般对应于比较器,在硬件组态中定义比较器输出类型,如:输出值为1或为脉冲输出,在程序中设置比较值。在FM350-1中,地址在通讯DB(UDT生成)块中为18(比较值1)、22(比较值2),类型为DINT,输出点28.0(DQ0)、28.1(DQ1),这样比较器就可以工作了。
64:在FM350-2中,工作号的作用是什么?
工作号是S7-300 CPU与FM进行通讯的任务号,每次的交换数据只是部分数据交换,而非全部数据,这样可以FM的工作负载,工作号又分写工作号和读工作号,例如在FM350-2中DB1为通讯数据块,如果把写工作号12写入到DB1.DBB0中,把200写入到DB1.DBD52中,再调用FC3写功能,这样个计数器的初始值为200,这里工作号10的任务号是写个计数器的初始值,DB1.DBB0为写工作号存入地址,DB1.DBD52为个计数器装载地址区,同样读工作号100为读前4路,101为读后4路计数器,读工作号存入地址为DB1.DBB2。 但写任务不能循环写,只能分时写入。
65:如果对于4-20 mA模拟量输入模块来说,小于4 mA后转换的数字量是多少?
如果小于4ma,那么将会是输出负值,例如 -1对应的是3.9995mA,而1.185 mA 时,这个数值是-4864 (10进制)如果小于1.185mA,如果禁止断线检测,这个值是8000(16进制)如果有断线检测,会变成7FFF(16进制)。
66:怎样对模拟量进行化和非化?
可以使用以下功能块:
1.在块FC164中,x和y都是整数。
2. FC165中x是整数,y是实数。
3. FC166中x是实数,y是整数。
4. FC167中x和y都是实数。
67:S7系列PLC之间的通讯是什么?
MPI通讯是S7系列PLC之间一种、数据的一种通讯,需要做连接配置的站通过GD通讯,GD通讯适合于S7-300之间,S7-300、S7-400、MPI之间一些固定数据的通讯。不用作连接的MPI通讯适用于S7-300之间、S7-300与400之间、S7-300/400与S7-200 系列PLC之间的通讯,建议在OB35(循环中断100ms)中调用发送块,在OB1(主循环组织块)调用接收块。
68:整个掉电后,为什么CPU在电源恢复后仍保持在停止状态?
整个由一个DP主站S7-300/400以及从站组成。而从站通过一个主开关被切断了电源。由于内部的CPU电压缓冲器,CPU 仍继续运行大约50ms到100ms。此阶段里 CPU 识别出所连接的从站的故障。如果没有编程OB86和OB122的话,CPU 就会因为这些有故障的从站而继续保留在停止状态。
69:在点到点通信中,协议 3964(R)和RK 512 之间的区别是什么?
这两个协议的主要区别在于消息报头和响应消息的不同。使用RK 512,提供的数据完整性,程序 3964(R) 当传送信息数据时,程序 3964(R)将控制字符(安全层)添加到信息数据上。这些控制字符通信伙伴,检查数据是否全部接收,是否无错误。
70:当一个DP从站出故障,如何在输入的映像被清成“0"以前保存它们?
当一个DP从站出故障时,OB86(通过S7-300/400)被调用。可用下列“保存"输入的映像:
1. 把从站的所有输入循环地到一个的区里。
2.如果从站出问题,则 OB86 被启动。在此 OB 里你可设一个标志位来可防止的循环操作。
3. 当从站返回总线后,你把 OB86 里的标志位复位。