| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2317 人关注过本帖
标题:台达PLC
只看楼主 加入收藏
cdwyh284
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-6-16
结帖率:22.22%
收藏
 问题点数:0 回复次数:10 
台达PLC
我想用VB往台达PLC里写负数,不知该怎么写了,请大家帮帮忙吧!!先谢谢!就是写压力补偿数据,这个补偿数据可能是正数或负数,写正数都写进去了,可负数不知该咋写了。哪位高手写过,指点一下吧。多谢
搜索更多相关主题的帖子: 压力 
2011-08-03 09:09
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
你要知道 这个PLC 的负数表示 方法。
一般负数有补码表示。

如果负数表示法后,可以,按要求定义好数据大小,是2字节的整数,还是4字节的整数,或者是 1字节
如果是 2或4字节的,定义对应的数据类型,直接写负数,然后写过去就是了。
如果是 1字节,那你可能要手动转为补码,然后再写过去。

授人于鱼,不如授人于渔
早已停用QQ了
2011-08-03 16:03
cdwyh284
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-6-16
收藏
得分:0 
回复 2楼 风吹过b
谢谢你!我看了看PLC的说明,负数用2进制,最高位(第15为)0正,1负,还补码+1.该是2字节的吧(我写入的负数或正数都是+/-9.999这样的数)。您能给我个VB源码吗,让我学学,先谢谢你,好吗?
2011-08-03 17:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
15位 是符合位,那说明 数据表示是使用的 整数 表示。Integer 类型
那么你可以直接发送负数过去。
整数 中 的负数就是这 这种的表示的 ,如 -2 = &HFFFE
不需要再做转换了。
 
---------------
刚看到一点,你那个 数据是 带小数点的??
如果是带小数点的话,就有点麻烦。2字节,是什么类型的数据能带小数点。我不知道。
或者说,仪器会自动缩放倍数?

授人于鱼,不如授人于渔
早已停用QQ了
2011-08-04 07:57
cdwyh284
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-6-16
收藏
得分:0 
回复 4楼 风吹过b
你好,我试了,用写正数的程序写负数时,还是不行,写不进去。我写正数时如果是3位小数,我给乘1000后转变成整数,再变成16进制,存储在PLC。读出时再转成10进制后,再除以1000,就行了。确实是整数形式存储的。可负数该怎么处理呢?能否用VB告诉我呀?我很着急,请你多帮帮忙吧,谢谢你!
2011-08-04 16:06
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
不知道这个 PLC 如何才能接受负数,或者说 不知道它的负数格式。
你偿试把一个 负数从 PLC 发到PC端,看看这个负数的 16 进制数是怎么样的。


'------转码测试代码--------
Dim b As Integer
b = -2
Print Hex(b)          '直接输出 负数的 十六进制
Print

Dim a As Integer

a = Abs(b)            '转正数
Print Hex(a)
a = &HFFFF - a        '反码
Print Hex(a)
a = a + 1             '补码
Print Hex(a)          '输出计算结果,与负数的十六进制完全相同

授人于鱼,不如授人于渔
早已停用QQ了
2011-08-04 17:09
cdwyh284
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-6-16
收藏
得分:0 
回复 6楼 风吹过b
写负数解决了,谢谢你!
还有个问题需要请教你,我在picture里画实时压力时间曲线,一直在画的,当打开其他窗体时,把画的曲线挡住了,关掉窗体,先画的曲线没了!!我把picture的AutoRedraw设为True后,当打开其他窗体时,把画的曲线挡住了,关掉窗体,遮挡的曲线就都存在了。picture的AutoRedraw设为True后,可是我在picture里画的网格线呼啦呼啦的老闪,这个问题怎么解决呢?还得请教你,高手!!先谢谢你了!!!!
2011-08-05 15:53
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
你使用 缓冲模式 。

再开一个 picture ,然后每次在这个新的picture 中进行绘图,然后再复制到 显示的那个 picture 中去。
新的 picture 的 AutoRedraw 设为真, 显示的 picture 的AutoRedraw 设为候假。

每次刷新 picture 中曲线时,都是从 新的picture 中复制过去,可以减少闪烁的情况,如果你的刷新速度不快的话,基本上可以杜绝闪烁情况。
另外,绘图过程可以优化,如果重复使用的 部分,甚至可以照样开 picture 缓存起来,可以减少 代码绘图时间,提高 执行效率。

授人于鱼,不如授人于渔
早已停用QQ了
2011-08-06 09:29
cdwyh284
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-6-16
收藏
得分:0 
谢谢你,缓冲模式能给个简单例子,VB源码,让我学习学习,
2011-08-08 14:02
cdwyh284
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2011-6-16
收藏
得分:0 
回复 8楼 风吹过b
谢谢你,缓冲,给个例子吧,VB代码,我像你多学习点。我给你多多的分数。谢谢,大侠
2011-08-08 17:10
快速回复:台达PLC
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039641 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved