您好,欢迎访问一九零五行业门户网

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

注意
第一次调用alarm_8p时,确定附加值在通信缓存中的内存需求。当发送长度可变的附加值(例如string)时,谨记这一点。第一次调用之后,无法发送变量长度更大的附加值。
方法 1
这里叙述了使用准确的类型转换方式将any指针转换为”array of char”。和传统的 “blkmov”方式(方法 2)相比,这种方式的处理速度更快,并且灵活的适合于各种any指针输入。这就意味着,real值也可以作为消息关联值连接到功能块上。
注意
超过32个字符的文本不能通过此方法上传。
1.导入scl源
scl-source.zip (1,7 kb)
将”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指针时的结构声明
图. 01如果指针数据类型是”string”类型,就转为”char”。已经确认了db号和当前字节地址。读取字符串的当前长度(字符头的第2个字节)并作为一个循环因子分配到any指针。为了缩短字符头,在当前any指针长度上增加2个字节。增加时需要考虑最低的三位数值是表明地址的。
图. 2
any指针作为”alarm_8p”块的消息关联值上传。
图. 3
注意
关于any指针的数据结构和类型的更多信息可以参考在线帮助”format of the any parameter type”。
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 (1,7 kb)
按照方法1中所述将源文件”flexstring.scl”导入到项目中。
2.scl程序描述
这个scl程序实现了如下功能。
最多16个字符的string类型参数声明16个字节的内部字节串声明
图. 4
给每个元素写“0”以复位字节串。
文本通过”blkmov”块赋到字节串上。
字节串作为”alarm_8p”功能块的消息关联值的参数上传。
图. 5
3. 参数化消息
消息按照方法1中所述进行参数化。
创建环境
这篇faq中画面和下载对象都创建于pcs 7 v7.1 sp1中。
关键词
any 指针
其它类似信息

推荐信息