组态控制方法
什么叫组态控制?
- 从应用场景上来看,如果现在集成了一个系统,它既包括了生产A要用的全部I/O系统,又包括可生产B和C等等要用的全部I/O系统。但是ABC的生产I/O不一样(硬件组态不尽相同)。
- 这个时候我就想用一套程序(包括硬件组态)就能适配全部的ABC生产。另外我在切换硬件组态的时候还要要求不能停机。
以上的案例就衍生出来了组态控制
。它实现了一种只需要一套程序和硬件组态,通过程序的方式(意味着可以通过HMI,WEB,上位机等更多方式)轻松的选择和设置相应的设备型号的方法。
如图:
如果想要现成的程序和实例,请直接访问sios,输入文档编号29430270获取详细资料。官网有详细的LCC库文件来实现用户的组态控制需求。本文是纯折腾用的,不想折腾就不用往下看了。
1. 在1500中央机架上做组态控制
先来介绍一下硬件配置数据的记录格式(直接截图了,累了):
- 块长度计算:[4bytes+(slot数量*(bytes in per slot))],simtic1500系列每个slot占1个字节数量
- ID:DS196,它是组态控制专用DS
- 版本:用来区分产品类别(ET200MP,ET200SP或者SIMATIC S71500中央机架),中央机架我们就填4;另外subversion子版本1500填0。
- 组态slot0,值16#0表示正在使用,值16#FF表示此模块在实际安装系统中不存在
- slot1:表示CPU,因为CPU始终只能在插槽1里面,值16#1表示实际安装系统中正在使用
- slot2~n:表示对应模块在实际安装系统中的插槽号,16#FF表示不存在。(比如中央机架最大插槽数是31,那么结构可以到slot31去)
- 实际没有的slot标记为16#FF,可以在组态里面把该插槽位忽略掉
操作方法
1 .在硬件组态里面勾选允许通过用户程序重新组态设备
:右键PLC
>选择组态控制
>勾选
。- 建立DS196数据结构如下(空缺运行的注释写错了,这里和
空缺运行没有任何关系): - DS写入设备中,靠
WRREC
指令1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21//用repeat..until直到完全写入程序再往下跑
REPEAT
#WRREC_Instance(REQ := "_RD_WR".WR.I.REQ,
ID := "_RD_WR".WR.I.ID,//对于集中式设备,始终填写33(Local~Configuration)
INDEX := "_RD_WR".WR.I.INDEX,
LEN := "_RD_WR".WR.I.LEN, //给byte0中填写的字节数。
DONE => "_RD_WR".WR.O.DONE,
BUSY => "_RD_WR".WR.O.BUSY,
ERROR => "_RD_WR".WR.O.ERROR,
STATUS => "_RD_WR".WR.O.STATUS,
RECORD := "_DS196");
//status memerary
IF "_RD_WR".WR.O.ERROR THEN
#memerary := "_RD_WR".WR.O.STATUS;
END_IF;
//configDown
IF 16#0070_0200 = "_RD_WR".WR.O.STATUS THEN
#ConfigDown := TRUE;
"_RD_WR".WR.I.REQ := FALSE;
END_IF;
UNTIL #ConfigDown END_REPEAT;.实测过,配置组态控制之后
CPU启动速度
会变得极慢,但是最终还是要起起来的。
- 建立DS196数据结构如下(空缺运行的注释写错了,这里和
2. 在I/O上做组态控制
- 在I/O上做组态控制的场景如图:
- 继续介绍IO系统的组态控制的数据格式
- 操作方法
- 在
网络视图
的IO通信
下面更改标签,使能可选IO设备
,如图: - 如果还需要通过程序重新定义端口互连的话,则还需要去设置以太网口端口的
伙伴端口连接选项
改为伙伴由用户程序设置
,如图: - 数据记录:
- 调用
ReconfigIOSystem
1
2
3
4
5//IO的组态控制
#ReconfigIOSystem_Instance(REQ:="_RD_WR".WR.I.REQ,
MODE:=2,//本质调用D_ACT_DP,=1则禁用IO系统中的所有网络,=3启用IO系统中的所有网络,=2按照CTRCREC重新组态IO网络
LADDR:=64,//CPU的PN接口硬件标识符
CTRLREC:="resys_IO".my_ctrlrec);//上面建立的resys_IO的数据结构的内容
3. 1200系统中的组态控制
如图:
- 1200依旧使用
DS196
来完成组态控制 - 实际没有的slot标记为16#FF,理解如上图
4. ET200MP_ET200SP_ET200PRO_ET200AL的控制组态
- 总体方法和SIMATIC 1500上差不多,但是细节和DS结构上会有一些差别,详情参考TIA博图帮助信息。
- ET200MP的version是3,ET200SP的version是2,AL和PRO也有自己的version
- ET200SP,ET200MP,AL,PRO除了使用DS196写入(
WRREC
)配置之外,都可以使用DS197回读(RDREC
)配置 - ET200SP和ET200MP中
slot不存在用值127
表示。(ET200SP/ET200MP支持。AL和PRO没了解) - WRREC的ID填写
输入扩展名为“∼Head”的 IM 子模块的硬件标识符
。(ET200SP/ET200MP支持。AL和PRO没了解) - ET200SP在建立DS时除了需要slot之外,还有一个变量叫
info_slot
,info_slot=1表示打开新的电位组
,DS197回读的时候结构需要注意一下。 - 实际使用的时候请参见博图帮助,因为这一节是摘抄的帮助的相关信息,没有自己动手做。
组态控制方法
http://example.com/2024/07/21/组态控制方法/