图1系统组成
3调制解调器工作方式和设定3.1 调制解调器工作原理调制解调器分成两种模式,命令模式和联机模式。当调制解调器没有和其它设备连接时,其处于命令模式,这时下达给调制解调器的指令时作调制解调器本身设定或者动作用的。当调制解调器已经和其它的设备连接上时,此时调制解调就是处于联机模式,所有在此时由计算机送到调制解调器的讯息都将由经线传送到其它设备上。用于控制调制解调器的特定指令集被称为“AT指令集”,通过该指令集,从最基本的音量控制到内建参数设置的改变,都可以由VB经过串行端口而对调制解调器下达控制指令。AT命令集是调制解调器通讯接口的工业标准。所有的AT命令都以字符AT开始,作为前缀。前缀AT用以引起调制解调器的注意(Attention)检测计算机串行通讯口发送信号的速率,识别字符格式,包括字符长度和奇偶设定等。调制解调器拨号之后,等待对方调制解调器送来的载波信号。如果在一给定时间内没有检测到载波, 调制解调器自动释放线路并送回结果码NOCARRIER,如果检测到载波信号, 调制解调器即送结果码CONNECT + 波特率,就进入联机状态,即可与远方系统进行通讯。3.2 PLC连接调制解调器原理及其设置在该系统中, PC做为主站,必须控制调制解调器主动拨号,另外,在确认调制解调器和PLC的调制解调器联机成功后控制它进入联机模式,开始存取PLC数据。主站控制调制解调器拨号连接细节见下节,这里详述PLC端对调制解调器的设置方法。PLC端PLC上电后必须初始化调制解调器,设置成自动应答来电状态。在这里把PLC初始化调制解调器的AT指令组合称为“MODEM驱动程序”。永宏PLC通过Port1来控制调制解调器,并把这种软件界面称为调制解调器专用界面。如图2设定或者设定特殊暂存器R4149的高八位为55H就可以把Port1设置为调制解调器专用界面,在该界面下PLC会启用“MODEM驱动程序”,此时,虽CPU仍然使用永宏〝标准通讯驱动程序〞来管理Port1的通讯,但必须通过调制解调器来联机,在通讯进行前,Por t1主控权是交由〝MODEM驱动程序〞管理,此时无法对PLC作任何存取动作。“MODEM驱动程序”即将调制解调器设为接收模式,并等待远方调制解调器拨号进来,一旦收发双方调制解调器联机成功,则PLC立即脱离接收模式,而进入联机状态,Port1控制权交由永宏〝标准通讯驱动程序〞管理。此时远方调制解调器便可任意存取或控制此PLC主机了。
图2 本地调制解调器设置
调制解调器设置如图2所示,在PLC联机状态下,选取菜单中的“PLC”→“设定”→“Port1设定”来到图2,选择单选框的第二项“透过MODEM作远程CPU_Link”,该PLC一上电就通过自带的“MODEM驱动程序”把Port1设置为调制解调器专用界面。另外,通讯格式设置为同调制解调器相同的N,8,1,为提高通讯效率可以把通讯速率设置为38400bps,或者更高(最高为115200bps)。4 PC端程序设计4.1 拨号程序设计PC端将以VB6.0所带的通信控件MSCOMM进行通信软件的开发,利用该控件控制串口实现对MODEM的控制。控制步骤如下:一.通信参数设置设置串口端口号,波特率,数据位,停止位,奇偶校验位及设置硬件握手协议,然后向MODEM发出DTR(已准备好)信号一便接管MODEM,程序如下:If MSComm1.PortOpen ThenMSComm1.DTREnable = TrueElseMSComm1.DTREnable = FalseEnd If 二.对MODEM初始化发出一些命令来设置参数,其中S0=n(n>=1)自动应答.n为响铃次数;E0/E1关闭/打开命令字符回应;Q0/Q1设置MODEM返回/不返回结果码;M0/M1关闭/打开MODEM扬声器;Ln(n>=0)设置MODEM扬声器音量;P/T设置MODEM脉冲/音频拨号;程序如下: If MSComm1.PortOpen ThenDo While Not MSComm1.CTSHolding: LoopTXD= "ATS0=1E1Q0M1L2T" + Ch r(13)MSComm1.Output = TXDEnd If三.进行拨号向MODEM发出ATD命令,程序如下: MSComm1.Output="ATD" & "05925998499"+Ch r(13) 当发送“ATD”+ 号码 + Ch r(13)时,MODEM就开始拨号,拨号需要一定的时间,在拨号的过程中可以不断读取MODEM的CD指示灯的状态,当拨通后CD指示灯会点亮。并返回“CONNECT + 波特率”的信息。如果MODEM向PC的回应字符串中含有"Connect"或CDHolding属性值变为True(检测出载波),则表示已与远方MODEM连机了,此时可以传输数据。 当拨通后,MODEM不再接收AT指令,要使其回到命令状态,则必须发送“+++”信息,使MODEM回到命令状态,然后发送“ATH”+ Ch r(13)则可以挂断,程序如下: MSComm1.Output="ATH" +Ch r(13) 4.2 通讯程序设计一.永宏PLC通讯协议永宏PLC 通讯讯息格式可概分为6个数据域位, 如下图3所示,具体解释如下:
图 3 永宏PLC通讯协议讯息格式
⑴.开头字符(STX):ASCI I码之开始字符STX。⑵.从站号码:为两位数之16进制数值。⑶.命令号码:为两位数之16 进制数值,为由主系统要求从系统所执行之动作类别。⑷.本文资料:本文数据可为0(无本文数据)~500个ASCII字符。⑸.侦误值(CHECKSUM): 侦误值系将前述~将各ASCII字符之16进制数码值(8位长度)从头至尾依序相加,但不考虑进位,因此最终结果为侦误值。⑹.结尾字符(ETX):ASCI I码之结尾字符ETX之16进制数码为03H。。二.读数写数本系统操作PLC的关键数据主要是水位的设定值PV=R0和当前值CV=R1,即要对暂存器R0进行写操作,R1进行读操作;依照协议VB设计的通讯程序必须指定一个命令码,向PLC请求数据读取,查的该命令码为“46”,解释为:连续多个缓存器之数据读取。读取R1的PC命令的ASCII码写法为:“STX+ 01(站号)+46(命令码)+01(连续数据个数)+R00001(数据开始地址)+LRC(侦误值)+ETX”依照协议VB设计的通讯程序必须指定一个命令码,对PLC缓存器数据写入,查的该命令码为“47”,解释为:连续多个缓存器之数据写入。写入R0的PC命令的ASCII码写法为:“STX+ 01(站号)+47(命令码)+01(连续数据个数)+R00000(数据开始地址)+XXXX(写入的数据资料,16进制)+LRC(侦误值)+ETX”读取当前值CV=R1,程序如下Private Sub Timer1_Timer()MSComm1.Output= Ch r(2)+ “014601R00001”+ Lrc(“014601R00001”)+Ch r(3)Delay (10) ''延时CV = Val("&H" + Mid(MSComm1.Input, 7, 4)) ''数据处理,R0放于CVCV.Text = CVEnd Sub写入设定值PV=R0,程序如下Private Sub Command1_Click()If Len(Hex(PV.Text)) = 4 Then PV = Hex(PV.Text)If Len(Hex(PV.Text)) = 3 Then PV = "0" + Hex(PV.TextIf Len(Hex(PV.Text)) = 2 Then PV = "00" + Hex(PV.Text)If Len(Hex(PV.Text)) = 1 Then PV = "000" + Hex(PV.Text) ''10进制转换16进制MSComm1.Output=Ch r(2)+ “014701R00000”+ PV + +Lrc(“014701R00000” & PV)+Ch r(3)End Sub三.侦误值(CHECKSUM)计算为VB的编程方便,把该计算做成单独一个子程序,依所有数据累加,舍弃进位的规则VB的LRC编程如下:Private Function Lrc(Dats) As StringDim iDim SumSum =2For i = 1 To Len(Dats)Sum = Sum + Asc(Mid(Dats, i, 1))Next iLrc = Right("0" + Hex(Sum + 2), 2)End Function5结束语采用基于MODEM通讯的设计极方便地实现该小电站生厂调度,在这种只需短时间连接控制的系统应用上可以大幅度地减小通讯成本,具有一定的推广价值。另外,通过MODEM的连接,利用永宏编程软件可以实现该设备的远程程序调试修改,通过两个MODEM还可以实现两台远程PLC的CPU连接通讯等。
我们公司主营柔性振动盘、柔性供料器、非标自动化设备、柔性振动盘、柔性生产线、柔性自动上料系统、并联机器人摆盘机、视觉自动分拣设备、柔性上料工作站、视觉检测机等业务,厂家直营,支持定制,免费获取全套方案。
本文来源于互联网,我们本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并以尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。