//(VD4)=2.54
LD SM0.1 MOVR 2.54, VD4
// 将计数器数值(英寸)载入AC1 LD I0.0 ITD C10 AC1 // 将数值转换为实数 DTR AC1 VD0 MOVR VD0 VD8 // 乘以2.54(转换为厘米) *R VD4 VD8
// 将数值转换回整数 ROUND VD8 VD12
图5-22 将英寸转换为厘米参考程序
注意:在程序中VD0、VD4、VD8、VD12,都是以双字(4个字节)编址的。 4. 建立状态表,通过强制,调试运行程序。
(1)创建状态表
用鼠标右键单击目录树中的状态表图标或单击已经打开的状态表,将弹出一个窗口,在窗口中选择“插入状态表”选项,可创建状态表。在状态表的地址列输入地址I0.0、C10、AC1、VD0、VD4、VD8、VD12。
(2)起动状态表
与可编程控制器的通信连接成功后,用菜单“调试→状态表”或单击工具条上的状态表图标
,可
起动状态表,再操作一次关闭状态表。状态表被起动后,编程软件从PLC读取状态信息。
(3)用状态表强制改变数值
通过强制C,模拟逻辑条件,方法是在显示状态表后,在状态表的地址列中选中“C”操作数,在“新数值”列写入模拟数值,然后单击工具条的“强制”图标
,被强制的数值旁边将显示锁定图标
。
(4)在完成对“C”的“新数值”列的改动后,可以使用“全部写入”,将所有需要的改动发送至PLC。 (5)运行程序并通过状态表监视操作数的当前值,记录状态
表的数据。
5.3 表功能指令
数据表是用来存放字型数据的表格,如图5-23所示。表格的第一个字地址即首地址,为表地址,首地址中的数值是表格的最大长度(TL),即最大填表数。表格的第二个字地址中的数值是表的实际长度(EC),指定表格中的实际填表数。每次向表格中增加新数据后,EC加1。从第三个字地址开始,存放数据(字)。表格最多可存放100个数据(字),不包括指定最大填表数(TL)和实际填表数(EC)的参数。
图5-23 数据表
要建立表格,首先须确定表的最大填表数。如图5-24所示。
// 输入表格的最大填表数 LD SM0.1 MOVW +6, VW200
图5-24 输入表格的最大填表数
确定表格的最大填表数后,可用表功能指令在表中存取字型数据。表功能指令包括填表指令,表取数指令,表查找指令,字填充指令。所有的表格读取和表格写入指令必须用边缘触发指令激活。
5.3.1 填表指令
表填表(ATT)指令:向表格(TBL)中增加一个字(DATA)。如图5-25所示。 说明: (1) DATA为数据输入端,其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC;数据类型为:整数。
(2)TBL为表格的首地址,其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, , *LD *AC;数据类型为:字。
(3)指令执行后,新填入的数据放在表格中最后一个数据的后面,EC的值自动加1。 (4)使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),SM1.4(表溢出),SM4.3(运行时间)。
(5)填表指令影响特殊标志位:SM1.4(填入表的数据超出表的最大长度,SM1.4=1)。
【例5-16】填表指令应用举例。将VW100中的数据1111,填入首地址是VW200的数据表中(图5-23)。程序及运行结果如图5-26所示。
LD I0.0
ATT VW100, VW200
图5-26 例5-16题图
5.3.2 表取数指令
从数据表中取数有先进先出(FIFO)和后进先出(LIFO)两种。执行表取数指令后,实际填表数EC值自动减1。
先进先出指令(FIFO):移出表格(TBL)中的第一个数(数据0),并将该数值移至DATA指定存储单元,表格中的其他数据依次向上移动一个位置。
后进先出指令(LIFO):将表格(TBL)中的最后一个数据移至输出端DATA指定的存储单元,表格中的其他数据位置不变。
表取数指令格式如表5-20所示。
表5-20 表取数指令格式
LAD STL 说明 FIFO TBL,DATA LIFO TBL,DATA 输入端TBL为数据表的首地址,输出端DATA为存放取出数值的存储单元 操作数及数据类型 TBL:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *LD, *AC。数据类型:字。 DATA:VW, IW, QW, MW, SW, SMW, LW, AC, T, C, AQW, *VD, *LD, *AC。 数据类型:整数。 使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),SM1.5(空表)SM4.3(运行时间)。
对特殊标志位的影响:SM1.5(试图从空表中取数,SM1.5=1)。
【例5-17】表取数指令应用举例。从图5-26 的数据表中,用FIFO,LIFO指令取数,将取出的数值分别放入VW300,VW400中,程
序及运行结果如图5-27所示。
LD I0.1
FIFO VW200, VW300 LIFO VW200, VW400
图5-27 例5-17题图
5.3.3 表查找指令
表格查找(TBL-FIND)指令在表格(TBL)中搜索符合条件的数据在表中的位置(用数据编号表示,编号范围为0~99)。其指令格式如图5-28所示。
(1)梯形图中各输入端的介绍
TBL:为表格的实际填表数对应的地址(第二个字地址),即高于对应的“增加至表格”、“后入先出”
或“先入先出”指令TBL操作数的一个字地址(两个字节)。TBL操作数:VW, IW, QW, MW, SW, SMW, LW,
T, C, *VD, *LD, *AC 。数据类型:字。
图5-29 例5-18题图TN:是用
来描述查表条件时进行比较的数据。 PTN操作数:VW, IW, QW,
MW, SW, SMW, AIW, LW, T, C, AC, 常量, *VD, *LD, *AC。数据类型:整数。
INDX:搜索指针,即从INDX所指的数据编号开始查找,并将搜索到的符合条件的数据的编号放入INDX所指定的存储器。INDX操作数:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC。数据类型:字。
CMD:比较运算符,其操作数为常量1~4,分别代表 =、<>、<, >。数据类型:字节 。 (2)功能说明
表格查找”指令搜索表格时,从INDX指定的数据编号开始,寻找与数据PTN的关系满足CMD比较条件的数据。参数如果找到符合条件的数据,则INDX的值为该数据的编号。要查找下一个符合条件的数据,再次使用“表格查找”指令之前须将INDX加1。如果没有找到符合条件的数据,INDX的数值等于实际填表数EC。一个表格最多可有100数据,数据编号范围:0~99。将INDX的值设为0,则从表格的顶端开始搜索。
(3)使ENO = 0的错误条件:SM4.3(运行时间),0006(间接地址),0091(操作数超出范围)。 【例5-18】查表指令应用举例。从EC地址为VW202的表中查找等于16#2222的数。程序及数据表如图5-29所示。
为了从表格的顶端开始搜索,AC1的初始值=0,查表指令执行后
AC1=1,找到符合条件的数据1。继续向下查找,先将AC1加1,再激活表查找指令,从表中符合条件的数据1的下一个数据开始查找,第二次执行查表指令后,AC1=4,找到符合条件的数据4。继续向下查找,将AC1再加1,再激活表查找指令,从表中符合条件的数据4的下一个数据开始查找,第三次执行表查找指令后,没有找到符合条件的数据,AC1=6(实际填表数)。
5.3.4 字填充指令
字填充(FILL)指令用输入IN存储器中的字值写入输出OUT开始N个连续的字存储单元中。N的数据范围:1~255。其指令格式如图5-30所示。说明如下: