V80小型PLC应用和选型讲座 点击:11482 | 回复:80



王晟磊

    
  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 12:06:00
楼主
V80应用指南目录 

1、PLC简介 

1.1 PLC历史简述 

1.2 PLC定义与选取

1.3 附一、控制器三十年和未来十年控制器的发展方向 

2、PLC的分类 

3、V80的软硬件结构和实现原理 

4、V80硬件简介——CPU模块 

5 、V80硬件简介——扩展模块与附件 

6、 VLADDER编程简介 

7 、V80变量地址命名和分配 

8 、V80接点指令   

9 、V80功能块(应用指令)

10、 定时器   

10.1、例程:脉冲定时器TP时序(单稳态)   

10.2、例程:接通延时开关   

10.3、例程:断开延时开关   

10.4、例程:定宽脉冲   

11、 计数器   

11.1、例程:加减计数器   

12 、数学运算   

12.1、例程:加法器   

13 、寄存器赋值指令和功能块级联   

13.1、例程:字到位的赋值   

13.2 、例程:变量的初始化   

13.3、功能块级联   

14 、特殊功能位   

15 、V80存储空间分配和掉电保持(带电池RAM)   

16、 测速程序——功能块脉冲或电平有效   

17、 扫描方式   

18 、初始化变量和移位指令   

19 、PID——温控、变频

20、 通信   

21 、运动控制   

22 、子程序调用 

 



王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:40:00
21楼
10.3、例程:断开延时开关 功能:当输入断开后,延时一定时间关断
  该程序用来实现一个延时开关的功能,动作过程如下: S1:当10001闭合后,计时寄存器41000清零,不计时,此时00001输出为OFF,00002输出为ON; S2:当10001断开后,定时器的计时寄存器41000开始0.1s累加一次,00001输出OFF,00002输出ON; S3:当定时时间到了后(5S),定时器的计时寄存器41000停止累加,00001输出ON,00002输出OFF;

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:43:00
22楼
10.4、例程:定宽脉冲 功能:输出固定周期的脉冲方波,脉冲的宽度为一个扫描周期
  该程序用来实现一个定宽5S的脉冲功能,动作过程如下: S1:当上电后,计时寄存器41000开始计时,此时00001输出为OFF; S2:当定时时间到了后(5S),00001输出ON,保持一个扫描周期的宽度后清41000; S3:进入下一个循环周期

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:45:00
23楼
11、计数器 V80的计数器分为上升沿和下降沿计数器两种计数器。(计数器非高速计数器,输入脉冲速度不应超过用户梯形图的循环速度)

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:47:00
24楼
11.1、例程:加减计数器
功能:10001上升沿时计数器加1,10002上升沿时计数器减1。 该程序用来实现一个加减计数器,动作过程如下: S1:10001每输入一个上升沿,计时寄存器41000加1; S2:10002每输入一个上升沿,计时寄存器41000减1; S3:当计数值到达上限后,自动回零;

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:48:00
25楼
12、数学运算
V80提供了十进制、十六进制、浮点数三种数据类型的数学运算功能块,十进制、十六进制还提供了单字和双字两种格式的指令。每种数据类型都有加、减、乘、除、开方等几种运算指令,其中减法还有补数格式的减法指令,我们仍以4位数十六进制加法器为例。 

 

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:51:00
26楼
12.1、例程:加法器 功能:10001上升沿时41002 = 41000+41001
该程序用来实现两个4位16进制数相加: S1:10001每输入一个上升沿,计时寄存器41000加上41001,结果写入41002;
注1:V80的许多功能块均可以选择是电平或者脉冲有效,用户可以通过选择功能块的‘上升沿触发’选项来实现脉冲有效,如果不选则为电平有效。 注2:V80的浮点数格式是MOTROLA格式 PLC浮点数格式:以两个字符组(word)来表示: Bit0~Bit6表示指数,用E表示; Bit7表符号位:0为正、1为负,用S表示; Bit8~Bit31代表分数,用Fr表示; PLC浮点数和十进制数的转换公式如下: D=(-1)S×2(E-64) ×Fr; S= sign bit、E=指数 IEEE浮点数格式:以两个字符组(word)来表示: Bit31为符号位:0为正、1为负,用S表示; Bit23~Bit30为指数,其读数值用E表示; Bit0~Bit22为系数,为二进制纯小数,十进制值用X表示; IEEE浮点数和十进制数的转换公式如下: D=(-1)S×2(E-127) ×(1 + X); S= sign bit,E=指数,X=系数 注3:如果需要将PLC的浮点数送给第三方设备,如屏或者人机界面,如果对方不支持PLC的浮点数格式,则需用浮点数转换功能块进行转换。 注4:如果数据原来是整型数,则需要将其转换为浮点数进行运算,这样才可以保证精度。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:54:00
27楼
十三、寄存器赋值指令和功能块级联 

