- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西门子S7-300 400高级编程培训教材,内部教材15、附录2
总览 以下习题显示如何在支持多实例的功能块中,间接访问复杂数据类型的输入/输出参数。 必须使用相同方法,如果要间接访问其它复杂数据类型,如 ARRAY、STRUCT或STRING。 任务说明 创建FB64,具有以下属性: ? FB64有一个输入/输出参数#IO_DT ,类型为DT ? 在它的3个输出参数#Sec、#Min和#Hour中, FB64返回传递给它的DT参数的秒、分种、小时分量。 执行 1. 创建FB64,具有要求的属性。 2. 创建一个FB84。首先, 在FB84中声明一个输入参数#IN_DT,类型为DT。然后声明静态变量#DUMMY,类型为ARRAY[1..100] OF INT,一个FB64的实例,名为#FB64_DT 3. 在FB84中调用实例#FB64_DT ,为该实例的输入/输出参数#IO_DT 提供FB84的输入参数#IN_DT的值。注意不允许直接传递一个输入参数到输入/输出参数。推荐使用何种解决方案? 为该实例FB64_DT的输出参数提供输出字节QB8、QB12和QB13,像前一个任务一样。 4. 使用OB1中的背景DB84调用FB84, 为FB84的输入参数#IN_DT 提供来自OB1启动信息中的变量OB1_DATE_TIME。 5. 下载块到CPU,测试程序。 A2.1习题解答:在FC中访问DT参数 FUNCTION FC 51 : VOID TITLE = VERSION : 0.1 VAR_INPUT IN_DT : DATE_AND_TIME ; END_VAR VAR_OUTPUT Sec : BYTE ; Min : BYTE ; Hour : BYTE ; END_VAR VAR_TEMP DB_Num : WORD ; END_VAR BEGIN NETWORK TITLE = // 对于复杂数据类型的输入、输出、输入/输出参数, //在主调方L堆栈中使用CALL宏建立一个指向POINTER变量(6字节)的区域交叉指针, // 传送到被调功能,以传递参数。 // POINTER变量的内容指向实际操作数。为间接访问, // 首先创建一个指向POINTER变量的区域交叉指针, // 然后,读取POINTER变量的内容, // 通过该信息访问实际操作数。 // L P##IN_DT; // 读入区域交叉指针POINTER到ACCU1 LAR1 ; // 读入指针到AR1,AR1现在指向POINTER L W [AR1,P#0.0]; // 从ACCU1中的POINTER读入DB序号 T #DB_Num; // 传送DB序号(或0)到临时变量 OPN DB [#DB_Num]; // 打开DB L D [AR1,P#2.0]; //读入区域交叉指针到DT变量 // 来自POINTER LAR1 ; //读入指针到AR1, AR1现在指向DT变量 L B [AR1,P#3.0]; // 从DT变量读入小时元素 T #Hour; // 传到输出参数#Hour L B [AR1,P#4.0]; //从DT变量读入分钟元素 T #Min; //传到输出参数#Min L B [AR1,P#5.0]; //从DT变量读入秒元素 T #Sec; //传到输出参数#Sec SET ; SAVE ; // BR位置1 END_FUNCTION ORGANIZATION_BLOCK OB1 TITLE = VERSION : 0.1 VAR_TEMP OB1_TEMP: ARRAY[1..20] OF BYTE; //OB1的启动信息 BEGIN NETWORK TITLE = CALL FC 51 ( IN_DT := #OB1_DATE_TIME, Sec := QB 13, Min := QB 12, Hour := QB 8); END_ORGANIZATION_BLOCK A2.2习题解答:在FB中访问DT参数 FUNCTION_BLOCK FB 63 TITLE = VERSION : 0.1 VAR_INPUT
文档评论(0)