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

怎样编程将ASCII码的数据传送给组态王? 点击:7099 | 回复:32



wyb2866255

    
  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-10-21 09:39:17
楼主
最近接了个项目,除了正常探伤测长外,又增加称重,电子秤由用户提供,该电子秤与组态王无通讯协议,只得选用CP340将称重数据传送给PLC,该数据为ASCII码,而S7-300无此指令(我没有找到),只得自己编写,在编程过程中,得到一点经验,觉得值得讨论,为了加强对此印象,提出望大家参与,如何编程才能使PLC将正确数据传送给组态王。



lishan0451

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 15回
  • 年度积分:0
  • 历史总积分:83
  • 注册:2010年5月08日
发表于:2010-10-22 15:21:40
1楼

不会~~~~~~~~~

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-10-23 00:06:04
2楼
1楼网友:不会~~ 没关系,清耐心等待,这个编程不难,我相信会有人编出来的。在这里我谈谈自己的一点想法:我在“对PLC编程的体会”一文中说过,提高编程素质,不仅仅要深入理解每条指令内涵及用法,多编多练,不断积累,不断总结经验。还要扩大知识面,使你扩大视野,增强思维和分析问题的能力。”最后的一句话尤为重要,本帖就是一个例子,要想将ASCII码转换为十进制数或十六进制数,不懂得它们之间关系是无法编程的,而有关这方面知识的介绍。你得到有关电子学方面的书去找,可以讲懂得它们之间的数学关系,要编写这段程序,还要涉及“与、或、左右移....”等数学逻辑运算,如你有深厚的数字电路基础,解决这个问题就会显得很容易。我还发表一文“提供流程图谁能编出正确梯形图”,都是用来提高、锻炼编程者编程思维和分析处理问题的能力的。我所以不事先公布结果,就是希望大家参与,一旦有人编出,对编程者来讲会体会到刺激与乐趣,对大家来讲会加深印象,找出编不出来的原因。此文如10天后仍无人编出梯形图,我定贴出我编的梯形图与解析。谢谢!

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-10-27 09:03:32
3楼

怎么还没有人回答?再顶一下!

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-11-02 10:09:59
4楼

又过去6天,还没有人回帖,很遗憾!今天把此贴发出,暂不做解析,望网友们分析,我把“用S7-300编程将四位BCD码转换为ASCII码的梯形图”一文顶上来,看它的解析对此程序的理解会有帮助的

suxing525

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 40回
  • 年度积分:0
  • 历史总积分:173
  • 注册:2008年7月21日
发表于:2010-11-10 16:55:24
5楼

这么好的帖子,没有人回复,真是悲哀。

很感谢楼主的这种启发方式发帖。顶

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-11-10 23:54:24
6楼
引用wyb2866255 的回复内容:

怎么还没有人回答?再顶一下!




被动传输,还是主动传送,组态王上位机也有编写相应的读写程序啊

PLC端 要是主动发送(只要要求上位机收到制定的字节数据)那就简单啦,那就是半工通讯;


miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-11-10 23:57:08
7楼
我以为: 再有通讯程序的核心是调试,不是看程序和写程序;   要分享通讯程序,说清楚通讯协议,方式,原里就可以啦;

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-11-11 00:59:24
8楼
6楼网友:感谢你的回复!以往组态王与PLC的连接,是在组态王的设备栏、COM口找到对应的PLC建立通讯联系,再在数据字典里建立与PLC互相传送数据的I/O变量,运行时组态王就会与PLC自动的传送数据。在组态王或PLC的编程时都不用考虑传送数据的问题,我是认为组态王没有ASCII码的变量形式,在PLC编程时,将ASCII变为组态王认识的整数形式,放在对应的数据区就可以了,程序就是多了上面的几条转换语句,如果按你说的方法,在组态王与PLC两边搞通讯,其编程量不比我的方法简单吧?关于“组态王上位机也有编写相应的读写程序”我还真不清楚,望你指教。比如将“30、31、32、32、34、35”这5个ASCII怎样用通讯的方法编程由PLC传给组态王?谢谢

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2010-11-11 08:45:25
9楼

CP340当然支持ASCII通讯,具体指令在Library-->CP  PTP-->CP340中,FB2 P_RCV/FB3 P_SEND

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2010-11-11 08:49:22
10楼

当然,你需要安装PTP驱动软件包,如果你购买了CP430,软件会随模块附送

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-11-11 09:40:08
11楼

9楼:我在原帖中讲过“...只得选用CP340将称重数据传送给PLC,该数据为ASCII码,”这已经是做完的事情,问题是传到PLC的ASCII码,如何再传送给组态王,让组态王显示称重数据,如果组态王有将传送来的ASCII码的变量自动转换为BCD码形式,就没有这个问题了,难道你的意思是CP340直接与组态王通信?我不明白你回帖的目的是想说明什么?请赐教

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-11-11 20:00:14
12楼
引用wyb2866255 的回复内容:

9楼:我在原帖中讲过“...只得选用CP340将称重数据传送给PLC,该数据为ASCII码,”这已经是做完的事情,问题是传到PLC的ASCII码,如何再传送给组态王,让组态王显示称重数据,如果组态王有将传送来的ASCII码的变量自动转换为BCD码形式,就没有这个问题了,难道你的意思是CP340直接与组态王通信?我不明白你回帖的目的是想说明什么?请赐教