寄存器赋值指令一般用来对寄存器进行赋值、初始化、移动,也可以用来对字和位进行相互赋值。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:56:00
28楼
13.1、例程:字到位的赋值
功能:将41000寄存器内的值赋给从00001~00016的16个位 该程序用来实现字给位的赋值: S1:当10001输入一个上升沿时,41001的16个位分别赋值给从00001到00016的位; 注1:字和位之间的相互操作,必需保证位变量要16位对齐,比方说上面的程序,如果输入00002则是不允许的,只能输入00001、00017、00033等1+16*N的变量地址。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 16:57:00
29楼
13.2、例程:变量的初始化 功能:对寄存器进行赋值、初始化、移动
该程序实现了上电时对一堆寄存器进行初始化功能,动作过程如下: S1:当上电后,特殊寄存器09925输出一个周期的ON脉冲;(09925请查看特殊寄存器说明) S2:这个脉冲对上述的所有寄存器进行初始化;

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:01:00
30楼
13.3、功能块级联: 注1:并不是所有的功能块的O1= I1,用户在级联时需要认真看软件手册中的指令说明,比方说减法指令的O1就不等于I1,而是表示减完后的结果是否大于0; 注2:如前面的数据传输例子因为MOVE功能块的O1= I1,所以可以把MOVE功能块串联起来,但是如果前面的MOVE功能块选择了脉冲有效,则O1将输出一个脉冲,而不再真正的等于I1。图示如下:
V80共有接点指令12条,功能块131条 基本应用指令7条 数学运算指令28条 表格应用指令10条 逻辑运算指令4条 位应用指令6条 数值转换指令14条 流程控制指令11条 其它应用指令50条 合计:131 如前面所述,V80的功能块可以由其功能输入线和功能输出线组合成不同的功能,因此它的应用比很多其它品牌PLC有更多的灵活性,在后面我们将分别针对具体的应用和功能详细说明。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:04:00
31楼
十四、特殊功能位 为了便于用户编程,V80提供了一些特殊功能位,大多数的特殊继电器都是掉电保持的,重新上电并不会影响特殊继电器的状态,用户可以在程序中,或者在状态页中对特殊继电器进行操作。下面针对一些常用的特殊功能位进行说明。 特殊继电器说明:
1、09922:电池电力指示 状态说明:1:良好;0:不足 V80的实时时钟、断电保持线圈和掉电保持寄存器在系统断电后都需要电池来提供工作电源,而电池的电量是有时间限制的,在理想的环境,V80的电池可以保持10年以上,但在一些金属粉尘、油污很大的地方,尽管电池涂敷了三防漆,但电池的寿命还是会受到一定程度的影响,因此我们提供了一个特殊功能位09922,供用户在程序中使用。在电池电压不够时PLC的ERR错误指示灯会亮,同时09922会变成0,用户这时需要对电池进行更换,电池是3V的锂电池,一般可以选型号为2032或者更大的电池。 2、09923:输出线圈掉电保持总控制位 状态说明:1:所有线圈全部掉电保存;0:由断电保持线圈设置功能来设置那些线圈需要掉电保持 在存储空间一章中我们已对09923进行说明,当09923设置为OFF时,每次上电未在断电保持线圈设置功能中设置的线圈都将被清为0,而被断电保持线圈设置功能中设置的线圈则将保持掉电前的状态不变;当09923设置为ON时,重新上电所有的线圈都将保持掉电前的状态不变。 3、09924:寄存器内容掉电保持总控制位 状态说明:1:所有寄存器启动掉电保持功能;0:第一次解析将输出通道缓冲区及普通辅助寄存器内容清0 在存储空间一章中我们已对09924的使用方法进行了说明,当09924设置为OFF时,每次上电将输出寄存器和掉电非保持的寄存器区域的内容都清成0,反之当09924设置为ON时,重新上电将保持除非易失存储区域外的所有内容不变。 4、09925:第一次运行指示 状态说明:1:第一次运行并保持一个扫描周期;0:其余 当PLC重新上电,或者第一次运行时,09925将输出一个扫描周期的ON,当第一个扫描周期结束后,09925将变成OFF。用户可以用09925来进行第一次运行的寄存器初始化或者调用初始化子程序。应该来说09925是一个很重要和很常用的特殊功能位。 5、09926:停机控制 状态说明:1:I/O模块异常时马上停机;0:I/O模块异常时依然继续工作 09926特殊功能位用来控制,当I/O模块出现异常时,如扩展模块类型不符、扩展模块故障时,是否依然继续运行。当设为ON时,出现异常立刻停机,直到异常解决;当设为OFF时,当模块出现异常时依然继续运行。 6、09927:掉电保持寄存器区清除控制位 状态说明:1:第一次解析将掉电保持寄存器区内容清除0:使能此区域的掉电保持功能 当09927为ON时,当重新上电或者第一次运行时,PLC将掉电保持寄存器的数据都清为0;反之如果为OFF时,当重新上电或者第一次运行时,PLC将保持掉电保持寄存器的数据不变。 7、09928:运行指示 状态说明:1:模块处于运行状态 0:模块处于停止状态 当模块处于运行状态时,09928为ON,当模块处于停止状态时09928为OFF,这为远程监控提供了监视PLC运行状态的手段。 8、09929:JMP,EOJ指令指示 状态说明:1:未成对使用或指令不合法 0:正常 当使用了JMP,或者EOJ指令,如果严格配对使用,09929为OFF,反之如果使用了JMP,而没有对应的EOJ,则09929为ON。 9、09930: JSR,SBR,RET指令指示 状态说明:1:未成对使用或指令不合法 0:正常 当使用了JSR,SBR,RET并严格的配对使用,则09930为OFF,反之如果使用了这些指令,却没有严格的配对,则09930为ON。 10、09931:FOR,NEXT指令指示 状态说明:1:未成对使用或指令不合法 0:正常 当使用了FOR,NEXT并严格的配对使用,则09931为OFF,反之如果使用了这些指令,却没有严格的配对,则09931为ON。 11、09932:写ROM备份寄存器命令 状态说明:1:该位从0跳变为1时会把当前备份寄存器的内容存入ROM中,其余状态下不动作,执行此动作时会使本次扫描周期加长 0:无动作 在前面的存储空间一章中我们已对09932进行说明,当09932出一个0至1的跳变量,PLC将非易失存储区的变量全部从SRAM写到FLASH ROM中。下次重新上电或者重新运行时,PLC会自动将非易失存储区的变量从FLASH ROM读出来写到SRAM中。 12、09933:COM2工作模式设置 状态说明:1:工作在FREE_LINK模式 0:工作在MODBUS模式 COM2可以工作在FREE_LINK模式、MODBUS从模式、MODBUS主模式,平常PLC默认在MODBUS从模式下工作,用户可以在软件的系统参数设置功能中把COM2设置成为MASTER(主)工作模式,这时,如果09933设置为0则工作在MODBUS主模式,如果为1则工作在FREE_LINK模式,具体的功能使用方式请参见软件手册。 13、09934:通信口交叉功能 状态说明:1:交叉COM1和COM2 0:不交叉 V80有两个通信口COM1和COM2,其中COM1是RS232,而COM2是RS485,COM1只能用来编程和支持MODBUS从协议供第三方设备访问,而COM2支持包括编程、MODBUS主、从、FREE_LINK四种功能。 有一些用户需要使用RS232,同时又需要COM2的强大功能,则可以通过设置09934来交叉两个通信口。交叉完后,PLC硬件上的COM1变成了软件内的COM2功能,而PLC硬件的COM2对应于软件的COM1。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:14:00
32楼
十五、V80存储空间分配和掉电保持(带电池RAM) V80的存储空间分为三大块: 固件存储器(非易失):存储PLC系统程序,用户不可见; 梯形图存储器(非易失):存储用户程序、用户设置参数、非易失变量; 数据RAM(带电池保持RAM):存储IO变量、用户中间变量、系统程序变量等; 对于用户来说,真正可以操作的存储空间只有变量空间。 在前面我们已经说过V80的地址定义完全吻合Modbus通信协议的定义,其地址分配如下:
注1:所有未用的输出接点和输出寄存器均可以当中间接点和中间寄存器使用。 1、位变量: V80的位变量掉电保持,有两种方式,第一种方式是在工程管理菜单里面通过对断电保持线圈进行设置。另一种方式是通过特殊功能位09923对全部线圈进行掉电保持。 特殊功能位09923:用户可以通过对该位的置位,并在置位后运行一次,就可以使所有的线圈都变成掉电保持型的。 第一种方式如下:
被选上的线圈将实现掉电保持,被选中的线圈将如图上所示在线圈中间多出一个M图标,如-(M)-。 第二种方式是将特殊功能位09923在程序中驱动为ON,并运行一次,这样下次上电时,所有线圈都将实现掉电保持。   2、寄存器: 寄存器的存储空间或以使用系统划分的掉电非保持、电池掉电保持、非易失存储器掉电保持三块区域,也可以使用特殊功能位09924来使能全部的寄存器掉电保持(电池保持)。 掉电非保持区域:如果没有设09924特殊功能位,则在掉电重新上电时,PLC将这块区域都清成0。 带电池掉电保持区域:掉电后可以依靠带电池的RAM保持数据,下次重新上电时这块区域的变量保持不变。这一块区域一般用来进行实时的掉电保持。 非易失存储器掉电保持区域:这一块区域的变量运行时在RAM内,用户在程序中可以通过对09932特殊功能位的操作(上升沿)将这一块区域的变量写入FLASH ROM中,下次重新上电时,系统将FLASH ROM中保存的变量读出写入RAM内。这一块区域用来保存一些初始化数据,或者用来保存一些设置参数。(注:非易失存储器掉电保持区域在从复位档RST上电时会将RAM区清成零,但FLASH ROM内的数据仍然保持不动,如果下一次用户从运行档RUN上电,则FLASH ROM内的数据仍会正常加载,这一点在M16微型PLC内需要特别注意,因为其编程档与复位档是同一个档位,所以如果从编程档上电将看不见该区域的数据,如果有需要则需从运行档上电) 特殊功能位09924:用户也可通过置位这个特殊功能位,并在置位后运行一次,将48193~49216区间的非易失变量保存到非易失存储器中去。 示例:如下图所示,如果对41000、44500、48500三个变量先进行初始化,并对09932写入一个脉冲,将48500的变量写入FLASH。
当掉电重上电后图形如下:(41000的值被清成了0,而带电池保持的44500保持原变量不变,非易失FLASH ROM存储器的48500仍是保存的789)
然后我们对这三个变量重赋值,如下图:
再重新上电,如下图:(41000仍被清成了0,44500保持掉电前的变量值222,而48500上电时从FLASH ROM中加载了保存的值789)
特殊功能位09924:用户也可以通过对特殊功能位09924的置位,并在置位后运行一次,使掉电非保持区域变成掉电保持区域,非易失区域保持不变。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:18:00
33楼
十六、测速程序——功能块脉冲或电平有效 16.1 PLC测速程序: 目标:测试PLC在一秒钟时间内的循环次数,并将结果送到输出指示灯上面。 目的:使用户了解V80编程的基本方法,了解监视程序对PLC运行速度的影响。 实现方式: 当程序开始运行时,启动一个加法器42000,每个循环周期加1——>同时启动秒定时器41000——>当一秒钟时间到了后01000输出ON将加法器中的累积值传给一个中间寄存器43000保存起来——>将累加器42000清零——>到一个循环周期时01000输出ON复位秒定时器。这样43000寄存器中的值就是当前这一秒钟时间内PLC的循环次数。 具体的程序如下图所示:
由上图可以看到V80在该程序中的循环速度为1409次/S,这在小型PLC中是相当高的速度了。 上面的程序使用到了定时器、加法器和MOVE功能块,需要注意的是: 1、定时器使用的是0.1S定时器,而没有使用1S定时器,因为定时器的误差为±1,所以秒定时器如果设定值为1S是不准确的。 2、MOVE功能块,因为其O1=I1,所以可以将多个MOVE功能块串联起来。(注:第一个功能块使用了上升沿触发有效,后面的功能块就不一定选择脉冲有效了,因为脉冲是级联的) 3、第三个MOVE功能块是将43000的值传递给00001的输出I/O,因为PLC的CPU的外部接口是16的,所以该操作其实是将43000的16个位传递给从00001~00016的16个位的输出。同理,如果将MOVE 00001 40001,则意味着把00001~00016的16个位传递给40001字寄存器。 接下来把程序保存到PLC(PLC拔到PROG档),并将程序写入FLASH ROM,然后通过VLADDER软件调试,通过监视窗口我们可以看到测试出来的速度为1409左右,然后我们可以把PLC离线,通过I/O端口显示的二制值我们可以看到测试出来的速度为1540左右。通过这个实验可以了解到在线调试的情况下,因为通信频繁,需要额外占掉PLC的一些运行机时。 16.2 功能块脉冲有效与电平有效: 大多数的功能块里有一个‘触发[P]’的选项,选上表示功能块只有在I1有上升沿脉冲时功能块才能运行;反之表示功能块在I1为ON时运行,在I1为OFF时停止。 V80支持同一程序内有2048个功能块使用脉冲触发有效,在脉冲触发使用中需要注意的细节如下:
在上面的两排功能块,第一排只有第一个功能块是脉冲有效,后面的全部是电平有效,第二排所有的功能块均是脉冲有效,但实际上这两种方式的结果是完全一致的。
如上图所示: 如果功能块选择电平触发方式,同时功能块的手册说明O1= I1,那么O1就等于I1的完整信号。 如果功能块选择脉冲触发方式,同时功能块的手册说明O1= I1,那么O1等于I1+上升沿脉冲。 也就是说上面的多个功能块串联的程序,只要第一个功能块选择脉冲有效,则其后面所串的功能块或者指令都将等效为脉冲有效。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:20:00
34楼
十七、扫描方式 V80在同一个网络中使用并行扫描或者说纵向扫描,也就是说在同一页程序中各行程序是并行执行的,而网络与网络之间是按网络的先后次序串行运行,因为V80的软件允许用户在一个网络中编写多个无联系的逻辑网络,所以会带给一些使用该功能用户在执行顺序上的困惑,这一章我们着重解释这个问题,当然最好的是用户不要在一个网络中编写多个逻辑网络,除非您清楚他的运行方式。 PLC的执行通常分为横向扫描和纵向扫描两种。 横向扫描:程序自左向右,自上向下扫描执行。横向扫描比较吻合人们的读写和理解习惯,也比较像其它C语言的执行方式。 纵向扫描(或称并行扫描):程序自上向下,片左向右执行。纵向扫描以一个网络为单位,同一个网络的程序,并行的从左向右扫描,其过程更像物理上的电器开关组,两行程序之间是并行的。 如下图所示:
假如上面的程序是在同一个网络中。 如果上面的程序是横向扫描,则其执行过程如下: STEP1:执行第一行程序,如果10001由OFF跳变成ON,使01000输出一个脉冲; STEP2:执行第二行程序,01000复位00001线圈; STEP3:执行第三行程序,01000设置00001线圈; 上面的程序执行完后00001输出为ON。 如果上面的程序是纵向扫描,则其执行过程如下: STEP1:第一列执行,第一行的10001的状态跳变,第二行执行了一条横线指令,第三行执行了01000的状态的加载(OFF); STEP2:第二列执行,第一行01000输出一个脉冲,第二行加载01000的状态(ON),第三行00001设置不执行; STEP3:第三列执行,只有第二行有代码00001复位; 上面的程序执行完后的结果是00001输出为OFF。 通过上面的例子,我们解释了两种扫描方式的区别,对于纵向扫描方式,因为采用并行执行的方式,在同样单指令速度的情况下很多程序的运行速度都会比较横向扫描要更快(因为纵向扫描的与或指令不需要显意的单独执行而可以多行一块运算,从而带来更高的运行速度),而且纵向扫描的方式可以使程序的编写支持比方说多输入、多输出、多功能块的方式编程。但同时纵向扫描会需要用户了解其扫描方式,并在实际编程中避免如现一些因为执行先后次序的问题,而带来的问题。 对于不了解该运行机理的朋友最好不要在一个网络中编写多个无联系的逻辑网络。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:21:00
35楼
十八、初始化变量和移位指令 在梯形图的设计中,有相当多的变量需要进行初始化,这些变量在上电时需要初始化成某个初始值。 这需要使用系统初始化特殊继电器09925,在前面我们已对09925进行了说明,09925在上电后保持一个周期宽度的ON,然后变为OFF。 特殊继电器09925:在上电后输出一个单周期宽度的的脉冲。
如上面的程序: STEP1:在上电时09925保持一个周期的ON,MOVE功能块运行,对00001~00016的16个位进行初始化为#00001; STEP2:定时器运行,并输出一个周期为0.2S的脉冲; STEP3:每个脉冲的到来都使BROT右移功能块运行一次,使00001~00016的数据右移一位; 用户在使用时也可以用09925调用一个子程序来实现初始化子程序,这样可使程序更为清晰。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:32:00
36楼
十九、PID——温控、变频 PID(Proportional, Integral and Derivative)是闭环控制中最常用的一种算法,在包括温控、水泵、张力、伺服阀、运控等行业得到了广泛的应用,但因为每个应用的对象特性都不一样,这就要求调试工程师允分了解PID的控制原理,只有这样我们才能把PID的应用好。 PID原理: PID是由比例、微分、积分三个部分组成的,在实际应用中经常只使用其中的一项或者两项,如P、PI、PD、PID等。 从控制原理来说,当一个控制对象,我们希望控制的输出达到我们设定的值,我们通常会使用开环或者闭环控制,如果控制对象的响应很稳定不会受到其它环节的影响,我们可以选用开环控制。反之如果被控对象受到设定值、负载或者源端的影响而产生波动,我们应该选用闭环控制。下图是一个温控的原理图: PID执行周期(1/10秒) 〔范例〕
比例控制(P): 比例控制是最常用的控制手段之一,这也是最符合人的感观的一种控制,比方说我们控制一个加热器的恒温100度,当开始加热时,离目标温度相差比较远,这时我们通常会加大加热,使温度快速上升,当温度超过100度时,我们则关闭输出,通常我们会使用这样一个函数 e(t) = SP – y(t); u(t) = e(t)*P SP——设定值 e(t)——误差值 y(t)——反馈值 u(t)——输出值 P——比例系数 滞后性不是很大的控制对象使用比例控制方式就可以满足控制要求,但很多被控对象中因为有滞后性。 比方说塑胶挤出机,如果设定温度是200度,当采用比例方式控制时,如果P选择比较大,则会出现当温度达到200度输出为0后,温度仍然会止不住的向上爬升,比方说升至230度,当温度超过200度太多后又开始回落,尽管这时输出开始出力加热,但温度仍然会向下跌落一定的温度才会止跌回升,比方说降至170度,最后整个系统会稳定在一定的范围内进行振荡。 如果这个振荡的幅度是允许的比方说家用电器的控制,那则可以选用比例控制,很多传统的家用空调和我们常会发现家用空调始终是间歇工作的,当开始制冷时我们通常会感到越来越冷,当空调停止时又会感到温度越来越高,它采用的则是比例控制 比例值太小时的控制效果图:
如果比例值太小,反馈值始终到不了设定值(静态误差)就达到了平衡(如果是加热的话就是说散热与P*e(t)加热达到了一个平衡) 比例值太大时的控制效果图:
如果比例值太大,则被控对象会出上图所示的振荡,当然振荡点不一定是在设定值,而会根据被控对象的不同或者P值的大小而在某个位置进行振荡。这对于大多数的控制对旬来说是不允许的。 比例积分控制(PI): 积分的存在是针对比例控制要不就是有差值要不就是振荡的这种特点提出的改进,它常与比例一块进行控制,也就是PI控制。 其公式有很多种,但大多差别不大,标准公式如下: u(t) = Kp*e(t) + Ki∑e(t) +u0 u(t)——输出 Kp——比例放大系数 Ki——积分放大系数 e(t)——误差 u0——控制量基准值(基础偏差) 大家可以看到积分项是一个历史误差的累积值,如果光用比例控制时,我们知道要不就是达不到设定值要不就是振荡,在使用了积分项后就可以解决达不到设定值的静态误差问题,比方说一个控制中使用了PI控制后,如果存在静态误差,输出始终达不到设定值,这时积分项的误差累积值会越来越大,这个累积值乘上Ki后会在输出的比重中越占越多,使输出u(t)越来越大,最终达到消除静态误差的目的。 PI两个结合使用的情况下,我们的调整方式如下: 1、先将I值设为0,将P值放至比较大,当出现稳定振荡时,我们再减小P值直到P值不振荡或者振荡很小为止(术语叫临界振荡状态),在有些情况下,我们还可以在些P值的基础上再加大一点。 2、加大I值,直到输出达到设定值为止。 3、等系统冷却后,再重上电,看看系统的超调是否过大,加热速度是否太慢。 通过上面的这个调试过程,我们可以看到P值主要可以用来调整系统的响应速度,但太大会增大超调量和稳定时间;而I值主要用来减小静态误差。 标准的PID公式在温控等响应较慢的系统中会存在积分项导致过冲的情况,这是因为在开始加热后,尽管这时输出已调整最大(比方说固态继电器的PWM输出已是100%开了)但这时的温度仍然只能缓慢上升,这时的积分项会增加得很快,当温度达到设定值后,这时尽管比例项已输出为0,但是积分项仍然会因为其累积值很高而有较大的输出,导致温度超调。 在德维森的V80中,通过改进的遇限消弱积分法等措施很好的解决了这个问题,使积分项在输出全开时停止积分,减少了积分对于这种大时延系统的影响。 PID控制: 因为PI系统中的I的存在会使整个控制系统的响应速度受到影响,为了解决这个问题,我们在控制中增加了D微分项,微分项主要用来解决系统的响应速度问题,其完整的公式如下: u(t) = Kp*e(t) + Ki∑e(t) + Kd[e(t) – e(t-1)]+u0 在模拟电路中的微分常数是与特征频率相关系的,而在数字离散PID中的微分项实际上是有一些问题的,因为其只计算了两次误差的差值,而实际的模拟PID或者用户需要的理想微分公式应该是要对其进行展宽的,只有展宽的D值才能真正的起到很好的效果。微分项在控制系统中起到减少超调降低振荡的作用,但因为微分项本身对于干扰很敏感,所以在使用微分项时要慎重。
在PID的调试过程中,我们应注意以下步骤: 1、 关闭I和D,加大P,使其产生振荡; 2、 减小P,找到临界振荡点; 3、 加大I,使其达到目标值; 4、 重新上电看超调、振荡和稳定时间是否吻合要求; 5、 针对超调和振荡的情况适当的增加一些微分项; 6、 注意所有调试均应在最大争载的情况下调试,这样才能保证调试完的结果可以在全工作范围内均有效; 位置PID与增量PID: 前面我们所说的PID公式均是位置PID,也称为全量PID,这在温控、阀门控制、水泵控制中最常用到,另一种PID公式称之为增量PID其公式如下: △u(t) = u(t) – u(t-1) 这在运动控制中最常使用,其输出是两次PID运算结果的差值,一般的步进或者伺服电机的位置控制可以采用这种方式。 功能块说明: 例程:

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:40:00
37楼
二十、通信 传统PLC在通信方面的应用相对比较单一和简单,大多数只是用来编程或者联单一设备而已,这都是不需要用户太多参与的。但现在不行了,HMI、变频器、多PLC组网、GPRS、互联网等,一方面设备智能程度越来越高了,另一方面FCS技术的推广使大家对于分布式控制有了全新的认识,在现实的控制环境中,许多都可以用小型PLC通过组网来实现,用基于网络的小型PLC来实现FCS得到了广大用户的认同,下面我们就通信的基础开始进行一些讲解。 20.1、通信基础: 说到通信这里面包含了许多术语和基础知识,我们假定用户已对通信有了一些基本的了解。我们这里所提到的通信仅限于串行通信,对于串行通信,我们比较常见的是七层通信模型,在工业现场中,通常我们只会使用2~4层协议,当然也有一些现场总线的协议层次比较多,比方说LONWORKS等。其实层次的多少并不代表协议的优劣,只是协议制定方针对协议适应的范围和规模来设计的。
ISO七层模型
数据封装与层次结构 在多数正在使用的现场总线或者工业网络中,比较常见的只有以下4层: 1、物理层: 物理层(physical layer)的主要功能是完成相邻结点之间原始比特流的传输。物理层协议关心的典型问题是 a、 使用什么样的物理信号来表示数据“ 1”和“ 0”; b、 一位持续的时间多长;(波特率) c、 数据传输是否可同时在两个方向上进行; d、 物理接口(插头和插座)有多少针以及各针的用处。 物理层的设计主要涉及物理层接口的机械、电气、功能和过程特性,以及物理层接口连接的传输介质等问题。 我们平常所说的RS232、RS485其实都是物理层,而Modbus、ProfiBus都是建立在RS485这个物理层上的现场总线,串行通信中比较常用的包括全双工和半双工两种。 全双工:在发送数据的同时可以接收数据,也就是发送和接收的数据线是独立的,比方说RS232就是全双工总线; 半双工:发送与接收数据都是分离的,在同一时间只允许发送或者接收,也就是发送和接收的数据线是复用的,比方说RS485、以太网、CAN总线等。 一般全双工只能用于端对端的通信方式,而半双工可以用于多站通信。 2、数据链路层 数据链路层(data link layer)的主要功能是如何在不可靠的物理线路上进行数据的可靠传输。数据链路层完成的是网络中相邻结点之间可靠的数据通信。为了保证数据的可靠传输,发送方把用户数据封装成帧(frame),并按顺序传送各帧。由于物理线路的不可靠,因此发送方发出的数据帧有可能在线路上发生出错或丢失(所谓丢失实际上是数据帧的帧头或帧尾出错),从而导致接收方不能正接收到数据帧。为了保证能让接收方对接收到的数据进行正确性判断,发送方会为每个数据或数据块计算出校验码并加入到帧中,这样接收方就可以通过重新计算校验码来判断数据接收的正确性。一旦接收方发现接收到的数据有错,则可以丢掉这一错误帧或者要求发送方重传这一帧数据。数据链路层必需解决由于帧的损坏、丢失和重复所带来的问题。 数据链路层的主要功能如下: a、 链路连接的建立,拆除,分离。 b、 帧定界和帧同步,链路层的数据传输单元是帧,协议不同,帧的长短和界面也有差别,但无论如何必须对帧进行定界。 c、 顺序控制,指对帧的收发顺序的控制。 d、 差错检测和恢复,还有链路标识,流量控制等等.差错检测有很多种,比较常见的是字节的奇偶校验和帧数据的累加和校验、循环码CRC校验来检测信道上数据的误码。 对应于现场总线来说这一层次是各层次中最重要的,也是大家最常打交道的,这一层有三个重要部分: 站地址addr:区分各个站点的唯一标志; 功能码fn:定义这一帧的命令功能或者数据的含义; 校验码:校验的方式有很多种,有针对字节的奇偶校验,有针对帧数据的累加和和CRC等。 3、用户接口层: 有一部分现场总线定义了用户接口层,它定义了数据链路层与应用层之间的接口定义,包括数据的含义和偏移地址、长度等。 4、应用层: 应用层明确了具体数据的含义。 20.2、V80通信功能: 标准的V80带有一个RS232和一个RS485,两个口均支持编程、ModBus从站协议,RS485还支持ModBus主站协议和Free自由通信协议。 20.2.1、编程功能: V80的编程可以通过RS232和RS485的任一口进行,用户只需要注意PLC的波特率与电脑的波特率一致就行了,对于站地址,如果不清楚的,可以直接将站地址设为‘0’广播地址。 如果通过RS485编程,则可以通过在PC的串口后加RS232与RS485的转换器再联接V80来实现。 20.2.2、ModBus通信协议: ModBus通信协议分为ASCII格式与RTU格式,目前V80支持RTU格式。 ModBus通信协议包含主站协议和从站协议两部分,目前V80的RS232口支持从站协议,RS485支持主从两种协议。(用户如有特殊需要,可以利用V80的特殊功能位09934来切换COM1和COM2的功能,切换完后,软件中的COM1对应于硬件中的COM2,并可以使RS232带有ModBus主功能和Free功能) 用户在使用V80的ModBus主功能和Free功能时需要注意特殊功能位09933的应用,09933是COM2的主站工作模式设置寄存器,默认情况下是Modbus主功能,如需要使用Free功能需要显意的在程序中将09933设为ON。 ModBus是一种主从通信协议,其拓朴结构图如下:(采用RS485的情况下)
整个ModBus是一个总线式的拓朴结构,从物理角度来说,不支持星形结构,分支要越短越好,所有的主从站均并联在同一条总线中,总线的两头各需要一组终端匹配电阻。 注:RS485的终端电阻最好是三电阻结构,V80PLC内已带有终端电阻,需要用户按说明书把通信端子上对应的4个引脚进行联接,如32点和40点的,需要把COM2的1、2短接,3、4短接。如果总线的另一端不是V80,则需要用户自行按RS485标准接入正确的终端电阻(A与5V间为330欧姆电阻,B与GND地之间为330欧姆电阻,A、B之间为220欧姆电阻)。在没有终端电阻的情况下,在良好的环境中仍然可以正常通信,但在现场干扰比较大的情况下,因为没有终端电阻会使通信口上处于高阻的状态,从而使通信的稳定性大大降低。 ModBus每一次的通信均由主站发起,因此主站没有站地址,但每个从站均有一个唯一的站地址,主站正是通过这个站地址来区分下面的从站。 ModBus总线任一时间均只允许一个站发送数据,但允许多个站一起接收数据。 V80作为ModBus从站通信: V80作为ModBus从站通信不需要做任何的编程,只需要设置好通信属性,包括速率、校验和站地址就可以了。 V80作为ModBus主站通信: a、在Vladder软件中选择‘PLC设置’,把COM2设置为‘主站’模式、波特率、奇偶校验位都与从站设为一至。
b、下面的程序是编写了一个V80从另一个V80处通过ModBus现场总线读写数据的过程,在VaLadder软件有这个例程。
01000是一个1秒的定时器,保证1秒钟进行一次读写通信。 第二个网络的M_BUS功能块是写操作,它将主站中变量类型为4的,地址偏移为1100的寄存器型变量(41100)写到站地址为’1’的从站中的变量类型为4的,偏移地址为1的寄存器型变量(40001)并且写16个字变量。
第三个网络的M_BUS功能块是读操作,它与从站地址为5的从站进行读操作,变量类型为4的,地址偏移为10的寄存器型变量(40010)读到主站 的变量类型为4的,偏移地址为1000的寄存器型变量(41000)并且读了40个字变量。 注:用户需要注意在实际的系统之中,有一部分厂商的设备地址偏移是从0开始的,而另一部分厂商的设备地址是从1开始的,比方说00001,在一部分设备中这代表第一个输出线圈,在有一部分的设备中这代表第二个输出线圈,用户在通信编程时需要注意这个问题。比方说取某些设备中的变量00010,在通信中的偏移有可能不一定是10,而是9,前面已提到这对于不同厂商对于ModBus协议的理解的支持是不一样的,这在后面的通信协议中还有更加详细的说明。V80为了便于用户使用和为了便于多台V80之间的互操作,将V80的内部变量定义都按ModBus协议定义,但V80在ModBus主站功能块上的操作中偏移量也与变量的定义一至,这样简化了用户的理解,使用户在多台V80这间通信时,不需要考虑类似于像读取变量00010时需要将偏移设为9的问题。 在各种文本屏、触摸屏、HMI、组态软件中,也有这种情况,有一部分屏在选择偏移时,是从0开始的,有一部分屏是从1开始的,用户在使用时需要认真看说明书,或者试一下确定准确的操作方法。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:43:00
38楼
二十一、运动控制 运动控制是近些年的热门,精密定位、恒速控制、恒力矩控制等在各种装备中的应用越来越广泛,这对于控制器的要求也越来越高。 对于运动控制,大家比较常用的包括步进电机、伺服电机,除此之外伺服阀、数字液压等都属于同一类的控制方式。在这些运控系统中,我们又根据控制对象的不同分为位置控制、速度控制、力矩控制三大类。其中步进电机只能应用于位置控制,而伺服则可以应用于这三类中的任一种控制方式。 在运动控制系统中我们一般可以使用专用的运动控制器或者PLC来实现运动控制功能,一般来说专用的运动控制器如数控系统等会更为专业功能更强,对于插补、G指令的支持会更好。 比方说高档的数控系统可能会支持以下的功能:用户用CAD画完图后转换成G代码下载给控制器,控制器就可以执行对应的G代码完成整个控制过程。 而PLC相对而言是一个更为通用的控制平台,一般通过功能块来实现运动控制功能,V80增强系列(/S)对于两轴的位置控制有很强的支撑,可以满足绝大多数运动控制要求的环境,V80的速度控制和力矩控制一般使用E6MAD扩展模块来实现,在这里我们提到的运动控制是CPU模块本身的位置控制功能。 21.1、位置控制基础 在装备控制中有相当多的场合需要用到位置定位控制,如各种机床、收卷排线、纸张电缆管材的定长裁剪、包装、印刷等。位置控制的实现,通常是通过步进电机和伺服电机来达到的,下面我们统一以步进电机来描述。 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 PLC正是利用步进电机的这种特性来实现位置控制功能的,PLC与步进电机之间的接口为脉冲接口,我们称之为PTO。 脉冲与位置的关系: 比方说我们需要步进电机转动90度,而步进电机的步距角为0.3度的,那么我们的脉冲输出个数就应该为300个,当300个脉冲输出完毕后电机正好旋转90度停止。 步进电机的启动和加减速: 实际的应用中我们需要考虑到步进电机在带载的情况下无法高速启动,所以需要步进电机在启动时使用较低的脉冲频率,然后逐步提升速度,否则会有失步和过冲的现象出现。同时一般的步进电机使用场合都是开环的,一旦出现了失步和过冲则是不可恢复的误差。(伺服电机这种情况要好一些但在负载太大的情况下仍然会有启动不了的现象) 为了防止出现失步和过冲的情况,我们通常会让步进电机在低速启动后再逐步提升速度,在加速过程中,最好的是S型加速,S型加速的加速度是线性的,这对于机械和电机来说是最吻合其特性的。在实际的应用中,大多数是采用的线性加减速,这对于大多数的应用来说也是足够了的。
步进电机的正反转: 运控系统中的正反转是很常用的方式,由于步进电机没有带反馈装置,所以步进电机不适合高速的正反转,一般而言,在空载的情况下行程在100个脉冲往反转,步进电机的正反转频率只能达到10次/秒以下(大多数的在5次/秒以下),伺服电机的正反转频率可以达到50次/秒以下(刚性要调得比较高)。不同厂商的电机不同,主要与惯量的大小有关系。 正反转时,需要很好的加减速控制的支持,否则会出现失步和过冲的情况,伺服系统还会出现还没到位就开始反转的情况。 在实际的应用之中我们还常用接近开关、光电开关、编码器、光栅尺来与步进电机配合完成位置控制。这些方法中可以分为两大类一类是开关型定位,一类是坐标定位。 开关型定位: 包括接近开关、光电开关、接触开关等,这些开关最常用的是安置在原点,用来标零和消除累积误差。这些系统在上电后一般都有找原点的动作过程,通常都是上电后向一个方向运动找到原点后标定原点坐标,然后开始正常工作。 坐标定位: 这一类的控制采用编码器、光栅尺、电子尺(模拟电压接口)之类的,其中又分为绝对编码和相对编码两类,顾名思义绝对编码的输出信号是绝对坐标,通常是并行的总线,而相对编码的输出信号只是串行的脉冲信号,因为绝对编码器比较贵,所以大多数的现场都使用相对编码。 相对编码的信号有AB相、方向脉冲、上下脉冲三大类
AB相又分为*1、*2、*4三种细分方式,*1,表示AB相各来一个脉冲计数值加或减1,*2表示AB相的任一上升沿加或减1,*4表示AB相的任一脉冲的上升沿或者下降沿均加或减1。V80的AB相脉冲计数方式只支持*4的细分方式。 大多数的编码器均是AB相的信号,或者是ABZ信号,ABZ信号相对于AB相信号多了一个Z信号线,用来标示编码器的零点,编码器每转一圈出一个脉冲。 电子尺: 电子尺多用在各种距离计量的装备上面,比方说注塑机的射胶电子尺、合模电子尺等。电子尺可采用脉冲接口或者模拟量接口(电位器),PLC需要通过模拟量输入模块来采样,但是大多数PLC的模拟量输入模块的响应速度太慢无法满足现场的要求(通常的采样周期在100mS左右)。V80的高速模拟量扩展模块E6MAD可以达到mS的采样周期,所以可以用来实现高速的模拟量电子尺接口。 基本上大多数运动控制都可以由上面的功能组合而成,对这些概念有一个基本的认识是正确使用运动控制功能的前提。 21.2、V80的运动控制功能: V80对运动控制有着强大的支持: 硬高速计数:2路ABZ脉冲、方向脉冲、上下脉冲;速度50KHZ;(增强型V80) 软高速计数:6路方向脉冲;单路可以达到10KHZ,6路可以达到2KHZ;(所有V80) 高速脉冲输出:2路PTO;速度50KHZ;(增强型V80) 定时中断:2路;(所有V80) 外部DI中断:6路;(所有V80) 以上的功能都是在运动控制中比较常用的功能,用户在使用过程中需要合理的选择的使用这些功能。 21.3、硬高速计数: V80系列PLC中具有增强功能(用“/S”表示)的CPU本体单元提供2组通道的高速计数器功能,可以记录输入频率最大为50kHz的高速脉冲,而不影响CPU性能。V80可支持3种不同的输入类型(A-B相, 方向脉冲和上下脉冲),外部触发可设置为计数器复位和启/停控制。 其特性如下: l 2个输入通道(输入频率最大为50kHz,2路独立的ABZ、上下、方向模式); l 带有测频率的功能 l 高速计数输入接口与普通I/O口复用,对应关系分别为:DI输入端01对应于第一路高速计数的A1相、02- B1相、03-Z1、04-A2相、05-B2相、06-Z2。其中,01~06为普通I/O口,A1、B1相和A2、B2相以及Z1、Z2为高速计数输入接口; l 3种输入类型 (A-B相, 方向脉冲和上下脉冲); l 32位硬件计数器; l 输入电平DC 20V~26V(50KHz),DC9V~26V(10KHz以下); l V80的两路硬高速计数是不依赖于CPU软件的,所以在使用时不会因为用户程序的大小而影响速度; l 在使用硬高速计数的同时这些IO口的DI功能并不受影响; Z线为外部触发信号,可以设置为三种方式:高速计数无效(此时,I/O接口01~06仅作为普通I/O口使用)、暂停控制和复位控制。 高速计数支持比较和饱和两种计数模式。 l 比较模式:从预置值开始计数,计数值到达上下限时,复位计数值为预置值,并继续计数,此时,在高速计数运行指令(HSCRUN)会输出一个计数溢出标志。 l 饱和模式:计数值到达上下限时,计数器就会因饱和而停止计数。如果停止计数后,出现反向脉冲输入时(如图2.17所示),计数器就会脱离饱和状态而进行逆向计数,即,由原来的计数值递增变为递减,或由原来的计数值递减变为递增。 高速计数信号对应与工作模式表:
硬高速计数的功能块描述请参见《V80系列PLC软件手册》,包括高速计数设置功能块HSCSET和高速计数运行功能块HSCRUN,前者主要用于设置高速计数的工作模式,后者用于启动和停止高速计数器,同时还可以显示当前脉冲的频率。在高速计数运行前必需运行一次设置功能块。 21.4、脉冲输出: V80系列PLC中具有增强功能(用“/S”表示)的CPU本体单元提供2个通道(P1和P2)的高速脉冲输出(PTO)功能 (必须在V+和V-端子另加外部24V的电源),每个脉冲输出通道都可以单独产生高速脉冲串输出(PTO-Pulse Train Output)或产生脉冲宽度调制输出(PWM-Pulse Width Modulated)。 高速脉冲输出特性如下: l 2个输出通道(最大输出频率: 50kHz) l 2种输出类型 (可独立设置为PTO和PWM) l 32位脉冲输出数据 l 输出电平为DC 18V~24V(V+和V-输入电压范围为DC 24V±15%) l 每一路PTO输出都可绑定一个普通I/O作为方向信号 l 可绑定高速计数的外部触发(Z线)信号作为快速硬件暂停使能信号 (1) PTO输出方式 PTO输出方式的脉冲输出占空比为50%,并可设置输出的脉冲数量和周期时间。可选择us和ms两种基准时间,脉冲周期设置范围为1~65535个基准时间。PTO方式又分为普通、平滑和多段三种工作模式。 普通模式:32位脉冲数输出(即1到4,294,967,295),具有两段接续输出功能,在当前段输出的同时可预先设置下一段参数,当前段输出完成后接续输出下一段。虽然该模式具有绑定普通I/O作为方向信号的功能,但不适宜于高速大惯量的系统中应用。 平滑模式:性能与普通模式基本相同,但增加了专门针对电机应用的起动平滑和段间平滑功能。用户只要设定每一段的起始脉冲周期和目标脉冲周期,系统则会在两者之间插入一个平滑段,达到让电机平稳过渡的目的。用户还可选择系统自动平滑功能,只需要设定段起始周期为0即可。该模式适用于输出脉冲数多、无频繁启停及对起动特性要求低的场合。 多段模式:与前两种模式不同,多段模式每一段最大只能允许65535个脉冲输出,最大可设置256段。每一段均可独立设置起始周期、递进步长、递进间隔、脉冲数及方向信号。利用多段模式输出指令可以实现多个序列脉冲组成的脉冲包络输出,以控制步进电机来完成各种复杂的运动曲线,较适用于输出脉冲数较少、启停频繁及对起动特性要求较高的场合。 具体的使用方式请参见软硬件手册。 (2) PWM输出方式 PWM输出方式的脉冲输出占空比、周期均为可调节,但无法设置输出脉冲数。周期和脉冲宽度可选择us和ms两种基准时间,脉冲周期范围为1到65535个基准时间,脉冲宽度范围为0到65535个基准时间。 PWM可以用来做为连续可变频率的脉冲输出、高精度的温控、比例阀控制、甚至可以在加了阻容滤波后充当精度不高的模拟量电压输出。 具体的使用方式请参见软硬件手册。 21.4、软高速计数: 特性: 1)软高速计数默认接在DI的前6路,对应于DI从00001~00006; 2)软高速计数是以软件中断方式进行的一种高速计数方式,使用时对程序的正常扫描时间会产生一定的延时影响。 3)最大计数频率受通道数影响,为了保证脉冲不会丢失,一般单通道计数不宜超过10K,6通道一起计数不宜超过2K。 4)软高速计数带有测频率的功能 具体的使用方式请参见软硬件手册。

