111,115
社区成员




昨天C#接收PLC数据,再生成动态曲线图,这一步是成功的
今天,我嫌两个数a和b一个是0.0-1.0范围内,一个是800左右,放在同一个区域内显示不清晰,就将前者乘以10,后者除以10,二者数值相近,就好在chart1里清晰地显示了,可是调试时报错System.OverflowException:“溢出错误。”
应当是接收时的数据类型是float,乘以10后自动变成double类型,于是我做转换。代码框里没问题,调试时报错溢出。
现在的源代码步骤如下:
float a, b; //初始值,来自于PLC
double a1=a * 10.0f;//乘以10
double b1=b / 10.0f;//除以10
float a2=(float)a1; //将double转换为float,以显示在chart1
float b2=(float)b1; //将double转换为float,以显示在chart1
补充,如果你不喜欢归一,那么双精度改单精度,你可以用Math.Log10 这个方法。
把后一个统一归一化[0,1]之间即可,当然前提你应该知道后一个东西的最大值和最小值是啥,你做plc数据应该有量程范围,如果文档没写就问一下硬件的人,你按量程范围归一计算即可。
至于归一公式么,随便百度把。我就不贴了。
这里好冷清呀!