回复:工艺部要我实现在PLC内执行一个计算公式,并把数值在WINCC画面上显示。

已锁定

渔明锅红

  • 帖子

    2064
  • 精华

    83
  • 被关注

    471

论坛等级:至圣

注册时间:2009-04-02

白金 白金 如何晋级?

发布于 2020-09-16 08:02:54

21楼

展开查看
以下是引用shine在2020-09-15 13:33:21的发言 >20楼

浮点数相等的比较是一个危险的动作,建议还是改成整数。

如果是只有这几个规格,我有一个更简便的做法:

1、规格通过文本列表,选择输入而不是直接输入,限定输入范围。

2、因为是通过文本列表,PLC的实际输入是索引而不是实际值

3、我看了下,不同规格,计算公式都是一样的,只是数值不一样,那就不同规格的参数用一个结构数组存储,不需要那么多的比较,直接用索引值从结构数组中取数值,进行计算就好了。


比如:0 对应 270,1对应300 .。。。对应plc变量 idx

然后结构数组Z 包含两个元素 z0和z1

Z[0].Z0 = 1278

Z[0].Z1 = 1478.7


Z[1].Z0 = 1263

Z[1].Z1 = 1478.7


.

.

.


最后计算公式就是 

        Mandrel_Z0:=Z[idx].Z0-x0;

        Mandrel_Z1:=Z[idx].Z1 - x1;


以下是引用渔明鱼工在2020-09-15 09:37:02的发言 >19楼:mandrel_D芯棒直径...

引用19楼详细内容:

mandrel_D芯棒直径是人为输入的值不是通过计算出来的。我们就15种规格在画面上选择输入的。

以下是引用shine在2020-09-14 11:07:25的发言 >18楼: IF Mandrel_D=...

引用18楼详细内容:

 IF Mandrel_D=  THEN 这类语句可能会有问题。

浮点数比较,如果变量是通过计算得到的,也许你看着相等,PLC算出来却不认为是相等的

你的意思用FOR循环语句,是可以的,条条大道通罗马,另外比较mandrel_D在某个区间我是认可的,这样会更可靠,还好我们这个程序不参与控制,如果有问题我会急时更改!

网鱼能够改善伙食,还能释放工作中的压力。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54793条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。