PLC:学习笔记(西门子)4

功能指令及应用(s7-200)
·传送类指令
·运算指令
·子程序
·时钟指令
·中断
·PID指令
·通信指令

一、传送、移位、填充指令
1、传送类
1-1:单一传送(Move):指令格式(MOV* IN,OUT  //*:B、W、DW(LAD中)D(STL中)、R)      功能描述:使能端输入有效时,把数据从IN传到OUT所指的存储单元  数据类型:输入/输出均为一致
1-2:块传送(Block Move):指令格式(BM*    IN,OUT,N   //*:B、W、DW(LAD中)D(STL中)、R; N<=255)  功能表述:使能端有效时把从IN开始的N个数据传送到OUT开始的N个字符存储单元。  数据类型:输入/输出相同
1-3:字节立即传送(Move Immediate):
 字节立即读:BIR    IN,OUT
        字节立即写:BIW    IN,OUT
举例:
LD I0.0
EU
MOVB VB100,VB200
MOVW VW110,VW210
MOVD VD120,VD120
BMB VB130,VB230,4    //传送4个字节
VMW VW140,VW240
BIR IB1,VB270       //从I1物理输入状态立即送到VB270中,不受扫描周期的影响
BIW VB270,QB0 //将VB270中的数据立即从Q0输出,不受扫描周期的影响

2、移位与循环指令
类型:左移、右移、左循环、右循环
2-1:移位指令(shift)
 移出数据存储单元与SM1.1(溢出)相连接。
 移位次数与移位数据长度有关,超出的次数无效(例如字左移20次,实际只有16次)
 若移位操作使得最后数据变为0,则零存储器标志位(SM1.0)自动置位
  左移:SL* OUT,N
  右移:SR* OUT,N
注意:LAD中输入/输出的位置可以不同,但在STL中相同
举例:
LD I0.0
EU
SLB VB0,2
SRW VW10,3

2-2:循环移位指令(Route)
 移出端与另一端相连,同时又与SM1.0(溢出)相连
 移位次数与数据长度有关,若设定值大于数据长度,则取余数,作为移位长度
  左移:RL* OUT,N
  右移:RR* OUT,N
注意:LAD中输入/输出的位置可以不同,但在STL中相同
举例:
LD I0.0
EU
RRW VW0,3

2-3:寄存器移位指令(shift register)
 使能端有效时,每个扫描周期移位一次,注:不要用边沿跳变来控制使能端的状态,不然就失去了应用意义
 移出端与SM1.1(溢出)相连。移位时,一端进入SM1.1,另一端自动补上DATA移入低位
 移位分为正向和反向:
  正向:N>0 最低字节的最低位移入,最高字节的最高位移出
  反向:相反
举例:
LD I0.0
EU
SHRB I0.5,V20.0,5

3、字节交换指令
 功能表述:高字节和低字节进行交换
 数据类型:输入为字
举例:
LD I0.0
EU
SWAP VW10

4、填充指令(Memory fill)
功能表述:将“字”型输入数据IN填充到输出OUT所指的单元开始的N个存储单元中
举例:
LD SM0.1
FILL 10,VW100,12  //将10填充到vw100以后的12个字节中去

二、运算和数学指令
 注:LAD与STL中的区别是,STL中OUT要和IN1、IN2中的一个为同一个地址存储单元。而在LAD中可以不同
所以!!!!:建议使用LAD进行运算和数学指令的编程
1、加法指令:
  功能描述:LAD:IN1+IN2=OUT;   STL:IN+OUT=OUT
  数据类型:输入输出相同(I  DI R)
  STL表示:+* IN1,OUT
2、减法指令:
  功能描述:LAD:IN1-IN2=OUT;  STL:OUT-IN1=OUT
  数据类型:输入输出相同(I  DI R)
  STL表示:-* IN1,OUT
3、乘法指令
 3-1:一般乘法指令
 LAD:IN1*IN2=OUT
 STL:IN1*OUT=OUT
 数据类型:输入输出相同(I  DI R)
 3-2:完全整数乘法:
 LAD:IN1*IN2=OUT
 STL:IN1*OUT=OUT 
 数据类型:输入为INT 输出为DINT 
4、除法指令
 4-1:一般除法指令(Divide)
 LAD:IN1/IN2=OUT
 STL:OUT/IN1=OUT
 数据类型:输入/输出相同,不保留余数(I  DI R)
 4-2:完全整数除法(Divide integer to double integer)
        两个16位符号整数相除,产生一个32的结果,低16位为商,高16位为余数。
 LAD:IN1/IN2=OUT
 STL:OUT/IN1=OUT
举例:
LD I0.0
EU
MOVW VW10,VW16
+I VW12,VW16
MOVW VW10,VW18
-I VW12,VW18
MOVW VW10,VW22
MUL VW12,VD20   //完全乘法 
MOVW VW10,VW24
/I VW12,VW24
MOVW VW10,VW32
DIV VW12,VD32

5、数学函数指令
包括:平方根、自然对数、指数、正弦、余弦、正弦
5-1:平方根命令(square root)
 功能描述:双子长(32)的IN开平方,送入OUT(32)
 数据类型:输入/输出REAL
5-2:自然对数指令(natural logarithm)
 功能描述:将一个双子长(32)的实数IN取自然对数后送到OUT(32)
 数据类型:输入/输出均为REAL
 举例:
LD I0.0
EU
LN VD0,AC0
LN 10.0,VD100
/R VD100,AC0

5-3:指数指令(natural exponential)
 功能描述:将一个双子长(32)的实数IN取以e为底的指数后送到OUT(32)
 数据类型:输入/输出均为REAL 
5-4:正弦(Sine)、余弦(Cos)、正切(Tan):注:输入为“弧度值”
 功能描述:将一个双子长(32)的实数IN取正弦、余弦、正切送到OUT(32)
 数据类型:输入/输出均为REAL
举例:
LD I0.0
EU
MOVR 3.14159,AC0
/R 180.0,AC0
*R 10.0,AC0
COS AC0,AC1
MOVR 3.14159,AC2
/R 180.0,AC2
MOVR 120.0,AC3
*R AC2,AC3
SIN AC3,AC3
+R AC1,AC3     //SIN120°+cos10°

6、增/减指令
 又称自增/自减指令。对无符号或者有符号整数进行自加1或者减1操作
 6-1:增指令(Increment)
      数据类型:字节、INT、DINT
      INC* OUT
 6-2:减指令(Decrement)
      DEC* OUT
举例:
LD I0.0
EU
MOVW AC0,VW50
INCW VW50
MOVD VD100,VD110
INCD VD110

7、逻辑运算指令
包括:逻辑与、逻辑或、逻辑异或、取反。参与运算的可以是:字节、字、双字
7-1:逻辑与(logic and):AND* IN1,OUT
7-1:逻辑或(logic or):OR* IN1,OUT
7-3:逻辑异或(logic exclusive or):XOR*   IN1,OUT
7-4:取反(logic invert):INV* OUT
举例:
LD I0.0
EU
ANDB VB0,AC1
ORB VB0,AC0
XORV VB0,AC2
INVB VB10

三、表功能指令
  一个表:表地址(表的首地址)+最大填表数(TL)+实际填表数(EC)  /!最多100个(字)填表数据!!
   TL存放在表地址所指向的存储单元,第二个字地址所对应的存储单元存EC
   表为“字”存储的
1、表存数指令(add to table)
   LAD:AT_T_TBL
   STL:ATT DATA,TBL (DATA 字型,TBL int型)字型:无符号;int:有符号。
   添加到表的最后一个有效数据之后,且EC+1;
2、表取数指令
   两种方式:先进先出型,后进先出型
   取出后EC-1
   如果试图从一个空表中取出一个数据,则特殊标志寄存器SM1.5置位
 2-1:先进先出(FIFO)
  FIFO TBL,DATA

LD I0.0
 EU
 FIFO VW100,AC0
 2-2:后进先出(LIFO)
  LIFO TBL,DATA

LD I0.0
 EU
 LIFO VW200,AC0

3、表查找指令(table find)
  从数据表中取出符合条件数据的表中标号,编号范围0~99
   STL格式:
 FND= TBL,PTN,INDX (查找条件 =PTN)
 FND<> TBL,PTN,INDX  ()
 FND< TBL,PTN,INDX
 FND> TBL,PTN,INDX
   功能描述:
 TBL:被访问表格的首地址
 PTN:描述查表条件时进行比较的数据
 CMD:比较运算符“?”的编码为1~4的数值(分别代表=,<>,<,>)
   指令执行前:先对INDX内容清0。从INDX开始搜索表TBL,寻找符合由PTN和CMP所决定的条件的数据。如果没有发现,最后INDX为EC;如果找到一个符合条件的数据,则此处的地址存到INDX
举例:
LD I0.0
EU
FND> VW100,VW300,AC0

三、转换指令
包括:数据的类型转换、码的类型转换、数据与码的类型转换
1、数据转换指令
类型:字节、整数、双整数、实数
主要码制:BCD码、ASCII码、十进制数、十六进制数。
目的:不同的数据类型之间进行数学运算,就需要将两者转成同一个类型
1-1:字节与整数
 1-1-1:字节到整数
  LAD:B_I  STL:BTI IN,OUT
  功能描述:字节型输入的IN转换成整数类型,并将其送到OUT。字节型(无符号的),所以没有符号扩展位
  数据类型:输入为字节,输出为INT
 1-1-2:整数到字节
  LAD:I_B  STL:ITB IN,OUT
  功能描述:整数型输入的IN转换成字节类型。并将结果送到OUT。!!输入数超过255时产生溢出
  数据类型:输入为INT,输出为字节
1-2:整数与双整数
 1-2-1:双整数到整数
  LAD:DI_I STL:DTI IN,OUT
  功能描述:双整数输入IN转换成整数类型,并在OUT输出
   
1-3:双整数与实数
1-3-1:实数到双整数
 两条指令ROUND TRUNC
 ROUND IN,OUT (小数部分四舍五入)
 TRUNC IN,OUT(小数部分舍去)
1-3-2:双整数到实数
 DTR IN,OUT
1-3-3:整数到实数
 没有固定的指令,先用ITD再用DTR指令
(!!@@ 字节--整型--双整型--实数,相连接的顺序有特定的转移指令,其他的需要按照顺序转换)

1-4整数与BCD
 BCD binary code decimal 在计算机内用二进制表示十进制。
 范围0~9999(字型)
1-4-1:BCD到整数
 BCDI OUT   STL中in和out使用相同的存储位置,LAD中可以不同
1-4-2:整数到BCD
 IBCD OUT

2、编码和译码指令
2-1编码指令(encode)
 功能描述:将“字”型数据IN的最低有效位(值为1的位)的位号输出到OUT所指定的字节单元的低4位,即,用半个字节来对一个字型数据中16位中的“1”位有效位进行编码
LD I0.0
EU
ENCO VW0,VB10

2-2:译码指令(decode)
 功能描述:将字节型输入数据IN的低4位所表示的位号对OUT所指定的字单元的对应位置1,其他位置0.即,用半个字节的编码进行译码。
LD I0.0
EU
DECO VB0,VW10

3、段码指令
 功能描述:将字节型IN的低4位有效数字产生相应的七段码,输出到OUT所指定的字节单元。
LD I0.0
EU
SEG VB10,QB0

4、ASCII码转换指令
一个字节存储,0-127存储不同的符号
4-1:ascii转为16进制
 功能描述:从IN开始的长度为LEN的16进制转换为ascii码,并将结果送到从OUT开始的字节输出。LEN最大为255
 数据类型:IN、LEN、OUT 均为字节型
LD I0.0
EU
HTA VB10,VB20,4

4-2:16进制转为ascii
 功能描述:从IN开始的长度为LEN的ascii码转换为16进制数,并将结果送到OUT开始的字节输出,LEN的最大长度为255
LD I0.0
EU
ATH VB30,VB40,3

4-3:整数转换为ascii码指令
 功能描述:整数IN转化为一个ascii码字符串。格式FMT指定小数点右侧的转环精度和小数点使用逗号还是点号。转换结果放在OUT指定的连续的字节中。
 ITA IN,OUT,FMT
(!!FMT的低三位为小数点右侧的位数0-5. 低第四位表示逗号(1)、点号(0)表示小数点)
LD I0.0
EU
ITA VW10,VB20,16#0B

4-4:双整数转换为ascii
 功能描述:双整数IN转换为一个ascii字符串。格式FMT同上。 连续的12个字节OUT存储
 DTA IN,OUT,FMT
4-5:实数转为ascii
 功能描述:实数IN转成ascii字符串。FMT如上。结果在OUT 3-15个字节
 RTA IN,OUT,FMT
LD I0.0
EU
RTA VD10,VB20,16#A3

5、字符串转换指令
 ITS IN,FMT,OUT
 DTS IN,FMT,OUT
 RTS IN,FMT,OUT
 STI IN,INDX,OUT
 STD IN,INDX,OUT
 STR IN,INDX,OUT

五、字符串指令
1、字符串长度指令:SLEN IN,OUT
2、字符串复制指令:SCPY IN,OUT
3、字符串链接指令:SCAT IN,OUT
4、从字符串中复制字符串:SSCPY IN,INDX,N,OUT    从indx开始的n个
5、字符串搜索指令:SFND IN1,IN2,OUT  (从in1中搜索in2字符串,out为索引起始位置,最后为搜索字符串首个字符位置!!)
6、字符搜索指令:CFND IN1,IN2,OUT
LD I0.0
EU
MOVB 1,AC0
MOVB 1,AC1
SFND VB0,VB10,AC0
CFND VB0,VB30,AC1
STR VB0,AC1,VD100

六、子程序
包括:建立子程序,子程序的调用,返回
1、子程序的建立:
 编程软件,编辑,插入子程序
2、子程序的调用
2-1:子程序调用指令(CALL)
 LAD: EN使能时进入子程序名的子程序    返回用—(RET)
 STL:CALL 子程序名 返回:CRET
  注意:1、子程序调用时,堆栈自动保存,栈顶置1,其他值为0
  2、累加器可在调用程序和调用子程序之间自由传递。
3、带参数的子程序调用
     子程序最多可传递16个参数。参数在子程序的局部变量表中加以定义。
 局部变量表:变量名、变量类型、数据类型
规则:1、常数参数必须声明类型。如:DW#223
  2、输入或输出参数没有自动数据类型功能。
 3、参数在调用时必须按照一定的顺序排列
(!!???参数表中的数据可为输入/输出。所以CALL 程序名 参数…… 输入输出均可)

七、时钟指令
利用时钟指令可以实现调用系统实时时钟或根据需要设定时钟,对于控制系统的运行监视,运行记录和所有有关实时时间的控制非常方便。
1、读实时时钟指令
 指令描述:读当前时间和日期,并且把它装入一个8字节的缓冲区,操作数T用来指定8个字节缓冲区的地址
 TODR T
2、设定实时时钟指令
 指令描述:包括时间和日期的8字节的缓冲区装入PLC的时钟去。T为8字节的其实地址
 TODW T
注:1、没有使用过时钟指令的PLC,在使用前,要在编程软件中“PLC”一栏中对PLC进行时钟的设定。
   2、所有的日期和时间值均要用BCD表示
   3、系统不检查实时时钟各值是否正确。如2月31日
   4、不能同时在主程序和中断程序中使用读写时钟指令,否则会有致命错误,中断程序中的实时时钟指令将不被执行
   5、cpu224以上才有硬件时钟

八、中断
可在实时处理、运动控制、网络通信中非常重要
1、几个基本概念:
1-1、中断源及种类(中断请求来源  每个中断源分配一个编号加以识别,称作中断事件号)
 通信中断:利用数据接收和发送中断可以对通信进行控制
 输入/输出中断:外部输入中断(利用I0.0-I0.3的上升沿或者下降沿产生中断)、高速计数器中断(响应当前值等于预设值、技术方向改变、计数器外部复位等事件引起的中断)、脉冲串输出中断(响应给定数量的脉冲输出完成所引起的中断,常用在步进电动机的控制中)
 时基中断:包括定时中断和定时器中断
   定时中断:可以用来支持一个周期性的活动,周期时间以1ms为计量单位,周期可以是1-255ms
 定时器中断:利用定时器对一个指定的时间段产生中断,(!!!只能使用分辨率为1ms的定时器T32和T96实现)
1-2、中断优先级
 中断优先级:通信中断、输入/输出中断、时基中断
 注意:!!PLC中按照先来先服务的原则执行中断程序,中断执行时,不会被其他更高的中断打断。!!中断执行时,新出现的中断请求按照优先级高低排队。

2、中断指令
中断执行时 自动保存逻辑堆栈、累加器和某些特殊标志寄存器位,保护现场。
2-1:中断连接指令(attach interrupt)
 功能描述:将一个中断事件和一个中断程序建立联系,并允许这一中断事件
 数据类型:中断程序号INT和中断事件号EVNT均为“字节型”。
2-2:中断分离指令(detach interrupt)
 功能描述:切段一个中断事件和所有程序的联系,从而禁止了该中断事件。
2-3:开中断指令(enable interrupt)、关中断指令(disable interrupt)
 ENI:开中断指令(中断允许指令)。全局开放所有被连接的中断事件。
 DISI:关中断指令。
2-4:清除中断事件指令(clear event)
 功能描述:可从中断队列中清楚所有的EVENT类型的中断事件。队列中清除不需要的中断事件。
2-5:中断条件返回(CRETI)  
 功能描述:条件返回指令,可根据前面的逻辑操作的条件从中断程序中返回。
注:1、多事件可调用一个中断程序,但一个事件不能调用多个中断程序。
 2、系统由其他模式切换到RUN时,就自动关闭了所有的中断
 3、可通过编程在RUN模式下,用ENI开放所有的中断
 4、特别的:在一个程序中使用中断,至少有一次EMI指令
LD I0.0
MOVB 200,SMB34
ATCH INT_EX,10
ENI

//INT_EX
LD SM0.0
MOVW AIW0,VW200

3、中断程序
 中断服务程序,编程时可用中断程序入口处的中断程序标号来识别每个中断程序。
 3-1:构成:
  中断程序标号:中断程序的名称,在建立中断程序时形成
  中断程序指令:中断程序的实际有效部分,其中还可以调用嵌套子程序。
  中断返回指令:退出中断返回到主程序。有两种(1、无条件返回指令 2、条件返回指令CRETI可用于提前退出中断程序)
 3-2:要求:
  中断程序“短小精悍,执行时间段”
 3-3:编制方法
  编程软件 “编辑”-“插入”-“中断”
   注意:1、中断程序和中断中调用的子程序可共用“累加器”、“逻辑堆栈”
   2、在中断程序中不能使用“DISI”、'ENI'、'HDEF'、'LSCR'、'END'

九、高速计数器指令(HSC)
一般用法:HSC和编码器配合使用,在现代自动控制中实现精确定位和测量长度。 累计频率高于PLC的脉冲输入,利用其产生的脉冲中断完成预定的操作
1、基本概念
1-1:数量及编号
 地址编号:HCn
 HC3和HC5只能做单向计数器,其他计数器既可以做单向的,又可以做双向的
1-2:中断事件类型
 HSC的计数和动作可以用中断方式进行控制。与cpu扫描周期关系不大
 中断事件分类:
 1、当前值等于预设值中断
 2、输入方向改变中断
 3、外部复位终端
1-3:工作模式及输入点
 四种基本类型:
  1、带有内部方向控制的单向计数器
  2、带有外部方向控制的单向计数器
  3、带有两个时钟输入的双向计数器
  4、A/B相正交计数器
 工作模式:完成不同的功能。且与中断事件有着密切的关系。在使用HSC前需要使用HDEF指令给计数器设定一种工作模式。
 输入端:不同的工作模式对应特定的输入端。必须按照系统给定的输入点输入信号。
 注:同一个输入点只能做一种功能使用,所以某些输入点被高速计数器使用后,不能再做其他的用途
高速计数器的输入点和输入模式
 HSC0  I0.0 I0.1 I0.2
 HSC1  I0.6 I0.7 I1.0 I1.1
 HSC2  I1.2 I1.3 I1.4 I1.5
 HSC3  I0.1
 HSC4  I0.3 I0.4 I0.5
 HSC5  I0.4
对HSC的复位和启动有如下规定:
 1、激活复位输入端后,计数器清除当前值并一直保持到复位端失效
 2、激活启动输入端后,计数器计数;启动失败时,计数器的当前值保持为常数,并且忽略时钟事件
 3、如果在启动输入端无效的同时,复位信号激活,则“忽略”复位信号,当前值保持不变;如果在复位信号被激活的同时,启动输入端被激活,则当前值被清除
2、HSC基本指令
2-1:定义HSC指令(high speed counter definition)
 功能描述:为指定的HSC分配一种工作模式。每个计数器使用之前必须使用HDEF指令并且只能使用一次
 数据类型:HSC表示编号(0~5常数,字节型)、MODE表示工作模式(0-12常数,字节型)
 STL: HDEF  HSC,MODE      
   
2-2:HSC指令
 功能描述:根据HSC特殊存储器位的状态,并按照HDEF指令指定工作模式,设置HSC并控制其工作
 STL: HSC N
 数据类型:N表示高速计数器编号,为0-5的常数,属字型

3、高速计数器的使用方法
 每个高速计数器都有固定的特殊存储器与之相配合,完成高速计数功能。
 HSC编号  状态字节 控制字节 初始值(双字) 预设值(双字)
 HSC0  SMB36  SMB37  SMD38  SMD42
 HSC1  SMB46  SMB47  SMD48  SMD52
 HSC2  SMB56  SMB57  SMD58  SMD62
 HSC3  SMB136  SMB137  SMD138  SMD142
 HSC4  SMB146  SMB147  SMD148  SMD152
 HSC5  SMB156  SMB157  SMD158  SMD162
(注意:状态字节和控制字节,每个位的具体功能网上百度查到!)
3、使用HSC及选择工作模式步骤
 选择高速计数器,选择高速计数器的工作模式
3-1:选择高速计数器
3-2:设置控制字节
3-3:执行HDEF指令:执行HDEF指令时,HSC的输入值为0,MODE的输入值为3,指令如:HDEF 0,3
3-4:设定初始值和预定值当前值随计数脉冲的输入而不断变化,当前值可以由程序直接读取HCn得到
3-5:设置中断事件并全局开中断高速计数器利用中断方式对高速事件进行精确控制,利用ATCH指令将中断事件号和中断程序连接起来,并且开全局中断。
 ATCH HSCINT,12
 ENI
3-6:执行HSC指令:设置完成后,可用HSC指令进行计数。
 HSC 0

十、高速脉冲输出指令
  输出端产生高速脉冲,驱动负载实现精确控制,在运动控制中广泛运用。注意:PLC应该选用晶体管输出,以满足高速输出的频率要求
1、几个基本概念
1-1:高速脉冲输出的方式
 两种:告诉脉冲串输出PTO(pulse train output)(脉冲比50%)、宽度可调脉冲输出PWM(pulse width modulation)
1-2:输出端子的确定
 输出端不是任意选择的,必须按系统指定的输出点Q0.0和Q0.1来选择
   注:同一个输出点只能用一种功能。如果Q0.0和Q0.1在程序执行时用作高速脉冲输出,则只能被高速脉冲输出使用,其通用功能被自动禁止,任何输出刷新、输出强制、立即输出等指令都无效。
 在使用之前,需要用普通位操作指令设置这两个输出位,将Q0.0 Q0.1置0
2、高速脉冲指令及特殊寄存器
2-1:脉冲输出指令(pulse output)
 功能描述:检测用程序设置的特殊存储器位,,激活由控制位定义的脉冲操作,从Q0.0 Q0.1输出高速脉冲。
 数据类型:数据输入Q属字型,必须是0或1的常数
2-2:特殊标志寄存器
 每个高速脉冲发生器对应一定数量的特殊寄存器
 寄存器包括:控制字节寄存器、状态字节寄存器、参数数值寄存器

3、PTO的使用
 状态字节中的最高位用来指示脉冲串输出是否完成,在脉冲串输出完成的同时可以产生中断,因而可以调用中断程序完成指定操作。
3-1:周期和脉冲数
 周期:单位可以是us或ms,为16位无符号数据,
 脉冲数:用双字无符号数表示,取值范围1-4294967295之间,若设置的0,系统默认脉冲为1
3-2:PTO的种类
 PTO方式中,可输出多个脉冲串,并允许脉冲串排队,以形成管线。保证了脉冲串顺序输出的连续性。根据管线的实现方式分为两种:
 1、单段管线:
 2、多段管线
3-3:中断事件号:高速脉冲串输出可以采用中断方式进行控制
3-4:PTO的使用:
注:   1、确定脉冲发生器及工作模式:两方面:根据控制要求,选择高速脉冲串输出端(发生器)、选择工作模式为PTO,并且确定多段或单段工作模式。
 2、设置控制字节:被要求控制字节写入SMB67和SMB77的特殊寄存器
 3、写入周期值、周期增量值和脉冲数:如果是单段脉冲,对以上各值分别设置;如果多段脉冲,需要建立多段脉冲的包络表。
 4、装入包络线的首地址:可选操作,只在多段输出脉冲中需要
 5、设置中断事件并全局开中断:高速脉冲串输出PTO可利用中断方式对高速事件进行精确控制。
  ATCH PTOINT 19
  ENI 
  注意:必须编写中断程序PTOINT与之对应
 6、执行PLS指令

4、PWM的使用
 1、确定脉冲发生器: 一、选用高速脉冲串输出端(发生器) 二、选择工作模式为PWM
 2、设置控制字节:按控制要求设置SMB67和SMB77特殊寄存器
 3、写入周期值和脉冲宽度值:SMB68或SMB78的特殊寄存器,将脉宽值写入SMW70和SMW80特殊寄存器
 4、执行PLS指令

十一、PID回路指令
 在有模拟量的控制系统中,经常用到PID运算来执行PID回路的功能。
PID回路指令及使用
1、PID回路指令(proportional integral derivativeloop)
 功能描述:该指令利用回路表中的输入信息和组态信息,进行PID运算
 数据类型:回路表的起始地址TBL为VB指定的字节型数据;回路号loop是0~7的常数
2、PID回路号
 最多可有8条PID回路,不同的PID回路指令不能使用相同的回路号。
3、PID指令的使用
 ·建立PID回路表
 ·对输入采样数据进行归一化处理
 ·对PID输出数据进行工程量转换

(0)

相关推荐