在了解了Modbus통신的基本형식后,本期将通过仿真的방식实现Modbus RTU통신 프로토콜在三菱FX3U PLC上的적용。
指令介绍
一、软件准备
●虚拟시리얼 포트도구
●Modbus Slave
●凌一PLC仿真器
●GX works2编程软件
二、RS指令
RS指令是在执行시리얼 포트통신时用来수신和보내기데이터的指令,使用该指令时需要在PLC上插入FX3U-485-BD통신模块。
1)基本형식
其中m(发生데이터的个数)和n(수신데이터的个数)需要根据外部设备的프레임형식指令,不能随便设置。
2)예제
X0:RS指令触发条件,当X0位ON时RS指令进入보내기或수신데이터的대기状态。
D10:보내기데이터的시작레지스터。
K8:보내기데이터的个数,表示每次보내기D10~D17范围内八个레지스터的데이터。
D20:수신데이터的시작레지스터。
K7:수신데이터的个数,表示将外部设备返回的데이터存入D20~D26范围内的七个레지스터里。
三、特殊辅助릴레이
1)M8161 데이터处理位数标志릴레이
当M8161=OFF时处理16位데이터。
当M8161=ON时处理低8位데이터。
2)M8122 데이터보내기标志릴레이
当RS指令处于보내기或수신데이터的대기状态时置位M8122,此时RS指令中보내기데이터레지스터里的데이터将会被보내기给外部设备。데이터보내기完成后系统会自动复位M8122,不能使用程序对其进行复位操作。
3)M8123 데이터수신标志릴레이
RS指令将데이터보내기完成后,进入수신데이터状态。此时M8123被置位为ON,并对수신到的데이터进行处理,데이터处理完成后需要将M8123复位为OFF,否则无法수신下一轮的데이터。
四、통신매개변수设置
통신매개변수既可以在PLC系统设置中直接设置,也可以通过改变D8120的值进行设置,两种设置방식任选一种即可(本文主要介绍通过D8120进行设置)。
1)直接设置
依次单击매개변수列表中的“PLC매개변수”→“PLC系统设置2” →勾选“进行통신设置”,然后根据实际需求设置통신매개변수,设置完成并检查无误后单击“设置종료”버튼저장设置。
2)通过D8120设置
根据下表给定的매개변수并结合实际需求设置b0~b15的值,并转换成16진수数传送给D8120,实现통신매개변수设置。
3)예제
将통신매개변수设置按如下要求进行设置:데이터길이为8位、짝수 패리티、정지 비트为1位、통신 속도为9600、无报头报尾,控制线为无프로토콜的RS-485인터페이스。
편집程序将매개변수传入D8120。
五、CRC指令
CRC指令的作用是계산Modbus RTU통신프레임的체크섬。
在低8位모드下(M8161=ON),当X0为ON时CRC指令계산出D10~D15六个레지스터产生的效验码,并将계산 결과的高八位存入D16,低八位存入D17。
指令运用
一、项目要求
按下X0버튼읽기1号슬레이브유지 레지스터40000的值,按下X1将100쓰기1号슬레이브유지 레지스터40002中,통신매개변수与上文예제中保持一致。
二、편집程序
1)初始化
在初始化程序中需要将M8161设置为处理低8位데이터모드(M8161=ON),将통신매개변수传入特殊레지스터D8120以及复位程序中用到的레지스터。
2)추가RS指令
如果每次处理的데이터길이一致,那么只需추가一次RS指,并且让RS指令一直处于대기보내기或수신데이터状。
보내기或수신的데이터길이需要根据外部设备的要求进行设置,此处外部设备为Modbus Slave,其프레임형식与표준프레임형식一致,所以此处보내기和수신的데이터길이分别为K8和K7。
3)편집읽기程序
a)계산읽기程序프레임
可以借助시리얼 포트디버깅 도우미自动生成프레임,其中84 0A为CRC 검증码。
b)편집프레임传送程序
当检测到X0的上升沿时将生成的프레임传入用来보내기데이터的레지스터D10~D15中。
프레임需要用16진수表示。
c)추가CRC指令
CRC指令将根据前六个프레임계산出체크섬,并将结果的高八位存入D16,低八位存入D17。
由于仿真中CRC指令时好时坏,所以本项目不使用CRC指令,而是将체크섬直接传入D16和D17。
d)보내기데이터
当检测到X0的下降沿时置位M8122完成데이터的보내기。
e)수신并处理읽기回来的데이터
슬레이브返回的데이터如同所示,通过分析프레임可得슬레이브返回的데이터高八位和低八位分别储存在D23和D24中。
通过계산把D23和D24的데이터合并,然后存放到D31中。
4)편집쓰기程序
a)편집프레임传送程序
参照읽기程序的편집방식。
b)보내기데이터
c)수신데이터
由于不需要수신슬레이브返回的데이터所以直接复位M8123。
仿真환경설정
一、추가虚拟시리얼 포트
需要추가两对虚拟시리얼 포트,一对用来实现GX works2和凌一PLC仿真器的연결,另一对用实现凌一PLC仿真器和Modbus Slave的연결
二、설정凌一仿真器
설정完成后需要열기下载口和开启扩展통신,并让PLC处于运行状态。
三、설정GX works2
其설정방식与연결实体PLC时的방식一致,主要选择포트号。设置完成后单击“통신测试”,测试成功后单击“确定”저장设置,并将程序下载到仿真器中。
四、설정Modbus Slave
1) 설정Modbus Slave연결
연결매개변수需要与D8120中的통신매개변수保持一致。
2)설정Modbus Slave슬레이브功能
如图所示设置슬레이브功能,并修改레지스터40000的值。
五、仿真演示
설정好仿真환경后,将程序下载到仿真器中,并进入监视状态。
1)읽기演示
单击仿真器中的X0버튼,观察D31的值是否与Modbus Slave中유지 레지스터40000设置的值一致。
2)쓰기演示
单击仿真器中的X1버튼,观察100是否被쓰기到슬레이브的유지 레지스터40002中。
六、程序整体浏览
ADPRW 指令