大家好,我是一名工控新手,最近在用松下PLC做通讯的时候,遇到很多的迷惑,请各位达人指点迷津。
最近在做一套在线环境监测的系统,PLC采用松下FP-X C40R,触摸屏为松下GH07X,主要功能为每15分钟进行一个轮回的化学检测,得出一个污水成分含量监测值,同时需要把相关的数据上传到上端数据监控中心。化学检测的动作过程和计算含量值功能都已实现,现在就剩下与上端数据监控中心的数据通讯问题。
根据规定,我们系统主动发送数据到上端的数据采集仪,数据采集仪负责接收,系统与数据采集仪通信端口为RS232串口,通信协议为Mosbus-RTU。其中我们只负责我们系统数据的发送,上端的数据采集仪未知,我们只需提供相关的通讯参数。
需要传送的数据包括监测值、每次监测值对应的时间、系统运行状态、系统故障状态,他们在PLC程序中的寄存器地址如下表所示:
传送数据 | 寄存器地址 | 数据类型 |
运行状态 | DT100 | 整数 |
故障状态 | DT102 | 整数 |
监测值 | DT500 | 实数 |
年 | DT200 | 整数 |
月 | DT202 | 整数 |
日 | DT204 | 整数 |
时 | DT206 | 整数 |
分 | DT208 | 整数 |
秒 | DT210 | 整数 |
首先,笔者先进行PLC软件通信设置,选项-----PLC寄存器设置,进入页面设置COM1口如下:
笔者编的程序如下:
年月日时分秒这几个寄存器我想通过位传输指令(F5 BTM F6 DGT)把它们放到一个寄存器当中去表示年月日时分秒,然后再传送出去,因为篇幅的关系,我想另外开个帖子请教。
针对上面这些,我心里边有几个疑惑想请教:
(1)上边通信设置和程序有哪些错误,和需要改进的地方?
(2)为了使上端数据采集仪能够顺利通过Modbus-RTU协议和我们系统通讯上,我们需要提供哪些参数给对方,我能想到的有这些:
通讯端口:RS232串口
通讯协议:Modbus-RTU
波特率:9600kps
数据位:8位
停止位:1位
检验位:无
我们系统站号为:1
数据采集仪站号为:4
然后就是数据寄存的地址,比如程序中我把监测值DT500传送到4号站的DT304,这个DT304在Modbus里应该怎样表达,对方才能顺利采集到数据。是不是要转化成一个Modbus地址,是不是如下图,下图应该怎么看?:
除了上边这些,还有那些通信参数我应该提供给上端数据采集仪?
(3)CRC检验码是什么?我们需要提供吗?
暂时遇到了这些疑惑,恳请各位达人帮我解答一下,不胜感激~!
回复内容:
对:通讯网关于首先,你的做法就不对。。。。上位是主,下位是从,你应该上位读,下位响应,而不是下位主动向上位发送数据。 且“上端的采集仪未知”------这话就说明你很糊涂,上位采集仪未知,你怎么可能通讯呢??需要知道的很多,上位采集仪的速率,波特率,数据位,校验位,停止位,上位采集仪所设定的站号等等。。都要一清二楚,才可以。内容的回复:
我就是要把我的这个系统做成一个类似市场上那些带Modbus-RTU通讯的仪器仪表,你看那些仪器仪表只需要提供相关的通讯参数,任何一个支持Modbus-RTU协议品牌的PLC都可以通过通信读取仪器仪表的数据。
回复内容:
对:凹凸曼关于回复内容:对:通讯网关于首先,你的做法就不对。。。。上位是主,下位是从,你应该上位读,下位响应,而不是下位主动向上位发送数据。 且“上端的采集仪未知”------这话就说明你很糊涂,上位采集仪未知,你怎么可能通讯呢??需要知道的很多,上位采集仪的速率,波特率,数据位,校验位,停止位,上位采集仪所设定的站号等等。。都要一清二楚,才可以。内容的回复:我就是要把我的这个系统做成一个类似市场上那些带Modbus-RTU通讯的仪器仪表,你看那些仪器仪表只需要提供相关的通讯参数,任何一个支持Modbus-RTU协议品牌的PLC都可以通过通信读取仪器仪表的数据。 内容的回复:
现在这个FPX就已经可以啊。。。你把你的FPX设置成modbus从站,别人就可以读取你所有的内容了,
回复内容:
对:通讯网关于你要是把FPX用作modbus从站,你甚至都不用编程,只要把站号,通讯参数设置好,把PLC打到运行状态。就行了!!!你可以通过modbus上位程序读取PLC的任何节点,X,Y,R,DT,等等。。。任何一个节点。。。地址参考上图。。。它可以作为modbus总线的远程模块。。不用任何编程。。。 你给西门子增加一个扩展模块,模块需要编程么??不需要吧?? ---同样 fpx作为从站,也就相当于一个扩展模块,不用编程就可以工作。内容的回复:
你说的很有道理,不过按照我们出厂设备的通信要求,是需要我们设备主动上传数据,上位数据采集仪器负责接收,所以我觉得我们可能还是需要主动上传。请教一个问题,按照青岛黄工的说法,一次发送三个F145指令会造成通讯繁忙,如果我把监测值、运行状态、故障状态、年月日时分秒等寄存器全部移位到一个连续的寄存器中,然后发送多字节的F145命令,只需要一条F145就可以解决全部数据通讯问题,这样可行不,可不可以指导一下。