技术论坛

说说西门子200smart modbus自由口通讯的那些事1

作者 主题
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
主题:【分享】说说西门子200smart modbus自由口通讯的那些事1
精华帖精华帖星级3级 推荐帖 推荐帖


只看楼主 只看精华 楼主 2016-11-27 21:56:38

                                说说西门子200smart modbus自由口通讯的那些事1

 上文说了说通讯前的一些基本参数定义,在做通讯程序时必须清楚,为接下来的实施编写通讯程序打好了基础。

  西门子200 smart modbus自由口通讯个人认为如同2个人打乒乓球的游戏,不、应该是比赛更合适,因为打乒乓球之前必须有一个严格的比赛规则,双方都将遵循这个规则(通讯协议)。所以,通讯基本参数就如先发布比赛规则,然后双方才能在此规则下允许一场友谊比赛。

  先说说发球方,即通讯程序中的发送指令(XMT)。该指令仅仅只需2个管脚要用户填写。TBL为发送数据的储存地址区,数据类型(byte),其中,第一个仅仅是发送数据的个数储存地址区,该地址不参与发送数据;PROT为指定通讯端口,集成本机口填写为“0”口,控制的信号板填写“1”口。

程序例子:假设发送字符【Siemens】为例,prot0口



   字符simenes共有7个字符,分别在以VB1开始的连续7个字符中写入(必须是连续的地址区编写)。写入的方法可以由数据块中直接写入,也可以用MOV_B指令来完成(如果数据量比较大,这个方式估计会让你抓狂,当然适合变化、调整的数据编写)。

数据块编辑方式:



数据块也允许直接写入一串字符的方法进行,图示:



下载到cpu后,监控数据数值,图示:



这样,cpu会按每一秒的节拍方式,由prot0口把字符串“Siemens”无限次发送出去。如果需要多个数据串连续发送,如何来界定这其中的一串数据发送完成?西门子200 smart通讯程序可以用中断或者标志位来界定,其中,发送完成中断在prot0口的中断事件号为事件9、prot1口中断事件号为26;也可以通过标志位prot0口为SM4.5、prot1口为SM4.6来确定。

图示为用发送完成标志位SM4.5检测:



如果需要调用中断来界定通讯发送完成或者接收完成中断,则需要事先设置通讯中断事件了。

调用通讯发送完成中断程序:

1)新建一个初始化通讯子程序:



2)主程序调用:



3)中断子程序中实现VD10的累加,图示:



注意!通讯字符发送只允许编写英文字符或者拼音字母,不允许用汉字来编写。

如何来确定例子程序的发送字符是正常的呢?一般我们用串口调试软件来实现(当然也可以2台plc之间通讯测试)。该软件网上一大堆,随便搜索一下,下载一个安装就可以的,当然,也有免安装的那种。我这里用的是这种串口调试软件,图示:


 


打开这个串口调试软件的界面,图示:



与PLC连接好通讯电缆,就可以监控PLC从prot0口所发送的字符数据内容了。球是发出去了,是否能够让“对方”正常接收是一个未知数,因为能够正确接球,需要考虑硬件的正确连接,软件协议的一致性,干扰原因等因数(这关系到接球方的球艺)。连续、、、、、、



 
推荐帖推荐理由: 由浅入深,值得推荐 (推荐人:你以为你是谁)
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1342691&b_id=64&s_id=0&num=41

至圣

经验值: 17965
发帖数: 2974
精华帖: 7
回复:说说西门子200smart modbus自由口通讯的那些事1
推荐帖


只看楼主 只看精华 1楼 2016-11-28 07:12:01

写的很好,很形像。


 
以下网友喜欢您的帖子:

  
游民

经验值: 140
发帖数: 12
精华帖: 0
回复:说说西门子200smart modbus自由口通讯的那些事1
推荐帖


只看楼主 只看精华 2楼 2016-11-28 08:31:51
学习了,感谢分享!
 
以下网友喜欢您的帖子:

  
至圣

经验值: 63470
发帖数: 12672
精华帖: 121
回复:说说西门子200smart modbus自由口通讯的那些事1
推荐帖


只看楼主 只看精华 3楼 2016-11-28 09:22:59

学习了图文并茂。


 
以下网友喜欢您的帖子:

  
侠客

经验值: 766
发帖数: 106
精华帖: 0
回复:说说西门子200smart modbus自由口通讯的那些事1
推荐帖


只看楼主 只看精华 4楼 2016-11-28 10:01:00

 学习了图文


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2608
发帖数: 407
精华帖: 5
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 5楼 2016-11-28 21:10:00

谢谢!不同的厂家中断的定义略有不同,西门子的PLC当多个中断同时来时,按优先级依次全部处理,是这样的吧?有的厂家是多个来时只处理最高的,低的不处理,处理完高退出中断!


 
以下网友喜欢您的帖子:

  
侠客

经验值: 968
发帖数: 53
精华帖: 0
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 6楼 2016-11-29 08:07:49

 颇为受益


 
以下网友喜欢您的帖子:

  
至圣

经验值: 14840
发帖数: 666
精华帖: 0
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 7楼 2016-11-29 08:15:43

 

