一:ADD_SUB_MUL_DIV_INC_DEC_WAND_WOR_WXOR_NEG
说明:简单的顺控指令不做其他说明。
控制要求:无
编程梯形图:
执行程序主程序梯形图和对应的局部变量
执行程序主程序ST语言和对应的局部变量
FB块梯形图程序和对应的局部变量
FB块ST语言和对应的局部变量
结构化编程ST语言(图片中的源码):
FB块调用的ST语言
(*ST语言调用四则运算的FB块的方法,其中除法运算中商和余数包含了结构体和数组的使用方法*)
ST四则逻辑运算_1(智慧工控_ST_加数1:= ST_加数1 , 智慧工控_ST_加数2:= ST_加数2 , 智慧工控_ST_加结果1:=ST_加结果1 , 智慧工控_ST_调用加法:= ST_调用加法 ,
智慧工控_ST_减数1:=ST_减数1 , 智慧工控_ST_减数2:=ST_减数2 , 智慧工控_ST_减结果1:=ST_减结果1 , 智慧工控_ST_调用减法:=ST_调用减法 ,
智慧工控_ST_乘数1:=ST_乘数1 , 智慧工控_ST_乘数2:=ST_乘数2 , 智慧工控_ST_乘结果1:=ST_乘结果1 , 智慧工控_ST_调用乘法:=ST_调用乘法 ,
智慧工控_ST_除数1:= ST_除数1 , 智慧工控_ST_除数2:=ST_除数2 , 智慧工控_ST_调用除法:=ST_调用除法 , 智慧工控_ST_除法结果:= ST_除法结果.ST结果商1和余数1 ,
智慧工控_ST_调用加一:= ST_长通 , 智慧工控_ST_加一结果:= ST_加一结果,
智慧工控_ST_调用减一:= ST_调用减一, 智慧工控_ST_减一结果:= ST_减一结果 ,
智慧工控_ST_调用逻辑与:= ST_调用逻辑与, 智慧工控_ST_逻辑与数据1:= ST_逻辑与数据1 , 智慧工控_ST_逻辑与数据2:= ST_逻辑与数据2, 智慧工控_ST_逻辑与结果:= ST_逻辑或结果 ,
智慧工控_ST_调用逻辑或:= ST_调用逻辑或 , 智慧工控_ST_逻辑或数据1:= ST_逻辑或数据1 , 智慧工控_ST_逻辑或数据2:= ST_逻辑或数据2, 智慧工控_ST_逻辑或结果:= ST_逻辑或结果 ,
智慧工控_ST_调用逻辑异或:= ST_调用逻辑异或 , 智慧工控_ST_逻辑异或数据1:= ST_逻辑异或数据1 , 智慧工控_ST_逻辑异或数据2:= ST_逻辑异或数据2 , 智慧工控_ST_逻辑异或结果:= ST_逻辑异或结果 ,
智慧工控_ST_调用补码:= ST_调用补码 , 智慧工控_ST_补码结果:= ST_补码结果 );
FB块中的ST语言
(*加法运算ADDP(EN,s1,s2,d);*)
ADDP(智慧工控_ST_调用加法,智慧工控_ST_加数1,智慧工控_ST_加数2,智慧工控_ST_加结果1);
(*减法运算SUBP(EN,s1,s2,d);*)
SUBP(智慧工控_ST_调用减法,智慧工控_ST_减数1,智慧工控_ST_减数2,智慧工控_ST_减结果1);
(*乘法运算MULP(EN,s1,s2,d);*)
MULP(智慧工控_ST_调用减法,智慧工控_ST_乘数1,智慧工控_ST_乘数2,智慧工控_ST_乘结果1);
(*除法运算DIVP(EN,s1,s2,d);*)
DIVP(智慧工控_ST_调用除法,智慧工控_ST_除数1,智慧工控_ST_除数2,智慧工控_ST_除法结果);
(*加一运算INCP(EN,d);*)
INCP(智慧工控_ST_调用加一,智慧工控_ST_加一结果);
(*减一运算DECP(EN,d);*)
DECP(智慧工控_ST_调用减一,智慧工控_ST_减一结果);
(*逻辑与运算WANDP(EN,s1,s2,d1);*)
WANDP(智慧工控_ST_调用逻辑与,智慧工控_ST_逻辑与数据1,智慧工控_ST_逻辑与数据2,智慧工控_ST_逻辑与结果);
(*逻辑或运算WORP(EN,s1,s2,d1);*)
WORP(智慧工控_ST_调用逻辑或,智慧工控_ST_逻辑或数据1,智慧工控_ST_逻辑或数据2,智慧工控_ST_逻辑或结果);
(*逻辑异或运算DIVP(EN,s1,s2,d);*)
WXORP(智慧工控_ST_调用逻辑异或,智慧工控_ST_逻辑异或数据1,智慧工控_ST_逻辑异或数据2,智慧工控_ST_逻辑异或结果);
(*补码运算NEGP(EN,d);*)
NEGP(智慧工控_ST_调用补码,智慧工控_ST_补码结果);
;