㈠ 求西门子的子程序调用的编程实例,另外还想问一下子程序是和主程序在同一个程序吗。
子程序和功能块最终都是要在主程序的调用下起作用的
主程序相当于是一间房子
而子程序就相当于是房子中的桌子
主程序
程序主体(称为
OB1),在其中放置控制应用程序的指令。 主程序中的指令按顺序执行,每个 CPU 扫描周期执行一次。
子例程
子例程是位于单独程序块的可选指令集,只在从主程序、中断例程或另一子例程调用时执行。
中断例程
中断例程是位于单独程序块的可选指令集,只在发生中断事件时执行。
STEP7-Micro/WINSMART 提供了三个程序编辑器,并通过在程序编辑器窗口为每个 POU 提供单独的选项卡来组织程序。 主程序 OB1
始终是第一个选项卡,然后是可能已创建的任何子例程或中断。
子例程
要重复执行某种功能时,子例程是非常有用的。 可在子例程中编写一次逻辑,然后在主程序中根据需要多次调用子例程。 这样做有若干优点:
您的总体代码大小减小。
与在主程序中多次执行相同代码相比,扫描时间也会减少,因为在主程序中,不管代码执行与否,每个扫描周期都会自动评估代码。
可以有条件地调用子例程,且在扫描过程中不被调用时不对子例程进行评估。
子例程容易移植;您可以单独挑出一个功能,并将其复制至其它程序中,而无须进行修改或只进行少量修改。
㈡ C语言子程序的定义和调用
高斯函数定义可以写在
#define PI 3.1415926 这行的下一行
double guassian(double t)
{
double z;
double aa,bb;
srand( (unsigned)time( NULL ) );
aa=sqrt(-2.0*log(rand()/32767.0));
bb=2*PI*rand()/32767.0;
z=0.4*aa*cos(bb)+0;
return z;
}
接下来,原来写的 void rkt2(t,h,y,n,eps,s,f) 显然有错,需纠正。
猜想是非常古老的函数写法。新写法是
void rkt2(double t, double h, double *y, int n, double eps, double *s, void (*f)())
{
程序块
}
这些问题解决后再研究别的问题,否则,错得太多,找不到家了。
㈢ C语言中如何调用子程序
例:
#include<stdio.h>
intsushu(intx)
{inti;
for(i=2;i<x;i++)
if(x%i==0)break;
if(i==x)return1;
elsereturn0;
}
main()
{inti,n=0;
for(i=2;i<=1000;i++)
if(sushu(i)==1)n++:
printf("n=%d",n);
}
(3)什么是子程序调用编程实例扩展阅读
使用vfork()新建子进程,然后调用exec函数族
#include<unistd.h>
main()
{
char*argv[]={“版ls”权,”-al”,”/etc/passwd”,(char*)};
if(vfork()==0)
{
execv(“/bin/ls”,argv);
}else{
printf(“Thisistheparentprocess ”);
}
}
㈣ 法兰克系统的 子程序怎么调用编个例子吧
调用子程序很简单的,主程序里加M98Pxxxx(xxxx为子程序的程序号),另外还要编一个专程序为Oxxxx的程序,程序的结尾一属定要以M99结尾.加工运行主程序时执行到M98Pxxxx后就会自动调用Oxxxx程序,一直执行至遇到M99后会自动返回主程序的.
如用G10座标偏移一次加工5个产品的主程序
以下是加工的主程序:
Oxxxx
G28 U0 W0
G10 P0 X0 Z0
M98 P....(调用加工程序) 第一个零件
M1
G10 P0 X0 Z_(Z为一个总长)第二个零件
M98 P....
M1
G10 P0 X0 Z_(Z为二个总长)第三个零件
M98 P....
M1
G10 P0 X0 Z_(Z为三个总长)第四个零件
M98 P....
M1
G10 P0 X0 Z_(Z为四个总长)第五个零件
M98 P....
M1
G28 U0 W0
G10 P0 X0 Z0
M30
子程序格式:
O....
T0101 M3 S2000
.
.
.
M99