项目背景:
最近公司接到一个农业方面的物联网项目,需求是需要采集土壤的各项参数以及根据温度、湿度来控制水肥和大棚卷膜的开关。提供的设备有各种传感器和plc控制类设备,其中一个最为头疼的就是要解决plc设备,很烦,不过功夫不负有心人,最后还解决了,这里允许我笑下,哈哈哈哈哈~
分割线----------------------------------------下面开始正题
首先说下解决思路:
由于考虑到串口开发很麻烦,所以后来买了一个4g模块的dtu。
所以最后的解决方案是,plc串口设备与dtu相连,由于dtu是透传模式,使用java与4g模块进行通信就完事了。
虽然这样看着很简单,但是这段时候不少走弯路,颇有一种摸石过河、黑夜走路的感觉,什么东西都要自己摸索,又怕方向是错的,直到成功的那一刻才知道原来是这样,终于到了扒开了云雾,见到了太阳,然后回头看看才明白道路是那样的清晰。
但是:我要说的是不要畏惧困难,哪怕你不知道前路如何,哪怕不知道方向是否正确,但一定有静下心来去思考,一点点去尝试,最后一定能找到正确的道路。
经历的历程:
历程1:
拿到plc设备的那一刻,自己完全不知道该怎么办,我是谁?我在哪??我要做什么???但是被项目逼迫的我很快冷静下来,管他呢,先单独测试设备吧,先用指令把设备跑通了再说,这是历程1的主要目标。于是研究串口协议,研究modbus ASCII码协议、解析其每位16进制数据的含义、研究其校验码,花了3天左右的时间终于把协议搞明白了,协议搞明白了,写了串口指令,接下来我要怎么发送,请教懂行的人,下载了串口调试助手,反复试,终于第一条指令成功了,把我高兴的差点就流出了老父亲般激动的泪水。
历程2:
4g模块dtu,拿到后和plc的思路一样,先看4g模块是否通信正常,于是在厂家的官网找到配置调试文档,按着步骤调试、配置,最后把4g模块参数配置完成,主要这里的配置主要是给dtu设置服务器地址,就是4g模块最终要和谁通信,给dtu配置上服务器的ip地址和端口号。最后配置完成,在服务器上装上网络调试助手,发送信息测试成功,通信正常。
历程3:
经过1个多星期的工作,dut和plc已分别收服,接下来要测试,dut连接plc之后,给dtu发信息能否控制plc的运行。由于前期分别做测试时已经做了很多工作,所以两者在一起调试很顺利,很快就通上了信息,使用网络助手给dtu发送指令,dtu能顺利的把指令传给plc,从而达到控制plc的效果。那接下来就是怎么用java和dtu通信了。
历程4:
java与dtu的通信,讲真,这两者通信着实让我有点不知所措,不过后来回到家躺在床上灵光一闪,dtu不就用的sokect通信的吗?我现在写个socket的服务器来代替之前的网络助手发送指令是否可行呢?于是第二天早上一到公司就写了几行简易代码,丢到之前给dtu配置地址的那台服务器上实验,果然接收到了dtu的心跳包数据,这时我有点喜出望外,感觉写了几行指令实验,结果真的能行,终于历经了4个阶段后,整个流程都跑通了,解决方案也有了,剩下的就是怎么写代码的事了。
经过这段时间的研究学习了不少东西,也收获了很多,希望这个能帮助大家就到你们遇到的问题。
项目背景:
最近公司接到一个农业方面的物联网项目,需求是需要采集土壤的各项参数以及根据温度、湿度来控制水肥和大棚卷膜的开关。提供的设备有各种传感器和plc控制类设备,其中一个最为头疼的就是要解决plc设备,很烦,不过功夫不负有心人,最后还解决了,这里允许我笑下,哈哈哈哈哈~
分割线----------------------------------------下面开始正题
首先说下解决思路:
由于考虑到串口开发很麻烦,所以后来买了一个4g模块的dtu。
所以最后的解决方案是,plc串口设备与dtu相连,由于dtu是透传模式,使用java与4g模块进行通信就完事了。
虽然这样看着很简单,但是这段时候不少走弯路,颇有一种摸石过河、黑夜走路的感觉,什么东西都要自己摸索,又怕方向是错的,直到成功的那一刻才知道原来是这样,终于到了扒开了云雾,见到了太阳,然后回头看看才明白道路是那样的清晰。
但是:我要说的是不要畏惧困难,哪怕你不知道前路如何,哪怕不知道方向是否正确,但一定有静下心来去思考,一点点去尝试,最后一定能找到正确的道路。
经历的历程:
历程1:
拿到plc设备的那一刻,自己完全不知道该怎么办,我是谁?我在哪??我要做什么???但是被项目逼迫的我很快冷静下来,管他呢,先单独测试设备吧,先用指令把设备跑通了再说,这是历程1的主要目标。于是研究串口协议,研究modbus ASCII码协议、解析其每位16进制数据的含义、研究其校验码,花了3天左右的时间终于把协议搞明白了,协议搞明白了,写了串口指令,接下来我要怎么发送,请教懂行的人,下载了串口调试助手,反复试,终于第一条指令成功了,把我高兴的差点就流出了老父亲般激动的泪水。
历程2:
4g模块dtu,拿到后和plc的思路一样,先看4g模块是否通信正常,于是在厂家的官网找到配置调试文档,按着步骤调试、配置,最后把4g模块参数配置完成,主要这里的配置主要是给dtu设置服务器地址,就是4g模块最终要和谁通信,给dtu配置上服务器的ip地址和端口号。最后配置完成,在服务器上装上网络调试助手,发送信息测试成功,通信正常。
历程3:
经过1个多星期的工作,dut和plc已分别收服,接下来要测试,dut连接plc之后,给dtu发信息能否控制plc的运行。由于前期分别做测试时已经做了很多工作,所以两者在一起调试很顺利,很快就通上了信息,使用网络助手给dtu发送指令,dtu能顺利的把指令传给plc,从而达到控制plc的效果。那接下来就是怎么用java和dtu通信了。
历程4:
java与dtu的通信,讲真,这两者通信着实让我有点不知所措,不过后来回到家躺在床上灵光一闪,dtu不就用的sokect通信的吗?我现在写个socket的服务器来代替之前的网络助手发送指令是否可行呢?于是第二天早上一到公司就写了几行简易代码,丢到之前给dtu配置地址的那台服务器上实验,果然接收到了dtu的心跳包数据,这时我有点喜出望外,感觉写了几行指令实验,结果真的能行,终于历经了4个阶段后,整个流程都跑通了,解决方案也有了,剩下的就是怎么写代码的事了。
经过这段时间的研究学习了不少东西,也收获了很多,希望这个能帮助大家就到你们遇到的问题。
举报