关于modbus多主站轮询的问题。WWW.PLCJS.COM——可编程控制器技术门户
plcjs.技.术_网
其实这并不仅仅是modbus的问题,485通讯的好处是可以挂多个从站,但是问题随之而来,主站与各个从站通讯就成了问题,因为485通讯是半双工的,也就是发的时候不能收,收的时候不能发,换句话说大伙要有秩序要排好队。查阅西门子网上课堂里面关于串口通讯的教程,最后提到了485多站轮询的问题,给了两种解决方案:WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
WW.W_PLC※JS_C,OM-PL,C-技.术_网
1、定时发送;plcjs.技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
2、以发送和接收完成标志来继续下次发送;WWW.PLCJS.COM——可编程控制器技术门户
WWW_PL※CJS_COM-PLC-技.术_网
个人觉得第二种方法效率比较高,当然如果在规定时间内容没有接收到正确数据,则应该继续下次发送而不是“苦等”下去。也就是应当有个time-out的设置。另外一般常见的retry我倒是觉得未必需要,如果这次收不到正确报文又何必再发呢?等下次轮询再发嘛,否则拖延整个轮询周期倒显得不好,只要把time-out设置的合适即可,也就是说每次轮询给从站一次机会足矣。P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
在西门子论坛里面找到一个相关帖子:WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_PLCJS@_COM%-PLC-技.术_网
―――――――――――――――――――――――――――――plcjs.技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
CPU为314(6ES7-1AE04-0AB0),外加CP341(MODBUS MASTER RTU),下载硬件及配置CP341驱动成功,但提示FB7,FB8不能下载,怎么办?是不是CPU版本问题? WWW_PLCJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
Dongle插了,什么程序先不下装,只下硬件,然后运行,OKWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
然后在STOP状态下,下装blocks,然后就出现下面的错误!P.L.C.技.术.网——可编程控制器技术门户
(D280) Error compiling block in S7-300 CPU.WWW_PLCJS_COM-PLC-技.术_网
Unable to copy the block ptp\SIMATICWWW_P※LCJS_CO※M-PLC-技-.术_网
300(1)\CPU 314\S7 Program(1)\Blocks\FB7.WW.W_PLC※JS_C,OM-PL,C-技.术_网
Do you want to continue the copyplcjs.技.术_网
procedure?P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
在线看CPU的故障报告:WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
Event 1 of 100: Event ID 16# 6539WW.W_PLCJS_COM-PLC-技.术_网
Illegal command in block (detected by compiler) WWW.PLCJS.COM——可编程控制器技术门户
FB number: 7WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
Module address: 2820P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
Operating mode: STOP (internal)WWW_PLCJS@_COM%-PLC-技.术_网
Internal error, Incoming eventWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
在线看CP341的诊断WWW_P※LCJS_COM-PLC-)技.术_网
Module not available (I/O access error or parameter assignment error)WWW_P※LCJS_CO※M-PLC-技-.术_网
兄弟们帮我看看怎么回事!!谢谢了 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
——可——编——程——控-制-器-技——术——门——户
WWW_PLCJS@_COM%-PLC-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
―――――――――――WWW_PLCJS_COM-PLC-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
谢谢楼上各位的答复,问题已经解决.WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
老的CPU不支持FB7,FB8,改用了FB107,FB108测试收发数据正常.WWcW_PLCJS_COM-PLC-技.术_网
有点点收获,大家分享WWW_PLCJS_COM-PLC-技.术_网
就是看了手册,发现FB8中大写的S及X可以不用.程序测试不用也能收发正常.不知道是不是瞎猫撞死耗子了,呵呵.plcjs.技.术_网
现在还有些问题想求助兄弟们,望不吝指教.W1WW_P4LCJS_COM-PLC-技.术_网
1.现场有四个从站,我采取何种方式来轮询每个站的数据.用四个发数据块,四个接收块,还是收发都只有一个数据块.数据块如何调度.每个站是不是FB8的DONE=1时FB7的EN-R才有效,还是EN-R一直有效?如果FB8的ERROR=1,对该站如何处理?是重新发送,还是程序直接跳过,轮询下个从站?看了siemens例程没有涉及到.做过相关方面的兄弟给点指点,谢谢了.刚接触通讯,不是很明白WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
2.现场的距离超过50米,要加电阻,那么CP341的330欧姆电阻怎么加到4,11的管角上? 8到底要不要接GND?如果两边等电位可以接,但一般都是不等的,那么8就可以不接了?是不是这样?WWW_PLCJS_COM-PLC-技.术_网
希望可以得到兄弟们的指点,先谢谢了!WWW_PLCJS@_COM%-PLC-技.术_网
——可——编——程——控-制-器-技——术——门——户
―――――――――WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
1、我做过相关的通迅,我做的思路是每个从站有一个发数据块DB,一个接收块DB,在OB35中调用,通过计时器设定时间来同步改变FB7和FB8的接收和发送数据块号码来轮询,时间的占空为使能时间100ms和空闲时间500ms。不管从站是否返回数据,都得进行下一个从站的轮询,以免影响其它从站的通迅。WW.W_PLC※JS_C,OM-PL,C-技.术_网
2、如果是自己做接头自己焊一个电阻上去,如果是端子,跨接到端子上,8接到通迅接口的GND。 WWW_PL※CJS_COM-PLC-技.术_网
plcjs.技.术_网
―――――――――――――WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
plcjs.技.术_网
感谢lybin!!WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
您说的应该是在CP341里面建一个发送DB,一个接收DB吧?那么接收的数据如何转存?一个DB的话,下个站的数据不是覆盖了前面的数据吗?您怎么处理这个问题?WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
您说的时间的占空为使能时间100ms和空闲时间500ms什么意思?能说的明白点吗?WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
另外,我买的15针的一个D头,自己焊上去的,再焊加电阻的话,D头上面的塑料盖子都盖不上了,郁闷?WW.W_PLCJS_COM-PLC-技.术_网
WW.W_PLC※JS_C,OM-PL,C-技.术_网
――――――――――――WWW_PLC※JS_COM-PmLC-技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
一般来说发送DB和接收DB是公用的,也就是说只需要个发送DB,一个接收DB。WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
发送时只管轮询,发送间隔(即楼上的说的占空使能)依据轮询次数、波特率、长度还有程序复杂程度而定。我比较喜欢用ClockMemory来做。另外发送时可将接收缓冲区清空一下。WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
接收块始终使能,每个周期都对接收缓冲区进行数据提取,并将提取所得数据转存至其它地方。因为有校验,不用担心数据被覆盖。WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
有点类似与生产/消费者的意思。W1WW_P4LCJS_COM-PLC-技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
―――――――――――――――――――――――――――WWW.PLCJS.COM——可编程控制器技术门户
WWW_P※LCJS_COM-PLC-)技.术_网
我做的是每个从站建一个发数据块DB,一个接收块DB,通过时间来改变FB7和FB8指定DB块,不存在数据转存问题.如:在与1号从站通迅时,FB7和FB8数据DB块分别用DB1和DB2,在与2号从站通迅时,FB7和FB8数据DB块分别用DB3和DB4,在与3号从站通迅时,FB7和FB8数据DB块分别用DB5和DB6,......——可——编——程——控-制-器-技——术——门——户
占空为使能时间100ms和空闲时间500ms意思为M值在一个周期600MS内开始的100ms为1,和500MS的时间为0WW.W_PLCJS_COM-PLC-技.术_网
电阻很小的,可以焊接在15针和9针的D型头内,我做过.W1WW_P4LCJS_COM-PLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
―――――――――――――――――――――――――――――――――