通过modbus实现西门子Smart line屏幕对S71200的读写

在一些项目中,客户可能提出使用s71200及s71500而不是smart PLC来实现电控要求。在对于成本的考量下,我们可能也会选用西门子smart line这款屏幕。众所周知,博途软件不能编写smart line的屏幕程序,s71200更是无法正常通过网口来与smart line屏幕实现通信。网络上给出了两种方法:第一种是使用交换机作为网口中介来建立通信;第二种则是利用通信模块/通信板使得两者之间建立modbus通信。本文将仔细介绍第二种的通信方法。

一、准备工作

准备好s71200PLC及其对应模块、smart line屏幕、CB1241通信版(作为通信媒介,CM1241通信模块也可以达到相同效果)、9针屏蔽线(作为通信版和屏幕的链接,选用3、8脚有地线的公头)、网线以及博途V19、wincc flexible等软件。

二、通信设置

首先打开wincc flexible,建立一个modbus通信

打开博图软件的PLC程序,使用通信指令建立一个modbus通信的程序段

这里简单说明一下:REQ务必用系统首次循环来触发,选用cb1241,波特率9600,无校验(与smart line链接设置相同)

可以在这里调出系统首次循环

因为我们要实现屏幕对PLC的读写,所以创建一个modbus从站指令

MB_ADDR从站地址为1,REG链接我们要读写的数据块(一定要去掉数据块的优化访问!)。值得注意的是modbus通讯不能直接仿真,ERROR会报出8180的错误。

三、建立通信

安装好通信版/通信模块后我们使用屏蔽线链接smart line屏幕与通信版/通信模块

CB1241与屏蔽线的连接方式

插入后,我们的屏幕与PLC的连接就已经被建立好了。

四、变量连接

因为我们要使用屏幕作为主站读写PLC内部变量,所以必须建立两者变量间的一对一关系:

查找后得到I\Q\AI量与modbus地址的联系

从图中我们可以看出,PLC的输入量和输出量都可以被屏幕读取,但是只有Q点可以被写(多说一句,有逻辑的Q点也写不了,换句话说只有空置的Q点可写)

如果我们想读取I点的位,应该选用1x,比如I0.0实际地址为1x100001,I0.1实际地址为1x100002,等等。

如果想读写Q点的位,应该选用0x,比如Q0.0实际地址为0x1,Q12.0实际地址为0x97,等等。

如果想读AI的字,应该选用3x,比如IW96的实际地址为3x30049。

下面来介绍一下DB块的变量地址:

DB块中的变量应该使用4x HoldingRegister。如果要读写real变量,那么应该使用float类型,占4字节2地址;读写int变量就使用int类型,占2字节1地址;读写bool变量就使用bit类型,占0.1个地址。

块编译后通过偏移量确定地址的整数部分,偏移量为0地址就为400002,偏移4地址就为400004,以此类推。

需要注意当换新数组后,实际地址有变化,比如这里新数组第一个整形的地址是400053而非400054,需要“校准”

bit位的话,先确定地址整数位,偏移112与偏移113都为400057,然后看小数位从112.0到112.7分别对应400057.8到400057.1、从113.0到113.7分别对应400057.16到400057.9

wincc flexible中bool量对应地址

经过测试,可以实现屏幕对相应变量的书写。另外,由于wincc flexible中离散量报警必须使用int类型,我们可以在输出后使用赋值指令来实现屏幕的离散量报警。

  • 26
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值