在plc300中建立了如下图的DB1数据块,plc与wincc建立通讯,将DB1的数据传送到wincc中建立的原始数据类型变量中(原始类型变量设置如下图),然后通过编写全局动作(周期为250ms)对原始数据类型变量解包,把解包的数据依次放入建立好的DB_VAR0至DB_VAR100的内部变量中(内部变量如下图),这是ISIEMENSID大佬当时给我的c脚本示例,我稍作修改如下:
char Tag_Nane[20]={NULL};
BYTE a[202];
short int b [101];
int i;
GetTagRaw("Raw1",a,202);
for(i=0;i<101;i++)
{
((BYTE*)&b[i])[0]=a[i*2+1];
((BYTE*)&b[i])[1]=a[i*2];
sprintf(Tag_Name,"%s%d","DB_VAR",i);
SetTagSWord(Tag_Name,b[i]);
}
测试时,plc和wincc都打开了,一切准备都做好了,通讯也建立好了,打绿√了,但我导出内部变量时发现全为0,好像没有解包成功,不知道是什么原因,请各位大佬帮忙找一下,多谢各位。
图片说明:
最佳答案
可在“变量管理”中选中任意一列,然后点击右键,在弹出菜单,添加“值”列,查看变量值
加长全局动作周期如1s看看
图片说明:
提问者对于答案的评价:
十分感谢ISIEMENSID大佬,调出值后是可以看到数值,没问题了,只是还想问一下,为什么直接导出没有数值呢,再次感谢大佬!
最佳答案作者回复:
客气了,问题解决就好
值不能导出
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc354823.html