故事作者:will666

最近创作

看看TA的故事

【跨新年】博图标准化编程技巧(五)智能电表数据转换

已锁定

will666

西门子1847工业学习平台

  • 帖子

    2135
  • 精华

    12
  • 被关注

    113

论坛等级:奇侠

注册时间:2009-05-19

钻石 钻石 如何晋级?

【跨新年】博图标准化编程技巧(五)智能电表数据转换

1748

12

2022-12-27 22:17:08

博图标准化编程技巧(五)智能电表数据转换

        智能电表一般采用Modbus的方式与PLC通讯,数据通常都是16位整数,需要在PLC里面编写数据处理程序换原为一次侧实际值。我们一般要读取智能电表的三相电压、电流、总功率、总功率因数、频率、总有功电量等数据,如果逐行写转换命令会非常繁琐,所以最好将一个电表的数据处理程序集成为一个FC程序块多次调用。

        我们需要显示的变量在智能电表的通讯地址表里通常不是连续存储的,如下面整个电表的通讯地址,所需要的数据存储在40041到40065之间的25个16位地址中。当电表数量较少时我们可以采用轮询的方式只读取我们需要的变量,当电表数据较多时为了提高轮询效率我们一般一次性读取25个数据,后期处理时再分别摘取需要的数据。我习惯使用一款国产485转PN的通讯网关,这个网关可以将485通讯数据直接映射到PLC的IW数据区,不需要编写485通讯程序,非常方便。

    

        在设计FC的接口时,简单的方法就是输入接口分别连接需要的三相电压、电流、总功率、总功率因数、频率、有功电能等原始地址,输出接口再分别连接以上转换后的地址变量,输入输出接口都需要十几个,程序块会非常长。为了使程序更加简洁,输出接口我们采用前面介绍的UDT数据类型定义,这样只需要连接一次就可以了;输入接口我们定义为一个25个无符号整数的数组,这样就可以一次性输入所有原始数据。

        使用的时候,我们先用BLKMOV块移动指令将25个IW地址数据赋值给一个中间数组变量,然后将数组变量连接到FC的输入接口,再将换算系数等常数填入,最后在输出接口填入转换后的UDT上位监控变量地址就可以完成一个智能电表的数据转换,并且这个程序看起来非常整洁,还不宜出错。


        唯一的遗憾是我曾经尝试将IW数据直接填入FC的输入接口但没有成功,希望有经验的大佬留言指点一下可否实现,如何实现。


【跨新年】博图标准化编程技巧(五)智能电表数据转换 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3366条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。