第一,硬件连接准备smrat200PLC一台。EM4AI模块一个,准备一个网线,一个DB九针公头,焊接两个线一个接DB头3脚为A一个接8脚为B,把DB头插在PLC上,另外两个线头接在EM4AI的A和B 端子上,PLC和模块分别接上电源,这样硬件就连接好了
第二,编程PLC
1打开编程软件,调用modbus指令库,指令库有三个,两个主站,0和1, 一个从站指令,当用PLC自带的485口,选用0号主站

CTRL是初始化指令,定义PLC端口和通讯
EN使能长接通,mode模式1为NODBUS,低电平为PPI通讯,baud是波特率设定,parity校验方式,port是设定485端口,timeout超时通讯时间,注意,初始化后不能用初始化指令的DONE端马上触发MSG指令,必须延时一点时间去MSG的First端,
MSG是读写指令EN使能,First必须的脉冲触发,Slave是PLC所要读写的从站地址,RW是定义读或者写,1为读,0为写,ADDR是从站数据的地址,比如40001或者30001,或者10001或者16进制的数,Count是所要读写数据的个数,DATA是读过来的数据存储的地址。这取决模块的参数以EM4AI模块为例我们需要读取30001到30004的数据那么ADDR输入30001,或者16#7561是模块的首地址,COUNT则需要设定为1-4,因为模块只支持30001-30004是个数据,

下图是读出来的模块数据

读出来的数据放置在vw200开头的寄存器地址vw200就是30001的数值。Vw202是30002,vw204是30003
4AO功能是输出模拟量电压或者电流,是通过PLC写个数据那么模块就可以输出对应的模拟量,数据是0-4095,对应的是0-10V或者0-20毫安输出,在plc里面的程序是下图:

这是对模块中AO所在的寄存器写数据的程序模块共有4路输出分别是AO0 AO1 AO2 AO3对应的modbus地址是4017
4018 4019 4020 改程序就是对以4017为首地址的寄存器连续4个写,通过VW400为首的v寄存器写入,vw400对应的是4017,依次类推。当给vw400写入4095的数后,AO0会对应输出10V或者20毫安的模拟量。