前回ではTM221のModbusRUTとDrv Objectを使用しATV320 Driveを制御してみました。今回はCtrlx PLC Engineering中にあるCodesysベースのWebVisuを使用しWeb Browserから操作してみます。よろしくおねがいします。
Implementation
今回はCtlx AutomationのModbus TCP APPを使用し、データをTm221 Schneiderと交換しCtrlXの CodesysベースWeb表示に表示させます。
Reference Link
TM221 Side
Modbus TCP Configuration
Configurationを開き>ETH1>Modbus TCPを展開するとModbus TCPの設定画面が表示されています。
Modbus TCP 画面からUnit IDやTotolの交換データサイズを設定できます。
Defaultでは10ですが、プロジェクト内に16 BitsのRegisterが10個構築されました。
この記事では20個を構築していきます。
Programming Tabを開き>Network Objectsを展開すると、Input/Output Register(Modbus TCP )があります。
先程20個のInput Registerが構築されたので、プロジェクト内で%QWM0から%QWM19までのModbus TCP Registerを使用可能です。
先程20個のOutput Registerが構築されたので、プロジェクト内で%IWM0から%IWM19までのModbus TCP Registerを使用可能です。
Programming
今回の記事ではStaustやCommandをInput/Output Register とUser変数の間に転送するだけになります。
How to bitaccess?
このような書き方で、TM221の中にWordデータのBitアクセスができます。以下のExampleでは%QWM1の0Bit目にアクセスするのと同じです。
%QWM1:X0 |
Pou4_HMI
Pou_HMIは新しいプログラムでInput/Output Register とUser変数の間を転送しています。
Transfer Status to Input Register
Rung0からRung10までは、DriveやCPUの状態をInput Registerに転送します。
Data From Output Register
Rung12からRung16まではOutput Registerから受信したコマンドを受け取り、User変数に転送します。
Pou1 System Modification
Rung1で各コマンドのTrigger条件をORで増やせばOKです。
Ctrlx Side
Modbus TCP Apps
Modbus TCP Slaveを追加し、IP/Ports/Slave IDを設定してください。
こちらはModbus TCP Slaveを構築するには重要なパラメータです。
FC23とFC16のTasksが作成されました。
Input Register
こちらはInput Register Taskの設定です。
Output Register
こちらはOutput Register Taskの設定です。
Configure DataLayer
DataLayer_Realtimeを設定しModbusTCP Appsとデータをやり取りします。
Done!
Programming
Data Unit Type
DUT_ATV320_ModbusStatus_w0_structure
こちらのDUTではSchneiderCPUのModbus TCP Input Register0に該当します。
TYPE DUT_ATV320_ModbusStatus_w0_structure : STRUCT RUN :BOOL; SL1_STOP :BOOL; SL1_ReqInited :BOOL; SL1_OP :BOOL; SL1_PARITALLYOP :BOOL; SL1_SUSPEND :BOOL; _b6,_b7,_b8,_b9 ,_b10,_b11,_b12 ,_b13,_b14,_b15 :BOOL; END_STRUCT END_TYPE |
uDUT_ATV320_ModbusStatus_w0
Union Data Typeを使用し変数をWORD Formatにまとめます。そうするとDUT_ATV320_ModbusStatus_w0_structureと同じMemory Offsetになります。
TYPE uDUT_ATV320_ModbusStatus_w0 : UNION _raw :WORD; data :DUT_ATV320_ModbusStatus_w0_structure; END_UNION END_TYPE |
DUT_ATV320_ModbusStatus_w1_structure
こちらのDUTではSchneiderCPUのModbus TCP Input Register1に該当します。
TYPE DUT_ATV320_ModbusStatus_w1_structure : STRUCT IO1_Drive_Power_IL :BOOL; IO1_OP_IL :BOOL; _b2,_b3,_b4,_b5 ,_b6,_b7,_b8,_b9 ,_b10,_b11,_b12 ,_b13,_b14,_b15 :BOOL; END_STRUCT END_TYPE |
uDUT_ATV320_ModbusStatus_w1
Union Data Typeを使用し変数をWORD Formatにまとめます。そうするとDUT_ATV320_ModbusStatus_w1_structureと同じMemory Offsetになります。
TYPE uDUT_ATV320_ModbusStatus_w1 : UNION _raw :WORD; data :DUT_ATV320_ModbusStatus_w1_structure; END_UNION END_TYPE |
DUT_ATV320_ModbusStatus_w2_Structure
こちらのDUTではSchneiderCPUのModbus TCP Input Register2 に該当します。
TYPE DUT_ATV320_ModbusStatus_w2_Structure : STRUCT IO1_MC_POwer_Status :BOOL; IO1_MC_Power_Error :BOOL; IO1_MC_JOG_FW :BOOL; IO1_MC_JOG_BW :BOOL; IO1_MC_JOG_DONE :BOOL; IO1_MC_JOG_BUSY :BOOL; IO1_MC_JOG_CMDABORED :BOOL; IO1_MC_JOG_ERROR :BOOL; IO1_MC_MOVEVEL_IL :BOOL; IO1_MC_MOVEVEL_CMD :BOOL; IO1_MC_MOVEVEL_CONTUPDATE :BOOL; IO1_MC_MOVEVEL_INVEL :BOOL; IO1_MC_MOVEVEL_BUSY :BOOL; IO1_MC_MOVEVEL_CMDABORED :BOOL; IO1_MC_MOVEVEL_ERROR :BOOL; IO1_STATUS_VALID :BOOL; END_STRUCT END_TYPE |
uDUT_ATV320_ModbusStatus_w2
Union Data Typeを使用し変数をWORD Formatにまとめます。そうするとDUT_ATV320_ModbusStatus_w2_structureと同じMemory Offsetになります。
TYPE uDUT_ATV320_ModbusStatus_w2 : UNION _raw :WORD; data :DUT_ATV320_ModbusStatus_w2_structure; END_UNION END_TYPE |
DUT_ATV320_ModbusStatus_w3_Structure
こちらのDUTではSchneiderCPUのModbus TCP Input Register3 に該当します。
TYPE DUT_ATV320_ModbusStatus_w3_Structure : STRUCT IO1_STATUS_ERRORSTOP :BOOL; IO1_STATUS_DISABLED :BOOL; IO1_STATUS_STOPPING :BOOL; IO1_STATUS_STANDSTILL :BOOL; IO1_STATUS_CONTMOTION :BOOL; IO1_STATUS_ERROR :BOOL; IO1_MCREADMOTIONSTS_VALID :BOOL; IO1_MCREADMOTIONSTS_CONSTANTVEL :BOOL; IO1_MCREADMOTIONSTS_ACCELERATING :BOOL; IO1_MCREADMOTIONSTS_DECELERATING :BOOL; IO1_MCREADMOTIONSTS_ERROR :BOOL; IO1_MC_RESET_DONE :BOOL; IO1_MC_RESET_BUSY :BOOL; IO1_MC_RESET_ERROR :BOOL; IO1_MC_STOP_DONE :BOOL; IO1_MC_STOP_BUSY :BOOL; END_STRUCT END_TYPE |
uDUT_ATV320_ModbusStatus_w3
Union Data Typeを使用し変数をWORD Formatにまとめます。そうするとDUT_ATV320_ModbusStatus_w3_structureと同じMemory Offsetになります。
TYPE uDUT_ATV320_ModbusStatus_w3 : UNION _raw :WORD; data :DUT_ATV320_ModbusStatus_w3_structure; END_UNION END_TYPE |
DUT_ATV320_ModbusStatus_w4_Structure
こちらのDUTではSchneiderCPUのModbus TCP Input Register4 に該当します。
TYPE DUT_ATV320_ModbusStatus_w4_Structure : STRUCT IO1_MC_STOP_ERROR :BOOL; _b1,_b2,_b3,_b4,_b5 ,_b6,_b7,_b8,_b9 ,_b10,_b11,_b12 ,_b13,_b14,_b15 :BOOL; END_STRUCT END_TYPE |
uDUT_ATV320_ModbusStatus_w4
Union Data Typeを使用し変数をWORD Formatにまとめます。そうするとDUT_ATV320_ModbusStatus_w4_structureと同じMemory Offsetになります。
TYPE uDUT_ATV320_ModbusStatus_w4 : UNION _raw :WORD; data :DUT_ATV320_ModbusStatus_w4_structure; END_UNION END_TYPE |
DUT_ATV320_ModbusStatus
こちらのDUTではすべてのStatus wordを一つのDUTにもう一回まとめます。このDUTではGVLを使用します。
TYPE DUT_ATV320_ModbusStatus : STRUCT w0 :uDUT_ATV320_ModbusStatus_w0; w1 :uDUT_ATV320_ModbusStatus_w1; w2 :uDUT_ATV320_ModbusStatus_w2; w3 :uDUT_ATV320_ModbusStatus_w3; w4 :uDUT_ATV320_ModbusStatus_w4; w5_ActualSpeed :INT; END_STRUCT END_TYPE |
DUT_ATV320_ModbusCmds_w0_structure
こちらのDUTではSchneiderCPUのModbus TCP Output Register0 に該当します。
TYPE DUT_ATV320_ModbusCmds_w0_structure : STRUCT PowerON :BOOL; JogFW :BOOL; JogBW :BOOL; MoveVel :BOOL; ContUpdate :BOOL; Reset :BOOL; Stop :BOOL; _b7,_b8,_b9 ,_b10,_b11,_b12 ,_b13,_b14,_b15 :BOOL; END_STRUCT END_TYPE |
uDUT_ATV320_ModbusCmds_w0
Union Data Typeを使用し変数をWORD Formatにまとめます。そうするとDUT_ATV320_ModbusCmds_w0_structureと同じMemory Offsetになります。
TYPE uDUT_ATV320_ModbusCmds_w0 : UNION _raw :WORD; data :DUT_ATV320_ModbusCmds_w0_structure; END_UNION END_TYPE |
DUT_ATV320_ModbusCmds
こちらのDUTではすべてのCommand wordを一つのDUTにもう一回まとめます。このDUTではGVLを使用します。
TYPE DUT_ATV320_ModbusCmds : STRUCT w0 :uDUT_ATV320_ModbusCmds_w0; w1 :WORD; w2_Jog_Cmd :INT; w3_MoveVel :INT; END_STRUCT END_TYPE |
Pous
先程定義したDUTをプログラムに定義します。
Mapping
DataLayer_RealtimeとUser programの変数間のMappingも忘れずに。
HMI
次はWeb Visualizatinを作成します。
Add Visualization Manager
Applicationを右クリック>Add Object>Visualization Managerします。
AddでVisualization Mangerを追加します。
Visuilation
Applicationを選択し>右クリック>Add Object>Visualizationします。
Visualizationの名前を入力し>Addします。
Visualization_MC_JOG
Schneider ATV320のJog動作の画面になります。
Visualization_MC_POWER
Schneider ATV320の電源操作の画面になります。
Visualization_MC_RESET
Schneider ATV320のリセット画面になります。
Visualization_MC_Status
Schneider ATV320の状態一覧画面になります。
Visualization_MC_STOP
Schneider ATV320の停止一覧画面になります。
Visualization_MC_VEL
Schneider ATV320の定速運転画面になります。
Visualization_System
Schneider TM221 CPU状態の表示画面になります。
Visualization
最後に、先程作成したすべての画面を1つのTab Elementsとしてまとめます。
Add WebVisu
Visualization Manager>Add Object>WebVisuでWeb表示を追加します。
WebVisu名を入力します。
Done!
WebVisuのTabから…ボタンで起動画面を設定します。
画面を選び>Okします。
Access
こちらのLinkからWeb表示画面にアクセスできます。
Result
Source Project
こちらのLinkからCtlx ProjectとSchneider ProjectをDownloadしてください。