㈠ 求西門子的子程序調用的編程實例,另外還想問一下子程序是和主程序在同一個程序嗎。
子程序和功能塊最終都是要在主程序的調用下起作用的
主程序相當於是一間房子
而子程序就相當於是房子中的桌子
主程序
程序主體(稱為
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