回复:求教:CP341做MODBUS通讯(MASTER)是否只能调用一次FB8?

老石

  • 帖子

    47
  • 精华

    3
  • 被关注

    0

论坛等级:游民

注册时间:2008-08-04

普通 普通 如何晋级?

发布于 2008-09-09 18:42:48

0楼

谢朋友关注回帖!
今天突然想起一件事,当时在本网站下载CP341资料,打包的例程有一个轮询的程序(ptp_485_polling),当时看了,心想以后用时再翻翻。但是做FC16不够顺利把这件事情忘得干干净净。
下午有点时间在这个程序基础上做了实验。
这个程序非常有用。ASCII协议,只有一个FB8和一个FB7,利用计时器安排时序,对FB8的源数据块DB1某WORD不断设置数据后,触发REQ端发码。DB1其实没有什么数据,仅设置了20个WORD的空数组。
我运行了一下,运行后不停发数据,TXD灯有规律闪烁。可以用SSCOM32收到代码。

DB1有20个字的数组,DB1长度=42 BYTE。
例程却设置LEN=10,用SSCOM32观察,也确实发10个数。
修改为LEN=15,用SSCOM32观察,收15个数,
修改为LEN=40,用SSCOM32观察,收40个数
修改为LEN=46,不发数,TXD灯不闪烁。没有错误提示。
修改为LEN=5,用SSCOM32观察,发5个数,
修改为LEN=2,用SSCOM32观察,发2个数,

这使我认识到Z在ASCII协议调用FB8,LEN的设置比较自由。说明LEN 可以比DB1小,不能大。感觉ASCII协议发码速度挺快。

在这个基础上使用MODBUS协议通讯。设计对两个从站1。2分别进行FC03,FC06操作。运行效果,对DB1相关内容的修改在变量表观察都在变化,SSCOM32却只收到对2号从站操作信号:
02 03 00 00 00 06 C5 FB
02 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F DC 7D
02 03 00 00 00 06 C5 FB
02 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F DC 7D
02 03 00 00 00 06 C5 FB
。。。。。。。

把记时器延时从1秒直接修改为3秒。理想的代码看到了(也许不必这么大跨度):
01 03 00 00 00 06 C5 C8
02 03 00 00 00 06 C5 FB
01 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F 98 39
02 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F DC 7D
01 03 00 00 00 06 C5 C8
02 03 00 00 00 06 C5 FB
01 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F 98 39
02 10 00 00 00 06 0C 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F DC 7D

使用SLAVE仿真软件,可以看到数字被写入。但是我在DB2没有看到读到的返回代码。这可以再查问题,关键是CP341正确发码了。验证了只用一个FB8,通过修改源数据块内容,可以根据时序控制实行多种任务
按照万版所讲,合理安排好时序,。我想多安排些站也没有问题。但是我感到CP341打包的时间似乎太长了。
在OB1安排两个或者多个FB8原理上应该可以,有空我还想实验。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54647条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。