说了半天,你组态王要求显示 BCD码数值啊; 那你可以在PLC 程序中吧ASCII 码 转换成BCD 码,然后传送在指定的连续字节中,注意字节序问题,既作为一个字 高低字节序问题,组态王和PLC 也有他的协议;再在组态王中设置好读取地址不就行啦!

 

我猜测,是组态王发读取命令PLC 接收, PLC接收到相应的读/写命令( 协议中定义好的 ) 后,PLC 在把相应的地址的数据发送到端口,也就是组态王接收;所以这就是被动半双工通讯啊; PLC 端要根据协议 编写好 通讯和 转换程序(准备数据),才能和组态王正确通讯啊!

  通讯的基本原理都差不多的; 楼主好好看看协议吧!

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-11-11 20:26:34
13楼
12楼:你到底会不会组态王,我原以为你有什么高见,通过几次回帖,所问非所答,不觉得可笑吗?劝你不要不懂装懂,乱给别人解答问题。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-11-12 17:30:41
14楼

我是不太懂 组态王,但我说的思路没错,我严重怀疑你动不动通讯????

 

我倒想和你理论理论,  我怎么乱回答问题啦????

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-11-12 19:19:35
15楼
14楼:“我严重怀疑你动不动通讯????”这句话是什么意思?搞PLC或搞计算计的能离开通讯吗,PLC与编程器之间是通讯,PLC与组态王之间也是通讯,问题是这种通讯已是定型的,拿来用就可以了,你说的“我猜测,是组态王发读取命令PLC 接收, PLC接收到相应的读/写命令( 协议中定义好的 ) 后,PLC 在把相应的地址的数据发送到端口,也就是组态王接收;所以这就是被动半双工通讯啊; PLC 端要根据协议 编写好 通讯和 转换程序(准备数据),才能和组态王正确通讯啊!
通讯的基本原理都差不多的; 楼主好好看看协议吧! ”的这些话不觉得多余吗?你再看看我写的原帖,是求助你帮助搞通讯吗?原帖写的很明白,组态王与电子秤没有通讯协议,才用CP340与电子秤进行串行通讯,将电子秤的数据传送给PLC,传过来的数据是ASCII 码,如此ASCII不加变换的传给组态王,组态王将误认为整数,而显示错误的数据。这些编程工作我已搞完了,我出帖的目的是S7-300没有ASCII码转换为BCD的指令,怎样通过自己编程来实现它。你回答了这个问题吗?上面我说的话有些生硬,这里向你表示歉意。

newchp

  • 精华:3帖
  • 求助:0帖
  • 帖子:113帖 | 3966回
  • 年度积分:0
  • 历史总积分:9364
  • 注册:2006年7月15日
发表于:2010-11-12 21:26:56
16楼

我觉得楼主在PLC里自已做转换有点费力。实在要做的话放在上位机,也就是组态王里面去做,毕竟用脚本语言做起来方便。

可以通过组态王把下位机的ASCII码采集到组态王上去。

wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-11-12 23:06:03
17楼
16楼:你说的很对,原来是想在组态王去做,可是查了命令语言函数,没有找到将ASCII吗转换为BC码的命令语句,又考虑如在组态王里编程转换,从运行速度上要比在PLC慢,所以就在PLC编程进行转换。向你请教,如有6位ASCII码,放在对应的数据区里,组态王应选用那种数据形式把它取过来,用什么脚本语言,怎样编写,请详告知,这里先谢谢了!

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-11-13 12:27:25
18楼

引用wyb2866255 的回复内容:16楼:你说的很对,原来是想在组态王去做,可是查了命令语言函数,没有找到将ASCII吗转换为BC码的命令语句,又考虑如在组态王里编程转换,从运行速度上要比在PLC慢,所以就在PLC编程进行转换。向你请教,如有6位ASCII码,放在对应的数据区里,组态王应选用那种数据形式把它取过来,用什么脚本语言,怎样编写,请详告知,这里先谢谢了!


说的没错,组态王中转换,等于是你效率低了,本来在PLC 中转换后,可能一个字就可以了,但直接把ASCII码传给组态王,这样通讯要多读取若干个字节;

但在实践应用中,可能差不不是那么明显;

我出帖的目的是S7-300没有ASCII码转换为BCD的指令,怎样通过自己编程来实现它。你回答了这个问题吗?

     //     你上面没提到BCD码,你发的主题似乎重点是“如何编程才能使PLC将正确数据传送给组态王。 ”

你可以先用ASCII 码转换整数指令转换 ,再用 整数转换BCD 码指令转换不就行了;


wyb2866255

  • 精华:57帖
  • 求助:0帖
  • 帖子:148帖 | 2872回
  • 年度积分:1
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2010-11-13 13:45:27
19楼
18楼:你说“你可以先用ASCII 码转换整数指令转换 ,再用 整数转换BCD 码指令转换不就行了;”,你又说错了,请问你如何将ASCII吗转换成整数,整数又如何变成BCD码? 你编编看。我在4楼编写的程序,正好于你说的相反,你琢磨琢磨我编的程序吧,我们的讨论也到此为止吧。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2010-11-13 13:58:41
20楼

你错的,等我说完,你不就是仪表支持ASCII码通行,读到PLC 中的数据是ASCII码,但内容是BCD码格式, 你现在想把

BCD码转换成 BIN 码(十进制),传到组态王中显示,对吧! 直接把BCD码传到组态王中显示会乱码,因为组态王默认只显示BIN码;


热门招聘
相关主题

官方公众号

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