现在在KEP中用modbus读取了一个数组:400001【10】,即对应下位机的10个可读可写变量,请问在wincc中如何针对每个地址操作?现在如果是建立单变量链接的话没有问题,问题就是不知道如何针对数组操作。数组在wincc变量管理器中为原始数据类型。
问题补充:
我就是不知道在wincc中如何拆分,现在如果在Kep中直接定义为单独变量确实没问题,但数据多了怕影响速度,现在我在Kep中定义F0_9=400001[10]直接在Kep中观察没问题,引到wincc中后就是一个F0_9的原始数据变量,我现在就是想把这个原始数据变量拆分出来,实现读出写入操作!希望大家帮忙!
最佳答案
首先使用GetTagRaw获取原始数据,然后将高低字节交换即可得到数组内容。
int i;
BYTE Bytes[20];
GetTagRaw("RawDataFromOPC",Bytes,20); //Return-Type: BOOL
for (i=0;i<10;i++)
{
printf("\r\n%d",Bytes[i*2]+Bytes[i*2+1]*256); //打印输出转换后的数组内容
}
提问者对于答案的评价:
这几天电脑出问题了,没上来看,不过这是最好的方法;基本就是这么处理的。在论坛上找到了老外的具体做法不错,试了一下,读没问题,但写一直没试出来,现在给各位同仁看下,有兴趣的大家可以试下,给大家说说:
https://www.automation.siemens.com/WW/forum/guests/PostShow.aspx?HTTPS=REDIR&language=en&PostID=38096
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274839.html