做為博途的硬件,1200和1500本體都不具有串口通訊功能,只能使用擴展板或是通訊模塊完成。
其中1200使用CB1241或CM1241進行串口通訊,本文將使用CM1241進行演示。
1、硬件介紹
1200的PLC一臺,有意思的板子(以下簡單4D板)一臺。
其中1200帶擴展模塊CM1241 RS232;4D板使用標準的MODBUS_RTU 通訊。
因此,需要將CM1241上RS232公頭口轉化為RS485,我們使用了一個轉換器將RS232口轉化為RS485,型號是DT-9001;
關于板子及其通訊的介紹詳見下方鏈接文章:匯川ESAY系列之串口MODBUS主站通訊(有意思的與外設IO板)_匯川easy串口0是那個-CSDN博客
2、PLC側編程
關于此類編程可先使用調試助手調試一遍,再與硬件配合,這樣可以方便的查看程序中的錯誤,以以發送出的字節。
2.1、新建項目。
在新建項目中添加設備時添加1200PLC,同時在“屬性”/“以太網設置”中設置“IP地址”,新建“子網”,開啟“系統和時鐘存儲器”。都是習慣性的操作。對CM1241進行端口設置。
注意CM1241使用的硬件標識符,在編程時會使用到。
2.2、設置變量,取消勾選“優化的塊訪問”
2.3、創建UDT數據類型(可選),以方便后續編程。將MODBUS_RTU指令使用的管腳全部放入UDT中,程序中使用哪個就調用哪個。
2.4、程序
VARMB_COMM_LOAD_Instance {S7_SETPOINT := 'True'} : MB_COMM_LOAD;MB_MASTER_Instance {S7_SETPOINT := 'True'} : MB_MASTER;//主站的多重實例名稱Mb : "MODBUS_RTU";//聲明了DTU(PLC自定義數據類型)//數據處理mbDataSendOrRCV1: Array[1..50] OF Word := [50 (())]; (*MB發送或是收到的數據*)arrMiddleBool: Array[1..50] OF Bool := [50 (())]; (*將需要發送的數據拆成布爾數組*)arrMiddleBoolR : Array[1..50] OF Bool := [50 (())]; (*將收到的數據轉換布爾數組*)diSendData : Array[0..2] OF DWord; (*0人工輸入的數據(處理前)1臨時變量,2收到的數值*)diRcvData : DWord; //收到的數值,對應diSendData【0】;diMbSendData : Array[1..50] OF Word;iIndex : Array[0..10] OF Int; //程序中使用的所有索引值都從此數組中引用;byTimer : Byte; //4D板子的延時IEC_Timer_0_Instance {S7_SETPOINT := 'True'} : TON_TIME;bVar : Array[0..1] OF Bool;