本文是实际上是matlab与WINCC通信。
其主要思路:PLC把采样的温度通过FC105转化为0-100之间的数值,然后传递给wincc,
wincc再传递给matlab,matlab把采样的数值通过算法计算得到结果,把计算结果传送给
wincc,再到PLC,PLC把得到的计算结果通过FC106转换,输出。
1) 首先,s300程序
OB1通过SFC40调用中断OB35,周期是1s(也就是说PLC采样周期是1s),详细程序见
OB1.pdf,OB35.pdf
2)wincc与PLC通信
这边通信的变量有两个, 一个”yewei”, 主要是把检测温度, 然后传送给matlab,一个”wendu”
是matlab计算结果传送给wincc,用于控制输出。 (名字是瞎写的)
3) 激活wincc
激活wincc后,matlab才能与它通信,否则matlab会出现类别未注册等问题。
4) matlab
A、 先在命令窗口执行:
global r;
global yewei;
global kongzhi;
hostInfo = opcserverinfo('localhost');
allServers = hostInfo.ServerID;
da = opcda('localhost', 'OPCServer.WinCC');
connect(da);% 连接OPC服务器
grp = addgroup(da, 'group1');% 增加组
yewei=additem(grp,'yewei');% 增加项
kongzhi=additem(grp,'wendu');
set(grp,'UpdateRate',0.2);% 设置数据保存间隔
start(grp);% 记录开始
B、 simulink的连接图
阶跃为35度,P:10.2,I:0.1
得到结果: