本帖最后由 xyz549040622 于 2021-2-22 06:19 编辑
#申请原创#
最近需要搞一个小东西,用信捷的带人机界面的PLC和一个变频器通讯,控制电机的转动。虽然咱的主业是搞单片机的,可是咱也要搞呀,因此把通讯过程做一个备忘,方便以后进行查询和使用。
首先给大家看看这个人机界面长啥样,前面带一块192×64像素的3.7寸LCD,多达26个功能键,PLC部分带10个输入,8个输出,足以满足一般的控制场合。关键是这玩意比较便宜,才400来块钱。对于工控上需要控制和人机界面交互的场合,开发是相当的快捷呀。
下面直接上干货。
首先是Modbus通讯口的配置。XP2有两个接口,一个是是下载口,一个是通讯口。在XCPro软件中,串口1是下载口,串口2是485通讯口。
通讯参数由FD寄存器控制,可以通过XCPro软件修改。
1.PLC数据监控-直接修改寄存器的值-寄存器是断电保存的
2.PLC设置-PLC串口设置中,串口2的设置
我们一般通过方式2进行通讯参数的配置。
下载口和ModBus的默认通讯参数如下所示:
下载口的参数我们直接默认即可,串口2我们需要配置为modbus的通讯参数,这里我们PLC用作主机,变频器做从机使用。
在PLC设置-PLC串口设置中修改参数即可,注意修改参数后需要重启PLC。
通讯参数配置完毕后,就是使用Modbus的通讯指令进行通讯了。
Modbus指令的描述可以在数据手册中找到
(XP-18一体机用户手册中有讲述,42页)
(XC系列可编程序控制器用户手册(基本指令篇),261页)
我们在这里主要示范一下读从机2个数据的操作。Modbus指令的插入,按下快捷键F8调出其他指令,找到通讯指令插入即可。
下面是一个写好的Modbus指令-Modbus读寄存器指令。
REGR的几个参数含义如下所示:
注意:这几个参数的含义是相当重要的,弄懂了他们,就基本上搞Modbus通讯了。
S1:指的是从机的站号,也就是所谓的从机modbus地址
S1:指的是从机寄存器地址
D2:指的是PLC或者一体机自带的三个串口中的哪个串口,这里用到的是通讯口2,所以这里固定是K2
每个参数的实际含义如下:
K3:modbus的从机地址是3
K1:从机modbus的寄存器地址是4
K2:连续读取两个寄存器
D1:数据读到PLC寄存器D1的中
K2:使用的PLC端口2,这个是固定的
为了更方便的讲清楚这个通讯,我把模拟从机的参数也贴上了,用Modbus Slave模拟的从机。
读取数据后PLC主机的寄存器数据如下所示:
可以看到我们给PLC寄存器D1中写数据,但由于每个寄存器是16位的,我们写32位的数据,所以低位直接写到PLC寄存器D2中。
信捷PLC寄存器32位数据的构造如下:
信捷PLC32位的数据格式是高位在后,低位在前。但是我们用HMI软件指定显示32位数据的时候,一般都是从低位寄存器开始指定,然后指定寄存器个数。
这样得到的数据,和我们实际高低字节是相反的,因此需要使能字节交换功能。在菜单设置OP系列的快捷菜单中可以开启字节交互功能。
这样设置双字交换以后,就能正常的显示读到的32位数据了。
至此,一个标准的Modbus通讯过程就完成了。
|
给力