Q系列系列系列系列PLCST语言编程笔记语言编程笔记语言编程笔记语言编程笔记dcer1、、、、标识名标识名标识名标识名标识名不区分大小写。标识名中不能使用保留字及实际软元件等字符串。2、、、、注释注释注释注释是以表示注释的开始的“(*”及表示结束的“*)”围住部分。3、、、、数据类型数据类型数据类型数据类型ST程序中可用的数据类型如下BOOL,INT,DINT,REAL,STRING('..'或..),ARRAY,STRUCT数组要素的指定编号从0开始计数D1:=1;tanka[D1]:=1200;4、、、、软元件软元件软元件软元件a、可直接使用软元件,如D1000,X0A0、DX0(直接输入)。b、变址修饰Z2:=1;D0Z2:=K0;(*D0Z2表示D1*)c、位指定D0.0=TRUE;(*将D0软元件的第0位置为ON。*)W0.F=FALSE;(*将W0软元件的第15位置为OFF。*)d、位数指定通过将位软元件的4位、8位、12位...作为1位数进行位数指定,在位软元件中可以处理单字数据或者双字数据。K4X0:=D0;(*将从X0软元件开始的16位作为整数型(INT)使用,代入D0*)Wtest:=K1X0;(*将从X0软元件开始的4位代入单字型标签Wtest中。*)Dwtest:=K5X0;(*将从X0软元件开始的20位代入双字型标签Dwtest中*)5、、、、ST程序的表达式程序的表达式程序的表达式程序的表达式a、运算符列表(),函数(),**(指数,如tei**shisuu),NOT,*,/,MOD(余数),+,-,比较,,=,=,=,逻辑积AND,&XOR,ORb、控制语句(关键字需大写)(a)IF条件语句IF布尔表达式THEN语句···END_IF;IF布尔表达式THEN语句1···ELSE语句2···END_IF;IF布尔表达式1THEN语句1···ELSIF布尔表达式2THEN语句2···ELSIF布尔表达式3THEN语句3···END_IF;(b)CASE条件语句CASE整数表达式OF整数选择值1:语句1···整数选择值2:语句2······整数选择值n:语句n···ELSE语句n+1···END_CASE;CASED100OF1:语句1···2:语句2···3:语句3···3,4:语句4···ELSE语句5···END_CASE;(注:整数选择值只能指定无K指定的10进制数,不使用EXIT语句)(c)循环语句FORidx:=0TO100BY1DO...END_FOR;WHILEW100(W2-100)DOW100:=W100+1;END_WHILE;REPEATD1:=D1+1;UNTILD1100END_REPEAT;(d)其它控制语句RETURN;RETURN语句用于中途结束功能块内的程序·ST程序。EXIT;EXIT语句是只能在ST程序的循环语句中使用的语句,使循环回路中途结束。6、、、、使用使用使用使用FB块块块块1)设置FB变量(FB标识)选择输入输出类型,选择标识的类型。类型有以下4种:·输入变量.......从FB外部输入的变量·输出变量.......输出到FB外部的变量·输入输出变量...具有输入及输出功能的变量·“空栏”.......FB内部使用的变量2)调用:FB1(I_Test:=D0,O_Test:=D1,IO_Test:=D100);输出变量的记述可以省略。可以将FB块拖到程序中。7、、、、MELSEC函数函数函数函数1)软元件的输出BOOLOUT_M(BOOLEN,BOOLD);2)低速型定时器BOOLTIMER_M(BOOLEN,BOOLTCoil,ANY16TValue);TS:定时器触点;TC:定时器线圈;TN/T:定时器当前值IFM0THENTIMER_M(M1,TC0,K10);END_IF;(*M0=ON且M1=ON时,开始计数。*)(*M0=ON且M1=OFF时,清除计数。*)(*M0=OFF且M1=ON时,停止计数。计数值不被清除。*)(*M0=OFF且M1=OFF时,停止计数。计数值不被清除。*)3)高速型定时器BOOLTIMER_H_M(BOOLEN,BOOLTCoil,ANY16TValue);4)计数器BOOLCOUNTER_M(BOOLEN,BOOLCCoil,ANY16CValue);CS:计数器触点;CC:计数器线圈;CN/C:计数器当前值5)软元件的复位BOOLRST_M(BOOLEN,ANY_SIMPLED);6)相同的16位数据块传送BOOLFMOV_M(BOOLEN,ANY16S1,ANY16n,ANY16D);(*D起的n点=S1*)7)n位左移,将指定的BIN16位数据向左移动n位。BOOLSFL_M(BOOLEN,ANY16n,ANY16D);SFL_M(X0,K4,D100);将D100的数据向左移动4位8)智能功能模块1字数据读取从指定的智能功能模块·特殊功能模块内的缓冲存储器的指定的地址对指定点数的数据进行读取。BOOLFROM_M(BOOLEN,ANY16n1,ANY16n2,ANY16n3,ANY16D);(*如果执行条件X0变为ON,则从输入输出编号040~05F中安装的智能功能*)(*模块的缓冲存储器的地址10读取1字到D0中。*)FROM_M(X0,H4,K10,K1,D0);9)智能功能模块2字数据读取从指定的智能功能模块·特殊功能模块内的缓冲存储器的指定的地址对指定点数X2的数据进行读取。BOOLDFRO_M(BOOLEN,ANY16n1,ANY16n2,ANY16n3,ANY32D);(*如果执行条件X0变为ON,则从输入输出编号040~05F中安装的智能*)(*功能模块的缓冲存储器的地址602,603中读取2字数据至DwResult。*)DFRO_M(X0,H4,K602,K1,DwResult);10)智能功能模块1字数据写入将从指定的软元件算起n3点的数据写入到指定的智能功能模块·特殊功能模块内缓冲存储器的指定的地址以后。BOOLTO_M(BOOLEN,ANY16S1,ANY16n1,ANY16n2,ANY16n3);(*如果执行条件X0变为ON,则将3写入到输入输出编号040~05F中安装的智能*)(*功能模块的缓冲存储器的地址0中。*)TO_M(X0,K3,H4,K0,K1);11)智能功能模块2字数据写入将从指定的软元件算起n3×2点的数据写入到指定智能功能模块·特殊功能模块内的缓冲存储器的指定地址以后。BOOLDTO_M(BOOLEN,ANY32S1,ANY16n1,ANY16n2,ANY16n3);(*如果执行条件X0变为ON,则将0写入到输入输出编号040~05F中安装的智能*)(*功能模块的缓冲存储器地址41,42中。*)DTO_M(X0,K0,H4,K41,K1);12)对指定的值进行以e为底的自然指数运算BOOLEXP_E_MD(BOOLEN,REALS1,REALD);13)时钟数据的读取BOOLDATERD_MD(BOOLEN,ANY16(7)D);D[0]:年(公历:1980~2079);D[1]月(1~12);D[2]日(1~31);D[3]时(0~23)D[4]分(0~59);D[5]秒(0~59);D[6]星期(0~6)(ARRAY[0..6]OFANY16)14)时钟数据的写入BOOLDATEWR_MD(BOOLEN,ANY16(7)S);8、、、、IEC函数函数函数函数1)DINT_TO_REAL、BOOL_TO_DINT、BOOL_TO_INT、DINT_TO_BOOL、DINT_TO_INT、DINT_TO_REAL、INT_TO_BOOL、INT_TO_DINT、INT_TO_REAL、REAL_TO_DINT、REAL_TO_INT2)绝对值ABS3)对指定的数据的自然指数进行运算。REALEXP(REALS1);4)在指定的数据之间进行除法运算,并对其余数进行运算。BOOLMOD_E(BOOLEN,ANY_INTS1,ANY_INTS2,ANY_INTD1);9、、、、PID控制指令控制指令控制指令控制指令“不完全微分PID运算”和“完全微分PID运算”是相互独立的,因此可以同时执行。1)完全微分PIDINITSS:PID控制数据起始数据。使用软元件点数2+10xn数据区内容备注+0总环路数+1一次扫描中的执行环路数+2PID运行方式(正0/反)回路1+3采样周期(Ts)1~6000(10MS)+4比例常数(kp)1~10000(0.01)+5积分常数(Ti)1~32767(100MS)+6微分常数(Td)0~30000(10MS)+7过滤系数0~100(%)+8操作值下限(MVLL)-50~2050+9操作值上限(MVHL)-50~2050+10操作值变化率(deltaMVL)0~2000+11过程值变化率(deltaPVL)0~2000----------------------------------+12回路2...(1)采样周期就是执行PID运算的周期。每次执行PID运算指令时,将一次扫描的测定时间累加到至上一次扫描测定时间中。当累计值达到或超出设置采样周期时,执行相应环路的PID运算。(2)用于PID运算的采样周期的测定值以10ms为单位进行舍取。例如,如果采样周期设置为50ms,测定值为57ms,则以50ms为采样周期PID运算;如果测定值为64ms,则以60ms为采样周期执行PID运算。正0运行方式:PVSV=MV增大根据所设置的SV(设置值)和PV(测定值)执行PID运算:PIDCONTSPID运算。使用软元件点数10+18xnP63+0初次处理标识W通用数据设置区+1res+2res+3res+4res+5res+6res+7res+8res+9res+10设置值(SV)W0至2000SV设置区环路1+11测定值(PV)W-50至2050+12自动操作值(MV)R-50至2050+13过滤后的测定值(PVf)R-50至2050+14手动操作值(MVman)W-50至2050+15手动/自动选择(MAN/AUTO)W0自动!!!不是0/1+16报警(ALARM)R/W+17~+27RES+28环路2...BOOLS_PIDINIT(EN,ANT16s);将使用回路数的PID控制用数据,批量地登录到CPU模块内部,置为可以进行PID控制状态将n中指定的回路No.的运算参数变更为s中指定的软元件编号以后存储的PID控制用数据BOOLPIDPRMW(BOOLEN,ANY16n,ANY16S);n:变更的回路,S:存储变更的PID控制用数据的软元件的起始编号BOOLPIDCONT(EN,ANY16s);s:输入输出数据区域中分配的软元件的起始编号(1)执行PIDCONT指令时进行采样周期的计测及PID运算。(2)PIDCONT指令以s中指定的软元件编号以后设置的输入输出数据区域的设置值(SV)、测定值(PV)为基础进行PID运算,将运算结果存储到输入输出数据区域的自动操作量(MV)区域中。(3)在经过了采样周期的设置时间后的最初的PIDCONT指令执行时进行PID运算。2)不完全微分S_PIDINITSS:PID控制数据起始数据使用软元件点数10+14xnP54数据区内容备注+0总环路数+1一次扫描中的执行环路数+2PID运行方式(正0/反)回路1+3采样周期(Ts)1至6000(单位:10ms)+4比例常数(kp)1至10000(单位:0.01)+5积分常数(Ti)1至32767(单位:100ms)+6微分常数(Td)0至30000(单位:10ms)+7过滤系数0至100(%)+8操作值下限(MVLL)-32768至32767+9操作值上限(MVHL)-32768至32767+10操作值变化率(deltaMVL)-32