技术论坛

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

返回主题列表
作者 主题
WWCWWC
至圣

经验值:71501
发帖数:7980
精华帖:145
楼主    2016-11-27 21:56:38
主题:说说西门子200smart modbus自由口通讯的那些事1 精华帖 

                                说说西门子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口所发送的字符数据内容了。球是发出去了,是否能够让“对方”正常接收是一个未知数,因为能够正确接球,需要考虑硬件的正确连接,软件协议的一致性,干扰原因等因数(这关系到接球方的球艺)。连续、、、、、、


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