A. 西門子數控系統 子程序怎麼調用
【子程序命名規則】西門子數控系統子程序命名方式有兩種:一種是以連續兩個字母開頭,後續字元可以字母、數字或下劃線(不包括分隔符),最多16個字元,例如,SS08_12;另一種是以地址符L開頭,後接數字組成,例如,L8。
【子程序調用示例】
主程序:
SS2017 (主程序名)
T1
M6
……
L8(或者SS08_12) (調用子程序L8)
……
M30
子程序:
L8(或者SS08_12)
……
RET
【多次調用子程序的方法】
程序語句格式為子程序名後接字母P和調用次數,例如,L8 P5 (調用子程序L8五次)。子程序調用次數最多為9999次。
B. 如何循環中調用子程序
子程序裡面的i=i+1放錯位置了
這樣既可
sub
子程序()
while
n=n
i
=
i
+
1
if
i
=
10
then
call
子程序1()
elseif
i
=
40
then
call
子程序2()
elseif
i
=
60
then
call
子程序3()
i=0
end
if
endwhile
end
sub
C. 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 」);
}
}
D. 怎麼在一個程序里調用子程序
其實你只要把你想加入的那個程序include進來就ok了。
比如你現在是程序1.c,但是想用程序2.c里的東東(當做子函數);
那麼在1.c的程序開頭加上:#include
「2.c」
E. 西門子PLC如何在主程序,寫入調用子程序的命令
個人感覺你說的第二種比較好,比較可靠。(如果你用第一種情況,電腦死機了怎麼辦??我們單位的電腦裝上後反映就比較遲鈍)x0dx0ax0dx0a還有NETR是通過指定埠從網路讀取信息(最多16個位元組){結合你的情況就是從PC向PLC讀取信息}x0dx0ax0dx0a還有NETW是通過指定埠向網路寫信息(最多16個位元組){結合你的情況就是從PLC向PC發送信息}x0dx0ax0dx0a具體方法:x0dx0a選擇菜單命令工具(T)>指令向導_?緩笱≡?NETR/NETW;x0dx0a1指定您需要的網路操作數目x0dx0a2指定埠號和子程序名稱x0dx0a3指定網路操作x0dx0a4分配V存儲區x0dx0a5生成代碼x0dx0a為了便於進行連接在網路中的PLC之間的數據交換,S7-200支持網路讀(NETR)和網路寫(NETW)指令。NETR指令從遠程PLC中的指定地址讀取配置好的一定數量的數據。NETW指令向遠程PLC中的指定地址寫入配置好的一定數量的數據。NETRx0dx0a和NETW指令操作由數據表中的前七個位元組控制。表中的一個數值是讀取/寫入數據長度,可以規定1至16個位元組。因此數據表最大可達23個位元組。x0dx0ax0dx0a注釋:在使用HSC向導之前,程序必須被編譯,且處於符號編址模式。如果您尚未編譯程序,向導在HSC配置過程開始時會提示您編譯程序。x0dx0a向導將向您詢問初始化選項,然後為指定配置生成程序代碼和數據塊代碼。從第一個屏幕選擇NETR/NETW後,向導向您詢問下列信息:x0dx0ax0dx0a步驟1指定您需要的網路操作數目x0dx0ax0dx0a注釋:如果項目包含使用STEP7Micro/WIN3.2版建立的現有NETR/NETW配置,您必須在繼續執行步驟1之前選擇編輯其中一個現有配置或建立一個新配置。x0dx0ax0dx0a可使用NETR/NETW指令向導,簡化網路操作配置。向導將向您詢問初始化選項,並根據您的選擇生成完整的配置。向導允許您配置多達24項獨立的網路操作,並生成代碼協調這些操作。x0dx0ax0dx0a步驟2指定埠號和子程序名稱x0dx0ax0dx0a注釋:項目可能已經包含一個NETR/NETW向導配置。所有以前建立的配置均被自動載入向導。向導會提示您完成以下兩個步驟之一:x0dx0ax0dx0a?選擇編輯現有配置,方法是點擊「下一步>」。x0dx0ax0dx0a?選擇從項目中刪除現有配置,方法是選擇「刪除」復選框,並點擊「完成」。x0dx0ax0dx0a如果不存在以前的配置,向導會詢問以下信息:x0dx0ax0dx0a1.PLC必須被設為PPI主站模式才能進行通信。您要指定通信將通過哪一個PLC埠進行。x0dx0ax0dx0a2.向導建立一個用於執行具體網路操作的參數化子程序。向導還為子程序指定一個默認名稱。您可以編輯默認名稱。x0dx0ax0dx0a步驟3指定網路操作x0dx0ax0dx0a對於每項網路操作,您需要提供下列信息:x0dx0ax0dx0a1.指定操作是NETR還是NETW。x0dx0ax0dx0a2.指定從遠程PLC(NETR)讀取的數據位元組數或向遠程PLC(NETW)寫入的數據位元組數。x0dx0ax0dx0a3.指定您希望用於通信的遠程PLC網路地址。x0dx0ax0dx0a4.如果您在配置NETR,指定以下內容:x0dx0ax0dx0a-數據存儲在本地PLC中的位置。有效操作數:VB、IB、QB、MB、LB。x0dx0a-從遠程PLC讀取數據的位置。有效操作數:VB、IB、QB、MB、LB。x0dx0ax0dx0a5.如果您在配置NETW,指定以下內容:x0dx0ax0dx0a-數據存儲在本地PLC中的位置。有效操作數:VB、IB、QB、MB、LB。x0dx0ax0dx0a-向遠程PLC寫入數據的位置。有效操作數:VB、IB、QB、MB、LB。x0dx0ax0dx0a步驟4分配V存儲區x0dx0ax0dx0a對於您配置的每一項網路操作,要求有12個位元組的V存儲區。您指定可放置配置的V存儲區起始地址。向導會自動為您建議一個地址,但您可以編輯該地址。請注意,如果您使用重疊地址,向導在顯示一則警告後,允許您進入下一步。x0dx0ax0dx0a注釋:在NETR操作中,請確認將用於存儲數據的變數地址沒有與分配給向導配置的存儲區地址重疊。x0dx0ax0dx0a步驟5生成程序代碼x0dx0ax0dx0a回答這些詢問後,點擊「完成」,S7-200指令向導將為您指定的網路操作生成代碼。由向導建立的子程序成為項目的一部分。要在程序中使能網路通信,需要在主程序塊中調用執行子程序(NET_EXE)。每次掃描周期時,使用SM0.0調用該子程序。這樣會啟動配置網路操作執行。為每項網路操作建立的數據處理子程序會在適當時間被自動調用。
F. 主程序調用子程序編程指令是什麼
主程序調用子程序編程指令是:右擊——插入——OB,然後填上OB100,OB由系統調用,並非由用戶調用。
一般會有輸入參數並有返回值,提供對過程的封裝和細節的隱藏。這些代碼通常被集成為軟體庫。函數在面向過程的語言中已經出現。是結構和類的前身。本身就是對具有相關性語句的歸類和對某過程的抽象。
轉子指令和返回指令:
在子程序的調用與返回過程中,子程序的入口地址是指子程序第一條指令的地址。用於調用子程序、控製程序的執行從主程序轉向子程序的指令稱為專注指令(子程序調用指令、過程調用指令)。為了正確調用子程序,必須在轉子指令中給出子程序的入口地址。
主程序中轉子指令的下一條指令的地址稱為斷點,斷點是子程序返回主程序的返回地址,從子程序返回主程序的指令稱為返回指令。為了在執行返回指令時能夠正確地返回主程序,轉子指令應具有保護斷點的功能。
執行轉子指令時保護斷點的方式有多種,常用的有:將斷點保存到子程序第一條指令的前一個字單元;將斷點保存到某一約定的寄存器中;將斷點壓入堆棧。
G. 怎麼調用子程序
子程序調用代碼為
G65為可帶參數調用子程序
G66為子程序調用循環,必須由G67代碼結束循環
M98為普通子程序調用
子程序名稱由字母O指定,子程序末必須加結束碼
宏維系統子程序結束碼為M17,子程序寫在主程序結碼後面
寶元系統子程序結束碼為M99,子程序單獨寫,保存在主程序同一個文件夾
~
H. C語言中如何調用子程序
在c/c++中,沒有子程序的說法,而叫做函數。函數可以有返回值,不需要時,可定義為void類型。
函數的使用與子程序的用法相同,沒有什麼特殊之處。例如
.............................................................................
int
max(int
a,
int
b)
{
/*
返回a和b的最大值
*/
return
(a
>
b)
?
a
:
b;
}
.............................................................................
int
a
=
5,b
=
8,c
=
3;
printf("a,b,c中的最大值是
:
%d\n",max(max(a,b),c);
I. 單片機中如何調用寫好的子程序
得看是什麼語言
c語言中
void zichengxu(); //主程序前先聲明子程序
void main() //主程序
{
zichengxu();
}
void zichengxu() //子程序
{
}
如子程序主體在主程序前 可不聲明子程序 直接在主程序中調用子程序