子程序是一个大型程序中的某部份代码,由一个或多个语句块组成。
一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。函数在面向过程的语言中已经出现。是结构(Struct)和类(Class)的前身。本身就是对具有相关性语句的归类和对某过程的抽象。
子程序(subroutine)是一个概括性的术语,任何高级程序所调用的程序,都被称为子程序。它经常被使用在汇编语言层级上。子程序的主体(body)是一个代码区块,当它被调用时就会进入运行。
子程序的应用:
1、零件上若干处具有相同的轮廓形状,在这种情况下,只要编写一个加工该轮廓形状的子程序,然后用主程序多次调用该子程序的方法完成对工件的加工。
2、加工中反复出现具有相同轨迹的走刀路线,如果相同轨迹的走刀路线出现在某个加工区域或在这个区域的各个层面上,采用子程序编写加工程序比较方便,在程序中常用增量值确定切入深度。
3、在加工较复杂的零件时,往往包含许多独立的工序,有时工序之间需要适当的调整,为了优化加工程序,把每一个独立的工序编成一个子程序,这样形成了模块式的程序结构,便于对加工顺序的调整,主程序中只有换刀和调用子程序等指令。
百度百科—子程序
例:
#include<stdioh>
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);
}
扩展资料
使用vfork()新建子进程,然后调用exec函数族
#include<unistdh>
main()
{
charargv[]={“ls”,”-al”,”/etc/passwd”,(char)};
if(vfork()==0)
{
execv(“/bin/ls”,argv);
}else{
printf(“Thisistheparentprocess\n”);
}
}
卡西欧5800计算器主程序调用子程序:
"ZBZS(1),ZBFS(-1)="→Z↙ (坐标正算输入1,坐标反算输入-1,把选择存入变量Z)
Z =1=>Prog"ZBZS":Z=-1=>Prog"ZBFS"↙ (Z=1时,调用“坐标正算”程序,Z=-1时,调用“坐标反算”程序)
本程序调用,算完后,仍会返回这个程序头的。
个人感觉你说的第二种比较好,比较可靠。(如果你用第一种情况,电脑死机了怎么办??我们单位的电脑装上后反映就比较迟钝)
还有NETR是通过指定端口从网络读取信息(最多16个字节){结合你的情况就是从PC向PLC读取信息}
还有NETW是通过指定端口向网络写信息(最多16个字节){结合你的情况就是从PLC向PC发送信息}
具体方法:
选择菜单命令工具(T) > 指令向导叄缓笱≡NETR/NETW;
1 指定您需要的网络 *** 作数目
2 指定端口号和子程序名称
3 指定网络 *** 作
4 分配 V 存储区
5 生成代码
为了便于进行连接在网络中的 PLC 之间的数据交换,S7-200支持网络读(NETR)和网络写(NETW)指令。NETR 指令从远程 PLC中的指定地址读取配置好的一定数量的数据。NETW 指令向远程PLC中的指定地址写入配置好的一定数量的数据。NETR
和 NETW 指令 *** 作由数据表中的前七个字节控制。表中的一个数值是读取/写入数据长度,可以规定 1 至 16 个字节。因此数据表最大可达 23 个字节。
注释:在使用 HSC 向导之前,程序必须被编译,且处于符号编址模式。如果您尚未编译程序,向导在 HSC 配置过程开始时会提示您编译程序。
向导将向您询问初始化选项,然后为指定配置生成程序代码和数据块代码。从第一个屏幕选择NETR/NETW后,向导向您询问下列信息:
步骤 1 指定您需要的网络 *** 作数目
注释:如果项目包含使用 STEP 7 Micro/WIN 32 版建立的现有 NETR/ NETW 配置,您必须在继续执行步骤 1 之前选择编辑其中一个现有配置或建立一个新配置。
可使用 NETR/NETW 指令向导,简化网络 *** 作配置。向导将向您询问初始化选项,并根据您的选择生成完整的配置。向导允许您配置多达 24 项独立的网络 *** 作,并生成代码协调这些 *** 作。
步骤 2 指定端口号和子程序名称
注释:项目可能已经包含一个 NETR/NETW 向导配置。所有以前建立的配置均被自动载入向导。向导会提示您完成以下两个步骤之一:
选择编辑现有配置,方法是点击“下一步>”。
选择从项目中删除现有配置,方法是选择“删除”复选框,并点击“完成”。
如果不存在以前的配置,向导会询问以下信息:
1 PLC 必须被设为 PPI 主站模式才能进行通信。您要指定通信将通过哪一个 PLC 端口进行。
2 向导建立一个用于执行具体网络 *** 作的参数化子程序。向导还为子程序指定一个默认名称。您可以编辑默认名称。
步骤 3 指定网络 *** 作
对于每项网络 *** 作,您需要提供下列信息:
1 指定 *** 作是 NETR 还是 NETW。
2 指定从远程 PLC(NETR)读取的数据字节数或向远程 PLC(NETW)写入的数据字节数。
3 指定您希望用于通信的远程 PLC 网络地址。
4 如果您在配置NETR,指定以下内容:
- 数据存储在本地 PLC 中的位置。有效 *** 作数:VB、IB、QB、MB、LB。
- 从远程 PLC 读取数据的位置。有效 *** 作数:VB、IB、QB、MB、LB。
5 如果您在配置 NETW,指定以下内容:
- 数据存储在本地 PLC 中的位置。有效 *** 作数:VB、IB、QB、MB、LB。
- 向远程 PLC 写入数据的位置。有效 *** 作数:VB、IB、QB、MB、LB。
步骤 4 分配 V 存储区
对于您配置的每一项网络 *** 作,要求有 12 个字节的 V 存储区。您指定可放置配置的 V 存储区起始地址。向导会自动为您建议一个地址,但您可以编辑该地址。请注意,如果您使用重叠地址,向导在显示一则警告后,允许您进入下一步。
注释: 在 NETR *** 作中,请确认将用于存储数据的变量地址没有与分配给向导配置的存储区地址重叠。
步骤 5 生成程序代码
回答这些询问后,点击“完成”,S7-200 指令向导将为您指定的网络 *** 作生成代码。由向导建立的子程序成为项目的一部分。要在程序中使能网络通信,需要在主程序块中调用执行子程序(NET_EXE)。每次扫描周期时,使用 SM00 调用该子程序。这样会启动配置网络 *** 作执行。为每项网络 *** 作建立的数据处理子程序会在适当时间被自动调用。
以上就是关于什么是子程序全部的内容,包括:什么是子程序、C语言中如何调用子程序、卡西欧5800计算器求主程序调用子程序的语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)