登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:错过一个叉路口,路程可能就差十万八千里

点击:992 回复:9

http://m.gkong.com/bbs/460775.ashx施耐德编程软件somachine中浮点转换求指点迷津
本帖链接上面的帖子。
     我是一个去年接触PLC的初学者,目前也就可能勉强算入门吧,一路都是自学过来,靠着百度,论坛,官网,视频教程,客服电话,目前也就只接触过施耐德的几个系列,西门子,三菱都没有,更苦逼的是施耐德本身网上各种论坛沟通交流的就少,也没有西门子那样的论坛,所以中途走了不少弯路。
     不过好在遇到了不少好心人,就像我们这个工控论坛的各位大侠,譬如C版,FUJIFA,G版,PDSH,蜀中之首还有gaoyingchun高工等在我PLC的学习路上给了不少的指点,虽然到目前为止有些回复我还没琢磨清楚。
     话扯多了,今天说的就是前段时间的求助帖子(见上)。
     一开始我的思路是对的,第三方仪表读取一个32位浮点数的温度值,通过通讯得到的是高字(2字节),低字(2字节),其实只需要将高低字通过move指令交换后存为另一个变量A即可得出,但我错在了将A以双字dword定义,再以类型转换指令得到一个real浮点数,就像fujifa说的“在大多数PLC中,DWORD_TO_REAL仅仅代表将双字整型转换为浮点数”,这是第一个错误;
     第二个错误就是我没有定义A而是将A直接以地址来当做一个变量(%MDxx),而这个思路也其实就是第一个错误,本身%MD的定义就是默认的双字,虽然REAL也是以双字形式定义。
     后来我就发了求助帖,然后FUJIFA指出了我的程序问题,C版将其中的16进制转浮点数特意做了一个功能块“hextofloat”,我想简单了,我以为后续之路会一目了然,但在10进制双字转16进制的路上我又走错了,为此我咨询了三次施耐德客服,给了我三种方法(也很奇葩不是?),也只有第三次的客服给了我“真理”,就是我下面图片中的再简单不过的方式实现了我的诉求。这还不包括我咨询的其它工作过程中接触到的工程师。
     好在借助于上一个帖子我也学习了不少的知识。
     为此我将自己犯错的地方和正确的地方用红色线圈出来给大家对比着看。
     路漫漫其弯多兮,方法思路何其重要兮!
   
附件 微信图片_20181129120822.jpg
附件 微信图片_20181129120826.jpg
附件 微信图片_20181129120828.jpg
最后修改:2018/11/30 8:48:09
18-11-29 12:39
说下我的感想:别人给予了你帮助,你完善帖子,详细说明,这是最喜闻乐见的感谢方式。这点楼主就做得很好呀。
不做一直索取的人,要做乐于帮助的人,没有谁天生啥都会,都是在自我学习的过程中学以致用,并将经验分享他人。
允许你有厉害的霸气,不懂的也请谦虚。论坛上的技术支持们还望大家珍惜。看看他们的贡献,再衡量下自己的付出。
Nice
18-11-30 11:14

引用 jint 在 2018/11/30 11:14:58 发言【内容省略】

谢谢,现在真的把上论坛当成了一种习惯,就像每天洗脸刷牙一样。
虽然自己是搞电气的,但碰到感兴趣的其它案列,我也会自己去车间了解或者向同行了解。
所晒的帖子也是自己经手的或者感兴趣的其他人告诉我的,或者是其它车间部门的,也都是想和大家一起交流学习。
18-11-30 14:50
这个论坛最大的好处就是,交流技术、交流遇到的问题,大家讨论,共同提高。
18-11-30 15:25
忙了一大圈,一个简单的变量类型定义就完成了表情
~~~somachine中浮点数地址也是%mdx,很别扭
18-11-30 15:53
为了防止错过下一个岔路口,迈步之前先找个向导问一问。
18-11-30 17:54
借此机会感谢一下那些帮助了我的大虾们,逛论坛变成一个习惯。有问题都会在这边向大家请教。也能得到大家热心的帮助,再次感谢大家,希望论坛运来运好。。。。。
最后修改:2018/11/30 19:01:29
18-11-30 19:01
有时候自己一个人摸索半天不懂,别人一指点,恍然大悟,原来其实就是这么简单,技术是一个积累的工程,如果有人指点的话,进步会很快,但是自己摸索,这个过程虽然痛苦但也快乐着!
18-11-30 22:42

引用 gaoyingchun 在 2018/11/30 15:53:41 发言【内容省略】

是的,有时候就一个习惯问题或者小问题卡住而已,但不知道方法就是不行。
18-12-01 12:00
 初学者来这论坛看来是对的。都是热心的高手。表情
18-12-02 09:36

工控新闻

更多新闻资讯