diff --git a/dispsrv.conf b/dispsrv.conf
index ae1d954b9b5b95debb2e4698266c0514c6c3d2f8..c9aa947034641876b62491f8b2092f961da68705 100644
--- a/dispsrv.conf
+++ b/dispsrv.conf
@@ -9,6 +9,8 @@ items_file items.cfg
 # PLC - coke brain
 #coke_modbus_address 130.95.13.73
 coke_modbus_address 0.0.0.0
+# 502 is default modbus port, virtualcoke uses 1502
+coke_modbus_port 502
 
 # Zero price items, defaults to off
 test_mode no
diff --git a/src/server/handler_coke.c b/src/server/handler_coke.c
index b9a9cf3271bbbd6e0a30e8441d7eee1ef165855b..a52e373852d4c4e1df6be3664683c552f51c0cf9 100644
--- a/src/server/handler_coke.c
+++ b/src/server/handler_coke.c
@@ -49,6 +49,7 @@ tHandler	gCoke_Handler = {
 	Coke_DoDispense
 };
 const char	*gsCoke_ModbusAddress = "130.95.13.73";
+ int		giCoke_ModbusPort = 502;
 modbus_t	*gCoke_Modbus;
 time_t	gtCoke_LastDispenseTime;
 time_t	gtCoke_LastReconnectTime;
@@ -126,7 +127,7 @@ int Coke_int_ConnectToPLC(void)
 
 	if( !gCoke_Modbus )
 	{
-		gCoke_Modbus = modbus_new_tcp(gsCoke_ModbusAddress, 502);
+		gCoke_Modbus = modbus_new_tcp(gsCoke_ModbusAddress, giCoke_ModbusPort);
 		if( !gCoke_Modbus )
 		{
 			perror("coke - modbus_new_tcp");
diff --git a/src/server/main.c b/src/server/main.c
index cbebee28e92f2de0bc0a4979a60b4cef3ec61b6a..efa354e2f99ad5eff9f1748716736f85c7e2724d 100644
--- a/src/server/main.c
+++ b/src/server/main.c
@@ -31,6 +31,7 @@ extern int	gbServer_RunInBackground;
 extern int	giServer_Port;
 extern const char	*gsItemListFile;
 extern const char	*gsCoke_ModbusAddress;
+extern int	giCoke_ModbusPort;
 extern const char	*gsDoor_SerialPort;
 extern bool	gbSyslogEnabled;
 
@@ -126,13 +127,15 @@ int main(int argc, char *argv[])
 	gbServer_RunInBackground = Config_GetValue_Bool("daemonise", 0);
 	gsCokebankPath       = Config_GetValue("cokebank_database", 0);
 	gsDoor_SerialPort    = Config_GetValue("door_serial_port", 0);
-	gsCoke_ModbusAddress = Config_GetValue("coke_modbus_address", 0);
 	giServer_Port        = Config_GetValue_Int("server_port", 0);
 	gsItemListFile       = Config_GetValue("items_file", 0);
 
 	gbNoCostMode         = (Config_GetValue_Bool("test_mode", 0) == 1);
 	gbSyslogEnabled      = (Config_GetValue_Bool("disable_syslog", 0) == 0);
 
+	gsCoke_ModbusAddress = Config_GetValue("coke_modbus_address", 0);
+	giCoke_ModbusPort    = Config_GetValue_Int("coke_modbus_port", 0);
+
 	signal(SIGINT, sigint_handler);
 	signal(SIGTERM, sigint_handler);