谢谢楼主分享!


相信自己可以适应一切
以下网友喜欢您的帖子:

  
至圣

经验值: 69050
发帖数: 12265
精华帖: 59
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 8楼 2016-11-29 13:44:19


写的很详细,收藏

感谢楼主分享


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
游侠

经验值: 329
发帖数: 35
精华帖: 0
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 9楼 2016-11-29 18:16:35


牛牛牛 牛牛


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3018
发帖数: 348
精华帖: 2
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 10楼 2016-11-30 11:14:54

感谢分享!这个时代最宝贵的品质就是分享精神


做喜欢做的事
以下网友喜欢您的帖子:

  
游士

经验值: 178
发帖数: 22
精华帖: 0
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 11楼 2016-11-30 11:22:01

楼主,自由口与多台仪表通讯,多次发送(xmt)多次接收(rec)的,有啥好办法吗


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 楼主 12楼 2016-11-30 11:32:09
以下是引用说出你的故事在2016-11-30 11:22:01的发言 >11楼

楼主,自由口与多台仪表通讯,多次发送(xmt)多次接收(rec)的,有啥好办法吗

目前常用的方法是轮询。


 
以下网友喜欢您的帖子:

  
游侠

经验值: 418
发帖数: 44
精华帖: 0
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 13楼 2016-12-01 09:12:56


顶一下才!!


你的梦想是否只是说说?
以下网友喜欢您的帖子:

  
至圣

经验值: 17965
发帖数: 2974
精华帖: 7
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 14楼 2016-12-01 09:41:26

非常佩服使用自由口通讯的大侠。以前看别人用自由口通讯编程,看到云里雾里的。也一直想自己动手玩玩,却一直没机会。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7770
发帖数: 1150
精华帖: 1
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 15楼 2017-01-11 13:51:36

 W 大侠,看了你写的文章,有个问题想请教一下,谢谢;

    下面图片中的圈出来的地方,按照这个程序分析,"siemens"这几个字符,每发送一个字符,VD0就要加一 一次吗?那这100,是发送这几个字符所计数,还是其他呢?

 


,,
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:说说西门子200smart modbus自由口通讯的那些事1
推荐帖


只看楼主 只看精华 楼主 16楼 2017-01-11 14:27:46
以下是引用2016JR在2017-01-11 13:51:36的发言 >15楼

 W 大侠,看了你写的文章,有个问题想请教一下,谢谢;

    下面图片中的圈出来的地方,按照这个程序分析,"siemens"这几个字符,每发送一个字符,VD0就要加一 一次吗?那这100,是发送这几个字符所计数,还是其他呢?

 

你好!

在VD10里面存放的是发送指令执行的次数,与字符的多少无关。

我这里用发送完成标志位SM4.5进行。当然也可以在发送完成中断中进行累加。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7770
发帖数: 1150
精华帖: 1
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 17楼 2017-01-11 15:30:55
以下是引用WWCWWC在2017-01-11 14:27:46的发言 >16楼

你好!

在VD10里面存放的是发送指令执行的次数,与字符的多少无关。

我这里用发送完成标志位SM4.5进行。当然也可以在发送完成中断中进行累加。

以下是引用2016JR在2017-01-11 13:51:36的发言 >15楼: W 大侠,看了你写...

引用15楼详细内容:

 W 大侠,看了你写的文章,有个问题想请教一下,谢谢;

    下面图片中的圈出来的地方,按照这个程序分析,"siemens"这几个字符,每发送一个字符,VD0就要加一 一次吗?那这100,是发送这几个字符所计数,还是其他呢?

 

  明白了,你的意思是发送指令将这几个字符发送出去后,还继续发送过多次,累计100次哦,非常感谢,


,,
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 楼主 18楼 2017-01-11 15:54:30
以下是引用2016JR在2017-01-11 15:30:55的发言 >17楼

  明白了,你的意思是发送指令将这几个字符发送出去后,还继续发送过多次,累计100次哦,非常感谢,

以下是引用WWCWWC在2017-01-11 14:27:46的发言 >16楼:你好!在VD10里面...

引用16楼详细内容:

你好!

在VD10里面存放的是发送指令执行的次数,与字符的多少无关。

我这里用发送完成标志位SM4.5进行。当然也可以在发送完成中断中进行累加。

以下是引用2016JR在2017-01-11 13:51:36的发言 >15楼: W 大侠,看了你...

引用15楼详细内容:

 W 大侠,看了你写的文章,有个问题想请教一下,谢谢;

    下面图片中的圈出来的地方,按照这个程序分析,"siemens"这几个字符,每发送一个字符,VD0就要加一 一次吗?那这100,是发送这几个字符所计数,还是其他呢?

 

是的。

VD10仅仅存放的是发送数据的次数。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1601
发帖数: 92
精华帖: 1
回复:说说西门子200smart modbus自由口通讯的那些事1


只看楼主 只看精华 19楼 2017-01-13 08:36:30


写的很详细


www.shdongli.cn,专注于旋转编码器研发、生产
以下网友喜欢您的帖子:

  
收起
说说西门子200smart modbus自由口通讯的那些事1
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。