216CPU自由口通讯

我是一套216CPU的系统,现在需要做一个自由口通讯,用的是串口测试软件读的数据,我第一次做自由口,按照帮助例程做的,可是就是读不到数据。小弟就费解了,而且我只用发送不需要接收。清各位高人帮忙。

问题补充:
发送数据已经解决了,用的SMB34每隔50ms发送一次。但是我也用了PID程序,SMB34对PID有什么影响吗?会有什么结果,然后我想一分钟发送一次数据该如何完成?

最佳答案

:自由口和modbus通信   

modbus通信中最大的缺点是通信的时间太长,主要是在对数据的校验上,crc校验码的计数时间是最浪费plc时间的。所以在数据量较大时从站的响应时间就会很慢。这是modbus协议自身的问题很难通过程序解决。在对数据质量要求不高的情况下也可通过自己编写程序减少crc校验时间或不做crc校验。

实现从站:

由于从站是对主站的响应,发送的数据往往是不一致的,因此crc校验的值也是不相同的,因此实现从站功能最好还是使用西门子库中的从站功能程序,可在以下网址下载西门子库的软件包:http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=S0010

要减少crc校验时间可以将主站的请求数据不做crc校验而直接采用,当然对标准的主站响应还是要计数crc校验码的,因此有时时间也不会剪短多少,尤其是主站只读数据时,而在主站写数据时,数据量又很多时时间就会剪短很多。这种做法牺牲了通信的质量。

实现主站:

        主站的功能是访问从站,有读写两种功能,有时我们只需向从站读数据,要实现这种功能就无需使用库的程序,可以最小的减少plc的资源和时间。方法是首先配置端口的物理参数:波特率、数据位、停止位、奇偶校验等,这在下面的附件中自由口初始化子程序中实现。

然后是发送请求数据,在数据块中已经将发送的数据定义好并计算出crc校验码,只要使用xtm指令将定义好的数据发送出去就好了。数据发送完执行中断使能接受功能。将接受的数据转移到想要的地址。再次执行发送指令就可不断读取固定参数的数据而且不会占用太多资源。这也是牺牲了通信的质量换来的。

        要实现读写两种功能,就要crc校验程序,因为每次的值不同,校验码也就不相同对于标准的从站来说这是不可缺少的。然后将每次计数的crc校验附在数据后就可以实现了,这里区别就是发送的请求是固定的还是变化的。

        附件是一个简单modbus通信的例子,同样有自由口配置的部分,希望对大家在使用自由口和modbus时有用

提问者对于答案的评价:
谢谢 很全面

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc313689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午3:27
下一篇 2020年11月1日 下午3:28

相关推荐

  • S7-200PID算法

    我现在做一个project,由于客户要求将目标值与当前值之间的偏差e和偏差变化率ec经过一个非线性增益之后再送往pid运算。不过s7-200自带的pid指令没有直接输入偏差这个参数…

    SIMATIC S7-200 2021年7月5日
  • S7-200以太网通讯问题

    1) S7-200可不可以把与其他几种西门子PLC以太网通讯的程序都写进去,通过开关量等方式触发激活某一段程序来对应于某一款PLC进行以太网通讯?可以的话操作方面需要注意…

    SIMATIC S7-200 2017年6月10日
  • S7 200子程序

    请问S7 200的子程序,怎么做到库里,然后在调用?? 图片说明:    最佳答案 1、一个已存在的程序项目只有子程序、中断程序可以被创建为指令库。中…

    2020年10月31日
  • S7-200 V存储区程序使用的奇怪现象

    S7-200,使用VD来保存一个经过程序处理后的模拟量结果,为浮点数值,在程序中做个上下限报警处理,超过多少或低于多少会触发位接通,位的表示法如V1000.0/V1000.1,但是…

    SIMATIC S7-200 2017年8月15日
  • 200PLC子程序问题

    想在200PLC里面写一个通用的子程序,发现在子程序内部定义局部变量的时候,in和out以及in_out类型的数据个数加起来不能超过16个,想请教一下是不是确实有这样的限制。 专家…

    SIMATIC S7-200 2020年11月1日
  • 高手请进:用200 SMART的输入点来检测接近开关的状态,如何统计所检测到数量?

    实现一个功能:PLC的输入点接了10个以上的接近开关,每个接近开关对应一个输入点。当中某个接近开关检测到物体后,对应的输入点就接收到信号,数量加一。那么有什么办法把每个输入点检测到…

    SIMATIC S7-200 2021年7月5日
  • 关于循环输出的问题S7-200

    我想要实现一个循环输出,在自动控制状态下,每个输出的间隔时间为1分钟,依次循环输出Q0.0,q0.1 q0.2 q0.3 q0.4 q0.5…

    SIMATIC S7-200 2021年7月5日
  • s7-200 步进 方向 问题

    当程序写完后发现,比如 Q0.5 控制步进方向。 程序是 当Q0.5 不接通的情况下是正转,当Q0.5 接通的情况下是反…

    2021年7月5日
  • 求TRANSLINE 2000 HMI PRO CS_RT软件

    各位老铁,谁有TRANSLINE 2000 HMI PRO CS_RT软件?求分享一下,谢谢。420753754@qq.com 最佳答案 链…

    SIMATIC S7-200 2021年7月5日
  • 西门子PLC S7-200下载中出错的一个问题

    我用S7-200系列,CPU226的 。 编写程序后编译没有错误,下载100%后却弹出显示 “编译错误……请查看非致命性错误……” &nbs…

    SIMATIC S7-200 2021年7月5日