QQ登录

只需一步,快速开始

在消息功能块中如何将字符串作为报警消息关联值上传

[ 复制链接 ]
在消息功能块中如何将字符串作为报警消息关联值上传

STEP 7/PCS 7的默认消息功能块(ALARM_S, ALARM_8P, ...)不支持"STRING"数据类型作为消息关联值与"SD.." in-out参数连接。这篇文档介绍了两种方法,实现将字符串作为报警消息关联值上传。比如可以将字符串格式的条形码、物料名、或者批次名 (SIMATIC BATCH)消息上传。这个例子中,功能块使用SCL语句创建。


注意
第一次调用ALARM_8P时,确定附加值在通信缓存中的内存需求。当发送长度可变的附加值(例如STRING)时,谨记这一点。第一次调用之后,无法发送变量长度更大的附加值。
方法 1
这里叙述了使用准确的类型转换方式将ANY指针转换为"ARRAY of CHAR"。和传统的 "BLKMOV"方式(方法 2)相比,这种方式的处理速度更快,并且灵活的适合于各种ANY指针输入。这就意味着,REAL值也可以作为消息关联值连接到功能块上。
注意
超过32个字符的文本不能通过此方法上传。
1. 导入SCL源

请点击此处下载

查看状态:已购买或有权限

您的用户组是:游客

文件名称:scl-source.zip 
文件大小:3.4 KB 
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


将"FlexString.SCL"导入到项目中。  
  • 在SIMATIC管理器中,打开主数据库的S7程序的"Sources"文件夹。
  • 选择菜单"Import > External Source...",再选择之前解压的"FlexString.SCL"源文件。
  • 为SCL程序分配一个空闲的FB号,或者使用符号表中的某个条目。
  • 保存编译源文件。
   
2.SCL程序的描述

SCL程序可以实现以下功能。
  • 声明ALARM_8P需要上传的ANY类型的输入。此例中有输入"SD_Flex_01"和 "SD_Flex_02"。为了更多的SD参数可以定义更多输入。
  • 执行ANY指针时的结构声明
      

    在消息功能块中如何将字符串作为报警消息关联值上传

    在消息功能块中如何将字符串作为报警消息关联值上传

  • 如果指针数据类型是"STRING"类型,就转为"CHAR"。
  • 已经确认了DB号和当前字节地址。
  • 读取字符串的当前长度(字符头的第2个字节)并作为一个循环因子分配到ANY指针。
  • 为了缩短字符头,在当前ANY指针长度上增加2个字节。增加时需要考虑最低的三位数值是表明地址的。

在消息功能块中如何将字符串作为报警消息关联值上传

在消息功能块中如何将字符串作为报警消息关联值上传



ANY指针作为"Alarm_8P"块的消息关联值上传。


在消息功能块中如何将字符串作为报警消息关联值上传

在消息功能块中如何将字符串作为报警消息关联值上传


3. 消息参数化  
  • 打开块菜单的"Special Object Properties > Messages..."。
  • 在"Message text"中输入所需消息文本。在消息文本中输入格式"@1%s@",以使得消息中可以显示关联值。
      
    注意
    "@1%s@"声明可以显示字符串类型(s = STRING)的相应关联值 (1 = SD_1) 。所有关联值 (SD1 到 SD10)都会随着功能块的每条消息(SIG_1 to SIG_8)上传。


方法 2
这个方法描述了如何将一个字符串通过 "BLKMOV"块写到"ARRAY of CHAR"中,上传到消息块中。和方法1相比,操作更简单,并且适合于超过32个字符的字符串。


1. 导入SCL源

请点击此处下载

查看状态:已购买或有权限

您的用户组是:游客

文件名称:scl-source.zip 
文件大小:3.4 KB 
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

按照方法1中所述将源文件"FlexString.SCL"导入到项目中。
     
2. SCL程序描述

这个SCL程序实现了如下功能。  

  • 最多16个字符的STRING类型参数声明
  • 16个字节的内部字节串声明  


在消息功能块中如何将字符串作为报警消息关联值上传

在消息功能块中如何将字符串作为报警消息关联值上传

  • 给每个元素写“0”以复位字节串。

  • 文本通过"BLKMOV"块赋到字节串上。
  • 字节串作为"Alarm_8P"功能块的消息关联值的参数上传。
       

在消息功能块中如何将字符串作为报警消息关联值上传

在消息功能块中如何将字符串作为报警消息关联值上传



3. 参数化消息
消息按照方法1中所述进行参数化。   

创建环境
这篇FAQ中画面和下载对象都创建于PCS 7 V7.1 SP1中。









回复

使用道具 举报

快速回复 返回列表 客服中心 搜索