【PLC学习六】PLC编程必备技能——数字量输出与输入映射

【PLC学习六】PLC编程必备技能——数字量输出与输入映射


前言

     毕业之前,在学校训练各类编程技能时,仅仅关注了程序本身,并未关注软件程序与硬件的连接。一般情况下,如单片机等,软硬件的通讯由通讯线连接通讯模块即可完成。
     但是,在实际工业应用中,通讯是一个十分复杂的模块。本文将讲述PLC中,如何实现数字量输出与输入的映射。

提示:以下是本篇文章正文内容,下面案例可供参考

一、S7-1200PLC以太网通信

S7-1200PLC本体上集成了一个PROFINET通信口,支持以太网和基于TCP/IP的通信标准。支持的协议如下所示:

  1. TCP
  2. ISO on TCP
  3. S7通信(服务器端)

二、S7-1200间接寻址

  • 数组间接寻址
  • AT变量寻址
  • Slice变量寻址

1.数组间接寻址

数组间接寻址通常有这么几种

  • DB 中数组,或者块接口、Static、Temp 的数组
  • 字符串字符间接寻址
  • I、Q 的数组
  • FB 多重背景的数组
  • DB_ANY 的数组

2.AT变量寻址(AT覆盖参数)

S7-1200 要访问声明参数内的数据区域,可以通过附加声明来覆盖所声明的参数。这样可以选择对不同数据类型的已声明参数进行寻址,
例如,可以使用 Bool 的 Array 对 Word 数据类型参数的各个位寻址。
在这里插入图片描述

3.Slice变量寻址

通过 **slice(片段访问)**方式,可以选择所声明变量中的特定寻址区域;可以实现从单个位到变量级别的符号访问;片段访问不能寻址常量。
slice 方式支持这2种方式的块:可标准访问的块、可优化访问的块。

三、AT变量寻址(实例)

  1. 创建一个FC块,并将FC块命名为MAPIN(映射输入),并在“块接口”中创建TEMP变量;
  2. 创建第一个TEMP变量,命名为TEMP1,数据类型选为DWORD;
  3. 在TEMP1的下一行,将数据类型设置为AT;
  4. 此时,TEMP中会出现一个新参数,TEMP2,数据类型为BOOL;
  5. 将TEMP2这个参数的数据类型修改成 Array[0…15] of Bool ,并编译该 FC 块,可以看到参数 TEMP1和参数TEMP2 的偏移量都是 0.0,这表示参数 TEMP1和参数TEMP2 是相同地址,只是以不同的数据类型显示,如图 1 所示。
    AT变量寻址
    其中参数TEMP2是 参数 TEMP1的 AT 覆盖参数。
    (注:对于 S7-1200 中的 FC 使用 AT,覆盖参数和被覆盖参数的数据长度必须相同。)
    提示:在映像输入FC块中,所列数据长度为32位,是因为TEMP1的数据类型为DW,是32位:

映射输入代码如下(示例):

#Temp2[0]:=#INPUT0_0; 
#Temp2[0]:=#INPUT0_1; 
...
...
#Temp2[31]:=#INPUT3_7;
#OUTPUT:=#Temp1; 

映射输出代码如下(示例):

#Temp1:=#INPUT;
#OUTPUT0_0:=#Temp2[0];                
#OUTPUT0_1:=#Temp2[1]; 
...
...
#OUTPUT3_7:=#Temp2[31]; 

由以上程序,可以看出AT覆盖参数的用法。在输入映射中,让输出的值被TEMP1的值覆盖。在输出映射中,让TEMP1被输入映射覆盖。
达成#OUTPUT:=#Temp1:=#INPUT,综上,#OUTPUT=#INPUT,完成了输入与输出间的映射。

备注

**FC调用的格式是**

"FC块名称"(输入形参:=实参,输出形参=>实参,输入输出形参:=实参...) 返回值:=“FC块名称”(输入形参:=实参,输出形参=>实参,输入输出形参:=实参...)
FC调用需要确保所有形参都有对应实参。如果没有参数的FC也需要有括号。

四、终极映射

将数字量的输入与输出地址,在新的FC块中,赋值给“映射输入”和“映射输出”FC块,实现最终的数字量输入与输出映射。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值