回复:应用探讨—S7-200 自由口通信

月雨风云

  • 帖子

    2270
  • 精华

    10
  • 被关注

    427

论坛等级:至圣

注册时间:2010-03-28

普通 普通 如何晋级?

发布于 2010-12-29 22:23:24

99楼

西门子S7-200 PLC 自由口通信学习摘要
本文以s7-200 PLC与智能电表通信为范例(电表波特率为1200bps,偶校验,8位数据位)
一、PLC自由口协议初始化
1、根据智能设备通信时使用的波特率、校验方式、起始位等参数配置PLC自由口,
即将上述参数用MOVB指令写入SMB30,SMB30格式如下图所示:
初始化子程序如下:
二、声明中断
发送数据和接收完数据都能链接到中断程序,发送完中断与接收完中断的中断号分别为9
和23,中断可在初始化子程序中声明
三、编写自由口要发送的报文子程序
严格按智能设备报文格式,将相应命令,将指令长度(字节)MOV到任意的字节单元,例如vb10。
再用MOV_B或MOV_W 等指令传送到vb11 开始后连续的字节中。
报文子程序
上图为读取电表标识编码为9010(即正向有功总电能)的指令
四、用XMT指令发送报文
XMT指令需指定两个参数,第一个为要发送的报文的起始地址(本例为VB10),第二个为使
用的通信口(本例为0口)。可以用定时器控制某一CPU内部触点来控制报文发送的周期。要
注意的是,XMT指令必须用上升沿“ —P— ” 触发,否则CPU将会报错,CPU将认为有多个
XMT/RCV指令同时执行,这是不允许的!
发送报文子程序
五、利用发送完中断启动接收数据指令
当报文用XMT发送完毕,会产生9号中断。我们可以利用中断子程序捕捉相应的中断,并在中
断程序中编写相应事件!在步骤1中已经声明了9号中断连接到中断子程序“发送完中断”。因为
此我们在“发送完中断”中断子程序中使用RCV指令即可接收到由通信口返回的数据。即将数据
送到VB100.
“发送完中断”中断子程序
总结一下编程原则:
这里我们总结以下自由口编程的一般原则:
1. SM0.1 触发端口初始化,连接发送完成和接收完成中断(中断事件9 和23)
2. SM0.0 触发RCV 指令
3. XMT 指令用上升沿触发,并在指令运行前先保证端口 0 的停止接收
4. 根据将要接收信息的不同,合理设置SMB87~SMB94
5. 必须满足发送结束条件(如字节个数,结束字符等)才能产生9号中断


抱歉,样例程序不能上传
学无止境
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33298条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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