首页 上一页 1 2 下一页 尾页

求助:触摸屏显示条形码数据 点击:5181 | 回复:24



7086

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-06-23 10:58:00
楼主
请教各位前辈:我用三菱FX1S的PLC,F930的屏,将条形码阅读器读入的数据直接在屏上显示出来,请问PLC内程序该怎么写?谢谢!



凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-06-24 11:23:00
1楼
问题的关键不是屏,因为屏只是显示PLC对应数据区的值,您的方案的关键是如何将条形码读入器识别的数据转化为PLC的数据,请问您的条形码阅读器和PLC如何连接?因为没有使用过该阅读器,不晓得它输出的数据为何种格式?以及它如何把读到的数据给PLC?

阳光110

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 183回
  • 年度积分:0
  • 历史总积分:236
  • 注册:2004年3月27日
发表于:2005-06-24 17:41:00
2楼
pro-face GP可以直接读条形码的数据

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-06-25 20:45:00
3楼
谢谢两位的解答! TO:凡夫俗子!PLC侧用了一块FX1N-232-BD的模块,条形码阅读器是手持式的,和超市里用的一样的.请问程序该怎样做?盼回复!谢谢!

凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-07-04 15:39:00
4楼
明白了,我这样理解不知道对不?您的条形码阅读器和您的模块相连,这样就是通过RS232和PLC相连了,你需要做的操作如下: 1、编写您PLC的通讯程序,对您的阅读器的通讯COM口要编写读的通讯命令,可以定时读取也可以每个扫描周期都去读或通过某个外部开关来设定,具体看您的实际情况,具体通讯的程序的格式在FX2N或FX1N-232-BD模块的说明中有叙述,在通讯口的读取程序里就需要设定您读取到哪个数据地址里,根据您的实际PLC的数据区的应用情况您自己选个合适的数据地址DXXX。 2、编写触摸屏画面程序里的数据显示元件,使数据显示的元件的PLC地址值与您刚才通讯读取的那个DXXX对应即可。

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-05 22:36:00
5楼
谢谢凡夫俗子! 我的条码信息有17个数字组成的,那Dxxx里面能存下吗?

andystone1997

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 14回
  • 年度积分:0
  • 历史总积分:137
  • 注册:2004年5月08日
发表于:2005-07-06 08:59:00
6楼
haobo: 能问一下你用条形码数据来干什么?我对这个应用比较感兴趣,谢谢!

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-06 11:47:00
7楼
不同产品的分拣

凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-07-06 11:54:00
8楼
一个是肯定放不下啊,你在通讯程序里输入的应该是个首地址,通讯的程序应该有读取数据的长度,那么您的17位数据应该就存放在以Dxxx为首地址的Dxxx+1、Dxxx+2、Dxxx+3。。。。。。里,可能Dxxx存放的是数据的低位,然后您就需要在触摸屏里进行按数据的高低位来分段显示了。。。难点就是可能从条码读取过来存放的是2进值的信息按高低位存,而您在触摸屏显示的是10进值,需要用算法做转化。。。

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-06 12:02:00
9楼
就想把条码的所有数据直接在屏上显示出来难道实现不了吗?

凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-07-06 17:22:00
10楼
您的条形码数据为17位?十进制吧?那怎么直接显示啊?触摸屏里的数据显示对应PLC的数据区,一个长整型的数据多少位?你必须分段才能显示。。。

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-06 21:37:00
11楼
谢谢!条码数据如:6 9181630876664829十七位,就是想把这串数字在屏上显示出来. 那单个Dx里最大能存到几位数?

凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-07-07 17:08:00
12楼
单个D:32767~-32767,16位,高位为符号位 FX2N支持两个D组合操作:2147483647~-2147483647,32位,高位为符号位 您的17位数据需要4个D就可以保存了,现在难点就在于您通讯读取一般都是按2进制格式从低位到高位保存到数据区里的,这样您就需要把这4位D里的2进制进行转化为10进制后按低到高位分2段或5段后存到2个或5个D里,然后在触摸屏上从低到高依次显示这2个或5个D的数据,(为什么是5不是4呢,因为一个D最大32767,它只能存放任意的4位数,5位数就70%的可能溢出)。。。难题出来了,您读取到高位D里的2进制转化为十进制后需要个地址存放然后再和各个D里的转化的2进制进行加法,这最高位的D里2进制转化进制数值太大无法存放,2个D才2147483647。。。

凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-07-07 17:22:00
13楼
还有个方法,关键请问您的读取条码阅读器的数据17位是按2进制还是十进制从低到高位存储的,如果是2进制就没办法了,如果是按十进制分的低高位就好办了,方法如下,你用PLC按低到高的顺序分批读取17位数据,应该是分5次读取,分别放在5个D里,然后就很简单了,直接在触摸屏里分5段显示就好了

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-08 07:52:00
14楼
谢谢凡夫俗子的帮忙! 我现在有一段程序是读取条形码最后四位的数据,但我觉得这样的思路不好.我把我的思路说一下:先用[RS D200 K0 D500 K17];接收后[BMOV D500 D0 K17]然后读取条形码最后四位数据[HEX D513 D137 K1][HEX D514 D138 K1][HEX D515 D139 K1][HEX D516 D140 K1],再采用乘法[MUL D137 K1000 D141][MUL D138 K100 D142][MUL D139 K10 D143][MUL D140 K1 D144]再用ADD指令将D141+D142+D143+D144内的数值相加后存入一个Dxxx当中就可.我如想把条形码数据都读入的话,那数据太大了就无法存入一个Dxxx当中了.

凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-07-08 10:15:00
15楼
就是我说的那个问题,你绝对不可以把数据读过来后再进行数值转换,因为转换的数值您无法存放,没那么大的数据区,最好的办法就是在未读去前就将17位数转化为十进制按低到高位的数据段,然后分段读到PLC里,再按段显示在触摸屏上

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-08 12:29:00
16楼
能举例说明吗?谢谢!

凡夫俗子

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 540回
  • 年度积分:0
  • 历史总积分:642
  • 注册:2003年11月27日
发表于:2005-07-08 13:56:00
17楼
这样举例吧,譬如32769,这是5位数,您不考虑2个D一起使用的情况,我们就当PLC里最多只能操作一个D:(32767~-32767),现在的数值32769,如果通讯前是2进制的话,他们通讯后会存在2个D数据区了,大小依次为“1”,“1”。。。D1=1,D2=1,转化十进制后为1*32768+1=32769,前提因为只能进行一个D的操作所以您的转化都的十进制数32769大于32767无法保存。。。如果这时您PLC直接去读取这个2进制低到高位的32769后,显示出来的就是D1=1。。。D2=1。。。 如果这样呢,读取前就已经把这32769按十进制的低4位高4位进行保存的话,那么读取可以按4位读一次,D1=3,D2=2769,这样就可以不做任何的数值转换,在触摸屏里直接显示。。。 当然也可以干脆就读17次,一次读一位十进制,前提是从个位,百位,千位依次读到第17位,分别放在了17个D里,这样就不用做任何转换,在触摸屏上直接放置17个数据显示控件,依次显示这17个D就好了。。。

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-08 16:50:00
18楼
非常感谢你的解答!

7086

  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 49回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2003年5月19日
发表于:2005-07-08 17:11:00
19楼
to 凡夫俗子:你好! 我发了一段程序到你的邮箱里,你帮我修改一下,能达到在屏上显示17位的数据的程序好吗?谢谢!

KINGJING

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:17
  • 注册:2006年8月09日
发表于:2008-03-05 15:51:00
20楼
你能把程序传给我一份么?我的油箱为zxs197916@163.com

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页