如何使用WinCC中的原始数据类型

如何使用WinCC中的原始数据类型

ID:34024642

大小:406.00 KB

页数:23页

时间:2019-03-03

如何使用WinCC中的原始数据类型_第1页
如何使用WinCC中的原始数据类型_第2页
如何使用WinCC中的原始数据类型_第3页
如何使用WinCC中的原始数据类型_第4页
如何使用WinCC中的原始数据类型_第5页
资源描述:

《如何使用WinCC中的原始数据类型》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、如何使用WinCC中的原始数据类型本文是薄祥留提供,非常实用,值得反复阅读感谢薄老师的支持,也欢迎更多朋友投稿使用情况:PLC一次需要传递大量数据给HMI;反之亦然!当然了,这也是WinCC的一个小漏洞,就是在Tags点数有限的情况下,可以使用这种方法来扩展点数。提醒:此方式下。PLC与HMI只能使用“字节”进行交互。以下重点阐述“浮点数”交互的问题!关于“DINT”或“INT”,大家可以参照“浮点数”的交互方式。其实“浮点数”交互时,依据的也就是“DINT”型数据。举例:REAL:A(保留小数点后两位)     DINT:B      推

2、导:B=REAL_To_DINT(A*100.0)A=DINT_To_REAL(B)/100.0通过上述,我们很容易得出一个结论:可以操作的“浮点数”范围应限制在“-21474836.48~21474836.47”内,也就是其扩大100倍后,在一个“DINT”范围内。这里建议大家将“浮点数”范围限制在“-20000000.00~20000000.00”,当超出范围时,HMI和PLC中应有相应的防护、报警措施。(以下文中并没有具体给出防护、报警措施)数据交互时,为了保证数据的有效性,①这里还简单的做了一下“和校验”,当然亦可以扩展其他的校验方

3、式。(校验必须要有)②还需要增加检验“PLC与HMI”是否断线从而保证交互数据的有效性!“PLC与HMI”之间断线判断方法:PLC发送递增数据至HMI,判断“当前周期数据”与“上一周期数据”是否不一样:①“不相等”,即通讯正常;②“相等”,且持续“一段时间”(5~10秒),即通讯异常!反之:HMI发送递增数据至PLC,判断方法和上面一样!一、数据方向:---PLCToHMI(HMIFromPLC)1、PLC工作:PLC创建“DB1”数据块,注意创建的数据类型是“DINT”;将浮点数转换为双整数,并存入DB1中。(这里将要传递的数据,逐一转换

4、后,存入DB1中)定义:REAL:A(保留小数点后两位)     DINT:B推导:B=REAL_To_DINT(A*100.0)PLC中计算和校验,注意这里的数据类型是”DINT”和“DWORD”。提供给HMI做判断!2、HMI工作:创建“原始数据类型”变量,这里建议:一个“原始数据类型”变量最多可以有400个字节,即100个“REAL”数据或“DINT”数据若想交互更多数据,可以新建多个“原始数据类型”变量。但一定要注意传输量限制(小于16K)。创建显示用的“内部变量”创建脚本程序//**************************

5、*************************************************************//DefineVariable定义变量//DefineReadVariableBYTERead_A[400];                  //HMIFromPLCReallyVariableDWORDRead_B[100];                     //Change TypeVariableLONGRead_C[100];                       //Change TypeV

6、ariableFLOATRead_D[100];                      //HMIVariableDWORDRead_E,Read_F;//PublicVariableINTi,j;//ReadProgram//HMIReadPLC读取数据GetTagRaw( "Read_Raw0" ,Read_A,400);//HMIFromPLCReallyVariable拼装数据for(i=0;i<100;i++){j=i*4;Read_B[i]=(DWORD)((Read_A[j]*16777216)+(Read_A[j+1]*

7、65536)+(Read_A[j+2]*256)+Read_A[j+3]);}//ChangeVariableType数据类型转换和数据校验计算//ValueCheckRead_E=0;for (i=0;i<100;i++){Read_E=Read_E+Read_B[i];      //ValueCheckRead_C[i]=(LONG)Read_B[i];    //ChangeVariableTypeRead_D[i]=((FLOAT)Read_C[i])/100.0; //ChangeVariableType}Read_F=Read

8、_E^0xFFFFFFFF;        //ValueCheck//GainPLCVariable数据写入“内部变量”中SetTagFloat( "Read0" ,Read_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。