关于如何修改时基问题 点击:1452 | 回复:19



博异

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-08-30 10:55:00
楼主
大家都知道,在wincc画片中定义一个输入区将时间传送给 cpu时,如果不经过处理,会导致plc直接停机,但要是经过处理后,往往只能显示9.9秒以下,这是为什么呢?因为在程序,西门子给定的时基是0.01s,显示时间=(bcd码×时基)=999×时基;如果时基是0.01s,它最大只能显示9.99秒,超过10s,就只能显示为0;那么如果能显示10s以上的呢,我这里有个好的修改时基的方法,比如在wincc中定义md200为时间输入变量,先把md200和10相乘得md210,再传递为实型md220,再与0.1相乘得md230,再进行round转换得md240,再传送为bcd码md250,再与w#16#1000进得字或得qw80,再将qw80作为定时器的时间变量,一切就好了,这样能显示0-100s,要是业示0-1000s,把最后的md250与w#16#2000相字或 ,要是显示10000s以下,只要与w#16#3000相字或就可以了;为什么要与16进制中的1000进得字或呢,因为在时基位是00  1010 0110 0011,时基位正好在第12位和第13位进行改变,00表示0.01s显示,要是改成01,就是在原来时间上加上二进制数1000000000000化成十六进制正好是1000,同理得出最高时基11为显示10s ,也就是加上1100000000000,化成十六进制正好是3000,所以时基就是这样来修改成功的!



博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-10 19:26:00
1楼
难道没有人能读懂这篇文章,只有真正实践过的人也许会明白我的的苦衷

小小生

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 223回
  • 年度积分:0
  • 历史总积分:342
  • 注册:2003年12月02日
发表于:2006-09-13 11:04:00
2楼
不错,可行
谢谢

亚星

  • 精华:1帖
  • 求助:0帖
  • 帖子:14帖 | 340回
  • 年度积分:0
  • 历史总积分:394
  • 注册:2001年1月08日
发表于:2006-09-13 15:22:00
3楼
实际上只要明白S7里时基的数据类型就好办了.

shibaoyou

  • 精华:1帖
  • 求助:0帖
  • 帖子:97帖 | 346回
  • 年度积分:0
  • 历史总积分:633
  • 注册:2005年11月27日
发表于:2006-09-13 15:22:00
4楼
谢谢!修改过程中为什么要进行这么多次转换呢?从md200开始就是从PLC中进行的把?从md200直接经过round传给md240可以吗?
比如在wincc中定义md200为时间输入变量,先把md200和10相乘得md210,再传递为实型md220,再与0.1相乘得md230,再进行round转换得md240,再传送为bcd码md250,再与w#16#1000进得字或得qw80,再将qw80作为定时器的时间变量

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-15 08:59:00
5楼
回楼上:不行,因为直接将双整md200经过round ;因为在plc计算过程中必须在实数下进行计算,不然会将寄存器中ov位置1,造成无故停机,不信你试试!

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-09-15 09:16:00
6楼
用Wincc做上位机,S7作下位机,需要那么复杂的转换吗?
Wincc对变量类型选择你需要在Wincc中使用的格式,改变类型选择变量类型要转换为的数,比如你选择Float,那么就选择FloatToSimaticTime,或者是FloatToSimaticBCDTime,这两者的区别就是定时器使用BCD还是S5Time,直接就可以设定与读取,但是要注意的是:上位机向下位机写的是以MS为时基的,所以你需要对变量作线形标定。

shibaoyou

  • 精华:1帖
  • 求助:0帖
  • 帖子:97帖 | 346回
  • 年度积分:0
  • 历史总积分:633
  • 注册:2005年11月27日
发表于:2006-09-15 10:49:00
7楼
谢谢两位的解答.
由于没有PLC所以不能实验您两位所说的,不过在WINCC中确实有数据的转换.我刚刚看过了,就和yuanle说的一样.博异您实验一下把成功的话别忘了告诉我一声,谢谢

shibaoyou

  • 精华:1帖
  • 求助:0帖
  • 帖子:97帖 | 346回
  • 年度积分:0
  • 历史总积分:633
  • 注册:2005年11月27日
发表于:2006-09-15 10:52:00
8楼
请问yuanle 是以10ms为时基的吗?

设备主任

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 164回
  • 年度积分:0
  • 历史总积分:502
  • 注册:2005年6月20日
发表于:2006-09-15 14:31:00
9楼
太麻烦了,只要与w#16#2000相字或就可以了,

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-18 20:03:00
10楼
回楼上,你说的是将实型转换为时间所要的格式,可是那只能实现9.9s以下的控制,对于9.9秒以上的还是显示为0,你不改时基是无法实现的,修改时基一定要改变格式中第十二和十三位的值来改变范围,你说的方法我还是试不通,不过还是谢谢你,有没有其它的方法来改变

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2006-09-18 20:24:00
11楼
我已经说过,上位机对下位是采用毫秒的,你为什么不使用线形标定功能?那就能将MS的单位扩展到S,显然线形标定对于Wincc来说是不难解决的。

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-22 20:25:00
12楼
谢谢yuanle,我试过了,行了
shibaoyou,你在wincc界面上设定输入为实数,格式改为FloatToSimaticBCDTime
在线性标定时:过程值下限:0,过程值上限:1000
变量值下限:0,变量值 上限:1
这样就可以了

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-22 20:26:00
13楼
谢谢yuanle,我试过了,行了
shibaoyou,你在wincc界面上设定输入为实数,格式改为FloatToSimaticBCDTime
在线性标定时:过程值下限:0,过程值上限:1000
变量值下限:0,变量值 上限:1
这样就可以了

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-22 20:26:00
14楼
谢谢yuanle,我试过了,行了
shibaoyou,你在wincc界面上设定输入为实数,格式改为FloatToSimaticBCDTime
在线性标定时:过程值下限:0,过程值上限:1000
变量值下限:0,变量值 上限:1
这样就可以了

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-22 20:26:00
15楼
谢谢yuanle,我试过了,行了
shibaoyou,你在wincc界面上设定输入为实数,格式改为FloatToSimaticBCDTime
在线性标定时:过程值下限:0,过程值上限:1000
变量值下限:0,变量值 上限:1
这样就可以了

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2006-09-22 20:27:00
16楼
谢谢yuanle,我试过了,行了
shibaoyou,你在wincc界面上设定输入为实数,格式改为FloatToSimaticBCDTime
在线性标定时:过程值下限:0,过程值上限:1000
变量值下限:0,变量值 上限:1
这样就可以了

刘正刚

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 216回
  • 年度积分:0
  • 历史总积分:237
  • 注册:2006年11月10日
发表于:2006-11-12 14:19:00
17楼
又学了一手。

wincc.5591

  • 精华:0帖
  • 求助:1帖
  • 帖子:23帖 | 240回
  • 年度积分:0
  • 历史总积分:397
  • 注册:2005年10月22日
发表于:2006-11-12 22:34:00
18楼
学到了啊

博异

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 70回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2006年7月24日
发表于:2007-04-10 12:01:00
19楼
刚刚发现一个sfc33和sfc40能直接将实数转化为s5时间,大家可以一试

热门招聘
相关主题

官方公众号

智造工程师