松下FP系列PLC编程手册第4章.docx
《松下FP系列PLC编程手册第4章.docx》由会员分享,可在线阅读,更多相关《松下FP系列PLC编程手册第4章.docx(25页珍藏版)》请在冰豆网上搜索。
松下FP系列PLC编程手册第4章
第四章
编程时的注意事项
4.1在运行状态下修改定时器/计数器的设定值………………………………………………………4-3
4.1.1改写程序中常数的方法…………………………………………………………….4-3
4.1.1.1修改FP-M/FP0/FP1程序中的设定值(常数)…………………4-3
4.1.1.2修改FP-C/FP2/FP2SH/FP3/FP10SH程序中的设定值(常数)…..4-4
4.1.2改写设定值的方法………………………………………………………….4-5
4.2使用多重输出…………………………………………………………………………………….4-8
4.2.1.多重输出…………………………………………………………………………….4-8
4.2.2使用OT、KP、SET或RST指令时的重复输出………………………………………4-9
4.3上升沿检测法…………………………………………………………………………………...4-10
4.3.1采用上升沿检测的指令……………………………………………………………..4-10
4.3.2在运行启动时刻的操作和注意事项………………………………………………..4-11
4.3.3使用控制指令时的注意事项………………………………………………………..4-13
4.4运算错误………………………………………………………………………………………...4-15
4.4.1运算错误……………………………………………………………………………..4-15
4.4.2发生运算错误时的操作模式………………………………………………………..4-16
4.4.3运算错误处理………………………………………………………………………..4-17
4.4.4程序检查要点………………………………………………………………………..4-18
.
4.5处理索引寄存器………………………………………………………………………………..4-19
4.5.1索引寄存器…………………………………………………………………………..4-19
4.5.2利用索引寄存器改变存储区………………………………………………………..4-20
4.5.3使用索引寄存器的示例……………………………………………………………..4-21
4.6处理BCD码数据……………………………………………………………………………….4-25
4.6.1BCD码数据…………………………………………………………………………..4-25
4.6.2在可编程的控制器中处理BCD码数据……………………………………………..4-25
4.7编程时的注意事项……………………………………………………………………………..4-27
4.1在运行状态下修改定时器/计数器的设定值
4.1.1改写程序中常数的方法
4.1.1.1修改FP-M/FP0/FP1程序中的设定值(常数)
对于FP-M和FP1,当符合下列条件时,可以修改程序中的常数。
PLC:
FP1C24、C40、C56、C72和FP-M
操作方式;只能进行RAM操作
重写方法:
使用FP手持编程器II
·对于FP0
PLC:
所有型号的FP0
重写方法:
使用FP手持编程器II
重写步骤(使用FP手持编程器II)
将定时器5的设定值从K30改变到K50的示例
1.读取从包含定时器指令的地址开始的内容
2.清除常数(K30)
3.输入新的常数(K50)
修改后的操作和注意事项
在修改常数后,正在运行的定时器或计数器继续工作。
从下一次执行条件由OFF变为ON的时刻开始,按照改变后的设定值进行操作。
当使用这种方法时,程序自身将被改变。
因此,当模式改变后重新设置回RUN模式、或接通电源时,程序会以修改后的设定值进行预置。
4.1.1.2修改FP-C/FP2/FP2SH/FP3/FP10SH程序中的设定值(常数)
当符合下列条件时,可以改写程序中的常数。
操作方式;只能进行RAM操作
重写方法:
使用编程工具软件
使用FP手持编程器II
使用编程工具软件时的方法
将定时器5的设定值从K30修改为K50的示例
1.读取从包含定时器指令的地址开始的内容
2.清除常数(K30)
3.输入新的常数(K50)
修改后的操作和注意事项警告
在使用编程工具软件(NPST-GR、FPSOFT或FPWIN)或手持编程器修改常数后,正在运行的定时器或计数器继续工作。
从下一次执行条件由OFF变为ON的时刻开始,按照改变后的设定值进行操作。
如果利用编程工具软件(NPST-GR、FPWIN等)允许的布尔(梯形图/助记符)模式的输入方法修改数值,则当数值被改写时,递减运算会中断,并且从下次扫描开始按照新设定的数值进行运算。
当使用这种方法改变程序中的常数时,程序自身会改变。
因此,当模式改变后重新设置回RUN模式、或接通电源时,程序会以修改后的设定值进行预置。
4.1.2改写设定值的方法
改变设定值区域SV中的数值
在下列条件下,可以改变设定值SV中的数值
操作方式:
RAM操作,ROM操作
重写方法:
使用编程工具软件(NPST-GR、FPSOFT、FPWIN等)
使用FP手持编程器II
使用程序(高级指令)
修改后的操作和注意事项
在修改常数后,正在运行的定时器或计数器继续工作。
从下一次执行条件由OFF变为ON的时刻开始,按照改变后的设定值进行操作。
当使用这些方法时,设定值SV中的数值将会改变,但是程序自身未被改变。
因此,当改变模式并重新设置回RUN或接通电源时,将按以下情况执行操作:
当程序中的设定值的数值是由常数K指定时
常数K被预置在设定值区SV中。
改变后,该常数不再有效。
当程序中的设定值是由设定值的编号指定时
如果使用非保持型定时器或计数器,设定值SV预设为0;如果使用保持型定时器或计数器,设定值SV的预置值将按照下一页所述方法进行设置。
方法1:
使用编程工具软件(NPST-GR等)
从在线菜单中选择“监控及测试运行”,使用[数据监控]读取定时器或计数器中的设定值区SV,并改变其中的数值。
1.将光标移动至需要登录的位置
2.按F6(输入)键
3.按F6键,并输入定时器编号
4.按ESC键进行登录
5.将光标移动至需要改写数据的位置。
6.按F4键
7.按F7键,并输入数据。
方法2:
使用FP手持编程器II
通过字数据监控功能读取定时器或计数器的设定值SV,并改写数值。
例)将SV0的数值从K30改为K50。
1.执行字数据监控(OP8)操作
2.读取SV0
3.清除SV0
4.写入新的改变值。
方法3:
使用程序(高级指令)
当需要根据输入条件改变定时器或计数器的设定值时,可以通过如下的方法,利用高级指令改写所需定时器或计数器的设定值SV。
示例:
当输入X0闭合时,将设定值改为K20。
对于FP10SH、FP2和FP2SH以及CPU版本在4.4以上的FP3或FP-C,可以采用与设定值区相同的方法指定SV区域。
使用F0(MV)指令或其他类似指令,可以通过改变被传输的数值对设定值进行修改。
对于FP10SH,可以数据寄存器DT以及作为字数据的继电器WR或其他类似数据区指定为设定值区。
使用F0(MV)指令或其他类似指令,可以通过改变被传输的数值对设定值进行修改。
4.2使用多重输出
4.2.1.多重输出
多重输出是指在程序中重复使用、指定相同的输出点。
如果多条OT或KP指令指定相同的输出点,就被认为使用了多重输出。
即使多条应用指令(如SET或RST指令或用于数据传输的高级指令)使用相同的输出点,也不会被视为多重输出。
如果在存在多重输出的情况下进入RUN模式,则在正常条件下将会被标志为错误。
ERROR(ERROR/ALARM)指示LED将变亮,并且自诊断错误标志R9000将变为ON。
如何检查多重使用
可以利用编程工具,采用以下的方法检查程序中的多重输出:
使用FP手持编程器II:
执行TOTALCHECK(整体检查)功能:
(按键键操作:
)
如果存在多重输出,则显示错误信息(DUPUSE)和相应地址。
使用编程工具软件(NPST-GR、FPWIN等):
执行“整体检查(CHECKAPROGRAM)”中的“检查程序(CHECKAPROGRAM)”。
如果存在多重输出,则显示错误信息(多重使用错误DUPLICATEDUSE)和相应地址。
如果您执行“查找错误(SEARCHANERROR)”,则会显示错误信息和第一个错误的地址编号。
允许使用多重输出
当需要在程序中多次重复使用某个输出点时,可以允许使用多重输出。
在这种情况在下,将系统寄存器20的设置改为“允许(ENABLE)”(使用FP手持编程器II进行设置时,设为K1)。
修改设置完成后,在执行程序时不会产生错误。
4.2.2使用OT、KP、SET或RST指令时的重复输出
执行时内部和外部继电器的状态
当使用传输指令或OT、KP、SET和RST指令对内部或外部继电器重复进行输出时,在执行过程中每步都将改写相应内容。
示例:
当使用SET、RST和OT指令(X0至X2全部闭合)时的处理
在这部分程序中,按照R0为ON进行处理
在这部分程序中,按照R0为OFF进行处理
在这部分程序中,按照R0为ON进行处理
最终的输出由最后的运算结果决定
如果多个指令(如OT、KP、SET、RST或数据传输指令)使用相同的输出,则最大地址处的程序的运算结果决定I/O刷新时的实际输出状态。
示例:
利用OT、SET和RST指令,向相同的输出继电器Y10输出。
当X0至X2全部为ON时,根据触发器X2的结果,在进行I/O刷新时,Y10的实际输出为OFF。
在程序正在进行处理的过程中,如果需要输出某个结果,则可以使用部分I/O刷新指令F143(IORF)。
4.3上升沿检测法
4.3.1采用上升沿检测的指令
使用上升沿检测操作的指令
-DF(上升沿微分)指令
-CT指令的计数输入
-F118(UDC)指令的计数输入
-SR指令的移位输入
-F119(LRSR)指令的移位输入
-NSTP指令
-仅用于FP-C/FP2/FP2SH/FP3/FP10SH的P型高级指令(带前缀P)。
检测上升沿的方法
采用检测上升沿方法的指令只有在检测到触发器从OFF变为ON的扫描周期才被执行。
通常的执行动作检测上升沿的执行动作
在程序执行过程中,对执行条件的前一次状态与当前的状态进行比较,只有在前一次状态为OFF而当前状态为ON的情况下才执行对应的指令。
在其他情况下,不执行指令。
使用执行上升沿检测的指令时的注意事项
当RUN开始时,例如系统电源接通时,程序检测不到触发器从OFF到ON的变化,因此不执行指令。
当出现下页描述的条件时,指令才执行。
当使用下述某个可以改变指令执行顺序的指令时,指令的执行情况可能随输入放生变化的时刻而不同。
在编程时请务必注意这一点。
当上升沿检测型的指令与控制指令一齐使用时,应当加以注意:
-MC和MCE指令
-JP和LBL指令
-仅用于FP-C/FP2/FP2SH/FP3/FP10SH的F19(SJP)和LBL指令
-LOOP和LBL指令
-CNDE指令
-步进梯形图指令
-子程序指令
4.3.2在运行启动时刻的操作和注意事项
RUN开始后的第一次扫描操作
当模式切换至RUN、或在RUN模式下接通电源而执行条件已经处于ON的状态时,不执行上升沿检测指令。
当触发器(执行条件)在切换至RUN模式之前已接通时,如果需要执行这些指令,可以采用如下方法在程序中使用特殊内部继电器R9014。
(R9014是一个特殊的内部继电器,在第一次扫描时为OFF,从第二次扫描开始变为ON。
)
示例1:
DF(上升沿微分)指令
虽然X0初始已经为ON,但是DF指令的输入条件在第2个扫描周期内能够产生OFF→ON变化,因此能够得到微分输出。
示例2:
CT(计数器)指令
虽然X0初始已经为ON,但是计数器的输入条件在第2个扫描周期内能够产生OFF→ON变化,因此计数器能够增计数。
4.3.3使用控制指令时的注意事项
进行上升沿检测的指令可以将执行条件的前一执行状态与当前的执行状态进行比较,只有当执行条件的前一次为OFF而当前为ON时,才能执行这些指令。
在其他任何情况下,这类指令均不执行。
当上升沿检测指令和改变指令执行次序的指令(如MC,MCE,JP或LBL等)一起使用时,指令的操作结果会随输入信号的时序而改变。
请务必注意这一点。
示例1:
在MC和MCE指令之间使用DF指令
DF指令的前次执行状态
DF指令的输入条件(X1)与前一次执行时没有变化,因此不能得到微分输出。
DF指令的前次执行状态
DF指令的输入条件(X1)与前一次执行时发生OFF→ON变化,因此能够得到微分输出。
示例2:
在JP和LBL指令之间使用CT指令。
4.4运算错误
4.4.1运算错误
在执行高级指令时,如果操作无法进行,会产生运算(操作)错误。
发生运算错误时,错误指示灯ERRORLED会变亮(对于FP0,ERROR/ALARMLED会闪烁),并且运算错误标志(R9007和R9008)会变为ON。
运算错误代码K45(H2D)被存放在特殊数据寄存器DT9000/DT900000中。
发生错误的程序地址会存储在特殊数据寄存器DT9017/DT90017和DT90018中。
-对于FP-C/FP-M/FP0C10、C14、C16、C32/FP1/FP3,自诊断错误代码存放在DT9000中,发生错误的程序地址存放在DT9017和DT9018中。
-对于FP0T32C/FP2/FP2SH/FP10SH,自诊断错误代码存放在DT90000中,发生错误的程序地址存放在DT90017和DT90018中。
自诊断错误代码与H一起存储在DT90000中,错误发生的地址存储在DT90017和D90018中。
运算错误类型
地址错误
由索引寄存器所指定的内存地址(编号)超出允许使用的区域范围。
BCD码数据错误
当执行BCD码数据处理的指令时,试图对非BCD码数据进行操作,或者试图进行BCD码转换的数据超出允许转换的范围。
参数错误
如果指令需要指定控制参数,而指定的数据超出允许范围。
区域溢出错误
使用块指令处理的数据超过内存范围。
4.4.2发生运算错误时的操作模式
在一般情况下,当发生运算错误时,PLC会停止执行程序。
但是,如果将系统寄存器26设置为“(发生运算错误时)继续运行”(K1),则即使出现运算错误,CPU也将继续进行运行。
系统寄存器设置方法如下:
1.将CPU模式设置为PROG(编程模式)。
2.从NPST菜单,在“PLC配置”选项中选择“系统寄存器”。
3.在“PLC环境设置(系统寄存器)”菜单中,按F8键选择“异常时运行”后,将会显示系统寄存器20至28的设置内容。
4.将光标移至系统寄存器26,并将设定从“停止”改变到“继续”。
5.按“登录保存”(F1)键,将设置写入PLC。
使用FP手持编程器II版本2
1.将CPU模式设置为PROG(编程模式)。
2.使用FP手持编程器II,按如下步骤按键:
3.指定需要读取和设定参数的寄存器的号码(26)。
4.修改设置时,首先按CLR(帮助)键,并写入参数K1。
有关系统寄存器设定的详细内容,请参阅8.2节。
4.4.3运算错误处理
使用CPU版本2.7之前的FP-M/FP1或使用CPU版本4.4以前的FP-C/FP3时
步骤:
1.清除错误。
断开主控单元的电源,清除ERRLED指示并且使内部错误标志变为OFF。
2.确认错误位置
检查程序,查看所使用的指令是否正确,确认是否可能导致运算错误。
如果难以确定可能发生错误的位置,可以在程序中适当插入“ED”指令,将程序分解成若干部分逐步进行检查。
使用FP0/FP2/FP2SH/FP10SH、CPU版本为2.7或以后版本FP-M/FP1和使用CPU版本为4.4以后的FP-C/FP3时
步骤:
1.确认错误位置。
错误程序的地址被存储在DT9017和DT9018或DT90017和DT90018中,可以通过其中的内容确认错误发生的地址和对应的应用指令。
2.清除错误。
使用编程工具清除发生的错误。
(如果模式选择开关设置在RUN的位置,则当错误清除后,会继续以RUN模式运行。
)
在编程工具软件(NPST-GR3.1版本或以后)的“状态显示”菜单中,按F3键。
在FP手持编程器II中,按下列键。
切断电源并且切换到PROG.模式也可以清除错误。
但是,保持型数据以外的内容也会被清除。
执行自诊断错误设置指令F148(ERR)也可清除错误。
4.4.4程序检查要点
以下是一个有可能发生运算错误的程序示例。
检查存储在索引寄存器中数据是否过大或为负值。
如果数据寄存器使用索引寄存器变址
在这种情况下,索引寄存器(IX)将改变数据寄存器DT0的地址。
如果IX中的数据大于数据寄存器的最大地址,就会发生运算错误。
当IX中数值为负数时,也会发生同样的情况。
是否对不能BCD码-二进制转换的数据进行转换?
如果需要进行BCD码-二进制数据转换
在这种情况下,如果DT0中的数据是一个包含从A到F字母的十六进制数字(如12A4),则该数据转换不能进行,同时会导致产生运算错误。
如果需要进行二进制-BCD码数据转换
在这种情况下,如果DT1中的数据为负值或大于K9999,就会发生运算错误。
检查除法指令中的除数是否为K0。
在这种情况下,如果DT100中的数据为K0,就会发生运算错误。
4.5处理索引寄存器
4.5.1索引寄存器
索引寄存器被用于对继电器或内存区域中的编号(地址)和参数进行间接的数值指定。
(也被称为变址寻址。
)
需要改变继电器、内存区域或常数时,在该参数中加入索引寄存器,并通过向索引寄存器写入修改值(16位数据)实现修改参数。
FP-C、FP-M、FP0、FP1和FP3都有两个索引寄存器—IX和IY,而FP2、FP2SH和FP10SH有14个索引寄存器—I0至ID。
需要修改32位常数时,应该向双字的索引寄存器中写入32位的数据。
示例:
将数据寄存器DT100中的内容传输至索引寄存器指定的编号。
在这个示例中,目标数据寄存器的编号是可变的,主要取决于以DT0为基础的IX中的内容。
例如,当IX为K10时,目标为DT10,而当IX为K20时,目标为DT20。
采用这种方式,可以通过单一指令、利用索引寄存器指定多个内存区域,因此,使用索引寄存器会使处理更加方便。
改变FP2SH和FP10SH索引寄存器的bank,可以使可用数量从从14个增至最大224个(14点,16bank)。
4.5.2利用索引寄存器改变存储区
除数据寄存器外DT以外,索引寄存器可以用于修改其它类型的内存区域。
IXWX0,IXWY1,IXWR0,IXSV0,IXSV0,I0WX10,I2WY1,I3WR0,IASV0,IBEV2
同样也可以修改常数。
IXK10,IXH1001
在FP2SH/FP10SH中,还可以修改继电器编号。
I0X0,IAR10
在FP2/FP2SH/FP10SH中,可以使用一个索引寄存器改变另一个索引寄存器。
在FP-C/FP-M/FP0/FP1/FP3中,不能使用一个索引寄存器改变另一个索引寄存器。
允许:
I0ID
不允许:
IXIY,IXIX(除FP2/FP2SH/FP10SH外)
I0I0,IAIA(对于FP2/FP2SH/FP10SH)
当修改一个32位的常数时,指定编号和其后的数字一起被组合为32位数据。
修改的结果是一个32位数据。
对于FP-C/FP-M/FP0/FP1/FP3
当利用一个进行32位数据处理的指令使用索引寄存器时,应对IX进行指定。
对于FP2/FP2SH/FP10SH(例:
指定I0)
当修改32位数字时,不能指定ID。
注意即使不指定,也不会发生语法错误。
4.5.3使用索引寄存器的示例
反复循环读取外部数据
使用FP2/FP2SH/FP10SH时,可以用I0和ID之间的任何索引寄存器代替IX进行指定。
示例:
将外部输入字寄存器WX3的内容写入从DT0开始的数据寄存器序列中。
1.当X0接通,将K0写入索引寄存器IX中。
2.当X1接通时,将WX3的内容传输到由IXDT0指定的数据寄存器中。
3.IX加1。
在这种情况下,IX的内容将连续改变,目标数据寄存器变化如下:
X1的输入次数
IX的内容
目标数据寄存器
第一次
0→1
DT0
第二次
1→2
DT1
第三次
2→3
DT2
……
……
……
反复循环改变输出目标(仅适用于FP2/FP2SH/FP10SH)
示例:
当每次X0接通时,连续改变输出目标。
1.将K0作为初始值写入索引寄存器I0。
2.当X0闭合时,第一次Y10变为ON。
3.I0的值加1。
从这一时刻开始,每次当X0闭合时,输出目标连续改变,如表所示:
X0的输入次数
I0的内容
输出目标
第一次
0
Y10
第二次
1
Y11
第三次
2
Y12
……
……
……
根据输入的数字,指定输入与输出数据。
使用FP2/FP2SH/FP10SH时,可以用I0和ID之间的任何索引寄存器代替IX进行指定。
示例1:
对由数码开关指定的定时器进行设定。
1.将WX1中的BCD码的定时器编号转换为二进制数据,并设置到索引寄存器IX。
2.将WX0中的BCD码的定时器设定值转换为二进制数据,并存放到IX内容指定的定时器的设定值SV中。
示例2:
输出由数码开关指定的定时器的经过值
1.将WX1中的BCD码的定时器编号转换为二进制数据,并放置到索引寄存器IX。
2.将IX指定的定时器的经过值EV转换为BCD码数据,并输出到外部输出继电器字WY3中。
4.6处理BCD码数据
4.6.1BCD码数据
BCD码是“二进制编码的十进制(Binary-CodedDecimal)”的缩写,即十进制数字的每一位数字都用二进制数字表示。
示例:
使用BCD码表示一个十进制数字。
4.6.2在可编程的控制器中处理BCD码数据
当通过数码开关向可编程控制器输入数据、或向7段显示器(带有解码器)输出数据时,数据必须是BCD码格式。
在这种情况下,需要使用如下所述的数据转换指令。
虽然BCD码算术运算指令(F40到F58)允许对BCD数据的直接操作。
但是,通常将BCD码转换为二进制数据以便使用BIN操作指令(F20至F38)在可编程控制器内部进行运算。
从数码开关输入数据
使用BCD码→BIN转换指令F81(BIN)。
输出至7段显示器(带有解码器)
使用BIN→BCD转换指令F80(BCD)。
4.7编程时的注意事项
不能正确执行的