王晟磊

  • 精华:12帖
  • 求助:0帖
  • 帖子:70帖 | 687回
  • 年度积分:0
  • 历史总积分:1173
  • 注册:2004年2月11日
发表于:2008-03-25 17:48:00
39楼
二十二、子程序调用 传统的PLC对于子程序是不支持的,但随着软件的发展,结构化编程是未来PLC编程的发展方向,通过合理的结构化编程可以简化单一程序的复杂度,而子程序正是结构化编程的基础。V80支持三种子程序的使用方式: a、 初始化程序 初始化程序主要用来实现上电后的初始化,包括寄存器和线圈的初始化。V80通过09925这个特殊线圈来实现。 b、 中断程序 V80支持外部中断、定时中断、硬高速计数上下限比较中断、高速计数中断等四类中断程序,当事件发生后,V80将在很短的时间内跳至中断程序的位置进行运行。 注:中断程序也需要用到程序号(如第一路DI所绑定的外部中断,子程序号为L00001),但中断程序的程序号是固定的,请大家在编写程序时需要注意,没有被中断程序使用的子程序号可以被用作其它的普通子程序标号。 c、 普通子程序 普通子程序主要用于程序的复用和结构化编程序,用户可以将某些需要常用的功能合并成一个子程序供主程序多处调用,在使用过程中需要注意子程序并没有处理重入的问题,同时PLC并没有局部变量,所有变量均是全局变量,对于需要多处调用的子程序用户需要在子程序内进行显意的变量初始化,以防多子程序共用同一组寄存器空间产生的相互影响。 22.1、功能块描述 22.2、初始化子程序的实现和普通子程序调用 通过特殊继电器09925调用初始化程序L1,09925仅在上电的第一个周期输出为1,正常运行后定时器输出02000调用子程序L2。
注1、每个子程序依托标号L1~L32来区分; 注2、每个子程序都必然会有调用的JSR功能块、入口的SBR功能块和返回的RET功能块; 注3、EOP主程序结束功能块并不是必需的,但有EOP会使程序的可读性更强。 注4、 包括JMP、JSR、SKIP、MCS指令后面和下面不能再有其它的梯形图指令; 注5、 SBR、RET、EOP、FOR、NEXT、EOJ、MSE需要独占一个网络; 注6、对于SKIP、MCS产生的火线略过功能并不代表其间的指令和功能块不运行,而是使火线为OFF了,在使用时需要注意,如需要跳过请使用JMP指令。 22.4、中断型子程序调用 V80支持中断类型如下: V80支持6个外部中断,4个硬高速计数中断,12个软高速计数中断,2个定时中断,每个中断源都已分配固定的子程序号,用户在不使用时可以用来做普通子程序用。 中断源描述:
注意事项 1、设置中断使能以后,必须编写对应的中断子程序,否则当该中断产生时PLC会停止运行。中断梯形图的编写方法与普通子程序一样,但是不再需要调用的JSR功能块,比方说如果用户通过功能块设置指令设置了使用第一路外部中断,那么,当第一路DI 10001 2、中断梯形图与软中断计数一样,使用时会对程序的正常扫描时间会产生影响,使用时请注意中断程序的长度与频度

今夜无眠

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 132回
  • 年度积分:0
  • 历史总积分:318
  • 注册:2005年3月08日
发表于:2008-03-26 17:27:00
40楼
学习了 谢谢

热门招聘
相关主题

官方公众号

智造工程师