来自西门子技术支持热线的故事:CP243-1间“交流”的小秘密

已锁定

西门子Auto

官方工程师

  • 帖子

    126
  • 精华

    16
  • 被关注

    235

论坛等级:侠圣

注册时间:2007-08-03

普通 普通 如何晋级?

来自西门子技术支持热线的故事:CP243-1间“交流”的小秘密

5635

18

2012-03-20 17:52:31

作为一名西门子热线工程师,“打电话”是与用户沟通不可或缺的一种方式。我们能想象客户在拨打热线号码前经过的努力,也能体会客户希望通过热线寻求帮助的迫切心情;现分享一个关于两个 CP243-1 之间数据“交流”的例子:CP243-1作为客户端,建立一个连接并配置两个或以上的数据传输会有什么区别?
测试1:CP243-1作为客户端,通过以太网向导建一个连接并配置两个数据传输,收、发共计调用两个ETHx_XFR子程序,运用done完成位循环触发ETHx_XFR子程序,部分程序如下:






通过状态表监控done和error当前值,两个子程序的done位始终在0/1之间切换,error为0,俩CP243-1“交流”正常。
测试2:CP243-1作为客户端,通过向导建一个连接并配置三个数据传输,收、发共计调用三个ETHx_XFR子程序,做法与测试一相同,运用done完成位循环触发ETHx_XFR子程序,执行流程图如下:



图中DATA1 / 2 / 3为数据传输任务,在同一个连接中必须按顺序依次循环发送。



(注:DATA3的数据传输任务ETHx_XFR子程序对于的done为M0.6,error为MB12)
通过状态表监控各数据传输的done和error当前值,其中两个ETHx_XFR子程序的done位都为1,其对应error为130错误(通道繁忙或无“起始”脉冲),俩CP243-1“交流”失败,这究竟是什么原因造成的呢?
如果更改测试二的程序,对于第1个ETHx_XFR子程序用手动触发,先将EN置1,其done立即为1,然后给start一个上升沿,发现done变为0,执行完毕后置1;紧接着对第2个ETHx_XFR子程序用手动触发,先给EN置1,其done立即为1,同时发现其error为130。
由此可见,测试一中2个ETHx_XFR子程序中的EN和start引脚是互相运用了done位的0/1切换而未发生通讯报错;而测试二中任何时刻都有2个EN引脚为1,这就是130错误的缘故。
测试二的解决办法:当前的ETHx_XFR子程序执行完毕,用其done复位其EN和start引脚触发点(即上一个ETHx_XFR子程序的done);例如在第二个子程序后添加网络,如下图所示,用第二个子程序的done复位第一个子程序的EN和start引脚触发点。



所谓:欲速则不达,CP243-1之间的“交流”只有顺序执行,数据才能有条不紊。同一个连接中的多个数据传输任务必须做顺序触发控制。
故事外传: CP243-1提供8个连接资源,在客户机和服务器的通讯资源充裕时,可建立多连接,每个连接中仅建立一个数据传输任务。此时可以同时调用ETHx_XFR子程序,该方法虽然提高通讯数据的更新速率,但占用了多个连接资源。
来自西门子技术支持热线的故事:CP243-1间“交流”的小秘密 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33288条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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