欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[PLC] ST 语言 VIII:ADD_SUB_MUL_DIV_INC_DEC_WAND_WOR_WXOR_NE

最编程 2024-06-08 15:15:30
...
一: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_补码结果);

;