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

已锁定

shine

  • 帖子

    8803
  • 精华

    39
  • 被关注

    157

论坛等级:至圣

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2020-09-17 10:49:26

30楼

展开查看
以下是引用渔明鱼工在2020-09-17 10:27:12的发言 >28楼

写不出这样的结构呀!z[0..14].z0,z[0..14].z1请指明一下!



有警告!


以下是引用shine在2020-09-16 08:13:30的发言 >22楼:不是,你没有理解我...

引用22楼详细内容:

不是,你没有理解我所说的。

界面中选择产品,在PLC中得到索引

PLC中直接根据索引,取数组中的变量进行计算。不需要多条判断语句,也不需要循环。

以后要增加产品数量,只要增大数组,将对应的数值填入,画面增加相应的选择,程序不需要改变

以下是引用渔明鱼工在2020-09-16 08:02:54的发言 >21楼:你的意思用FOR循...

引用21楼详细内容:

你的意思用FOR循环语句,是可以的,条条大道通罗马!

以下是引用shine在2020-09-15 13:33:21的发言 >20楼:浮点数相等的比较...

引用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_...

引用18楼详细内容:

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

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

是结构的数组,


   VAR
      PRODUCT : Int;
      Z : Array[0..15] of Struct
         Z0 : Real;
         Z1 : Real;
      END_STRUCT;
   END_VAR


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54660条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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